python--实验8 函数(2)

news2024/9/28 17:26:20
  1. 知识点

变量的作用域
  1. 定义:解释了局部变量和全局变量的概念。
  2. 局部变量
    1. 局部变量是在函数内部定义的变量。它们只在该函数内部可见,一旦函数执行完毕,这些变量就会被销毁。
    2. 例子:在函数内部通过赋值创建的变量。
  3. 全局变量
    1. 全局变量是在任何函数外部定义的变量。它们可以在整个程序范围内访问,包括函数内部。
    2. 如果在函数内部定义了一个与全局变量同名的局部变量,那么在函数内部将只访问局部变量。
  4. 内置作用域(Built-in Scope)

    • 内置作用域包含了Python解释器内置的函数和变量,如print()len()等。这些可以在程序的任何地方访问。
  5. 非局部作用域(Nonlocal Scope)

    • 非局部作用域是Python 3中引入的一个概念,用于在嵌套的函数中声明变量,使其在封闭作用域内可见,但又不属于全局作用域。
    • 使用nonlocal关键字声明的变量,可以在嵌套函数外部的函数内部修改其值。
  6. 类作用域(Class Scope)

    • 类作用域是类内部的变量,包括类属性和方法。这些变量对于类的实例和类方法是可见的。
  7. 模块作用域(Module Scope)

    • 模块作用域是指模块内部定义的变量,这些变量在模块内部是全局的,但在模块外部则需要通过模块名来访问。
  8. global关键字:在函数内部使用global声明全局变量,允许修改全局变量。

  1. 变量作用域工具函数globals()locals()函数用于获取不同作用域内的变量字典。

  1. nonlocal关键字:Python 3.x引入,用于在嵌套函数中修改外层函数的变量。

函数嵌套定义
  • 允许在一个函数内部定义另一个函数,称为内建函数。外部包含内建函数的称为外部函数。

 

函数的返回值
  • 函数可以返回一个或多个值,如果没有return语句,默认返回None

 

函数作为对象
  1. 赋值:可以把函数赋值给变量,通过变量名调用。

  1. 作为参数:可以把函数作为参数传递给另一个函数,如map函数。

  1. 作为返回值:函数可以返回另一个函数作为结果。

闭包
  • 闭包是可以访问创建时所在作用域的函数,即使该作用域的代码已经执行完毕。就是能够读取其他函数内部变量的函数。
装饰器(Decorators)
  • 装饰器是用于增加函数或方法功能的函数,本质上是闭包。
  • 装饰器遵循开放封闭原则,可以在不修改源代码的情况下增加功能。
  • 原理:
lambda函数
  • 匿名函数,用于定义单行、简洁的函数。冒号前面是形参,冒号后面是返回值
  • 可以包含多个参数,但只能有一个表达式。
  • 可以作为函数的返回值或序列、字典的元素。

实验  函数(2)

一、实验目的

  1. 掌握函数嵌套定义的用法
  2. 掌握特殊函数的定义和调用
  3. 掌握变量作用域

二、实验环境

本次实验需使用实验室提供的Windows主机环境+pycharm

实验内容

说明:基础题为必做题,提高题为选做题

1.(基础题)编写函数, 接收一个列表(包含10个整形数)和一个整形数k, 返回一个新列表.

   函数需求:

        - 将列表下标k之前对应(不包含k)的元素逆序;

        - 将下标k及之后的元素逆序;

代码:

def reverse_sublists(lst, k):
    return lst[:k][::-1] + lst[k:][::-1]

# 测试代码
original_list = [i for i in range(1, 11)]  # 创建一个包含10个整数的列表
k = 3
new_list = reverse_sublists(original_list, k)
print(new_list)

2.(基础题)定义一个fn(n)函数,该函数可接收一个list作为参数,用于去除list中重复的元素。

程序代码:

def remove_duplicates(lst):
    return list(set(lst))

# 测试代码
original_list = [1, 2, 2, 3, 4, 4, 5, 6, 6, 7]
new_list = remove_duplicates(original_list)
print(new_list)

3.(基础题)定义一个fn(n)函数,该函数返回一个包含n个不重复的0-100之间的整数的元组。

程序代码:

def unique_integers(n):
    return tuple(range(n))

# 测试代码
n = 100
result = unique_integers(n)
print(result)

4.(基础题)编程实现1~5各数的平方。用lambda函数实现

提示:python 内置函数map

代码:

squares = list(map(lambda x: x**2, range(1, 6)))

print(squares)

5.(基础题)定义一个函数fib(n),用递归的方式实现斐波那契数列第n项求解,并输出斐波那契数列前20项的内容。

程序运行效果如下图所示:

代码:

def fib(n):
    if n <= 1:
        return n
    else:
        return fib(n-1) + fib(n-2)

# 输出斐波那契数列前20项
fibonacci_sequence = [fib(i) for i in range(1, 21)]
print(fibonacci_sequence)

6.(提高题) 输入日期,判断星座,并输出对应的星座标志。— 函数参数的传递

程序代码:

def zodiac_sign(day, month):
    sdate = [20, 19, 21, 20, 21, 22, 23, 23, 23, 24, 23, 22]  # 星座判断列表
    conts = ['摩羯座', '水瓶座', '双鱼座', '白羊座', '金牛座', '双子座', '巨蟹座', '狮子座', '处女座', '天秤座', '天蝎座', '射手座', '摩羯座']
    signs = ['♑', '♒', '♓', '♈', '♉', '♊', '♋', '♌', '♍', '♎', '♏', '♐', '♑']

    index = (month, day)  # 将月份和日期组合成一个元组
    zodiac_index = sdate.index(index[0]) if index[1] <= sdate[0] else sdate.index(index[0]) - 1
    return conts[zodiac_index], signs[zodiac_index]

# 测试代码
date_input = (24, 12)  # 假设输入日期为12月24日
zodiac, zodiac_symbol = zodiac_sign(date_input[1], date_input[0])
print(f"星座: {zodiac}, 星座标志: {zodiac_symbol}")

sdate=[20,19,21,20,21,22,23,23,23,24,23,22]     # 星座判断列表

conts =['摩羯座','水瓶座','双鱼座','白羊座','金牛座','双子座','巨蟹座','狮子座','处女座','天秤座','天蝎座','射手座','摩羯座']

signs=['','','','','','','','','','','','','']

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1914049.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【卡尔曼滤波】高斯白噪声

生成高斯白噪声并将其应用于信号处理 生成高斯白噪声并将其应用于信号处理 #以下是一个生成高斯白噪声并将其应用于信号处理的示例代码:import numpy as np import matplotlib.pyplot as plt import matplotlib.font_manager ## not work#notice matplotlibrc is a file, not…

hf-mirror (huggingface 的国内镜像)

官网&#xff1a; https://hf-mirror.com/ 网站域名 hf-mirror.com&#xff0c;用于镜像 huggingface.co 域名。作为一个公益项目&#xff0c;致力于帮助国内AI开发者快速、稳定的下载模型、数据集。 如何使用HF-Mirror 方法一&#xff1a;网页下载 在https://hf-mirror.com/…

ubuntu笔记本X86安装nomachine客户端

资源下载: 链接: link 一、首先下载文件 nomachine_8.2.3_4_x86_64.tar.gz到桌面。 二、打开终端,依次输入 进入root模式,需要输入密码,密码不可见。 sudu su复制nomachine_8.2.3_4_x86_64.tar.gz粘贴到/usr目录: cp -r nomachine_8.2.3_4_x86_64.tar.gz /usr进入

使用Godot4组件制作竖版太空射击游戏_2D卷轴飞机射击-敌机配置(五)

文章目录 开发思路敌人节点场景绿色敌人制作 使用Godot4组件制作竖版太空射击游戏_2D卷轴飞机射击&#xff08;一&#xff09; 使用Godot4组件制作竖版太空射击游戏_2D卷轴飞机射击-激光组件&#xff08;二&#xff09; 使用Godot4组件制作竖版太空射击游戏_2D卷轴飞机射击-飞船…

强化学习总结(有具体代码实现)

文章目录 第一部分 强化学习基础第1章 强化学习概述1.1 强化学习概念1.2 强化学习的环境1.3 强化学习的目标1.4 强化学习的数据 第2章 多臂老虎机问题&#xff08;MAB问题&#xff09;2.1 问题描述2.1.1 问题定义2.1.2 形式化描述2.1.3 累积懊悔2.1.4 估计期望奖励 2.2 解决方法…

(自用)gtest单元测试

gtest是Google的一套用于编写C测试的框架&#xff0c;可以运行在很多平台上&#xff08;包括Linux、Mac OS X、Windows、Cygwin等等&#xff09;。基于xUnit架构。支持很多好用的特性&#xff0c;包括自动识别测试、丰富的断言、断言自定义、死亡测试、非终止的失败、生成XML报…

跑GCN收敛实验时遇到的Python环境问题

错误1&#xff1a; 报错提示&#xff1a;No module named sklearn.utils.linear_assignment_ 原因&#xff1a;linear_assignment 函数从0.21开始被弃用了&#xff0c;并且将在0.23版本中移除。 解决方法&#xff1a;降低scikit-learn版本&#xff08;本人通过该方法解决&#…

从零开始开发视频美颜SDK:实现直播美颜效果

因此&#xff0c;开发一款从零开始的视频美颜SDK&#xff0c;不仅可以节省成本&#xff0c;还能根据具体需求进行个性化调整。本文将介绍从零开始开发视频美颜SDK的关键步骤和实现思路。 一、需求分析与技术选型 在开发一款视频美颜SDK之前&#xff0c;首先需要进行详细的需求…

自定义指令实现Element Plus分页组件内容样式修改

改之前是这样的 改之后是这样的 因为之前我也有写过文章讲解Vue2-ElementUI分页组件的样式修改。 ElementUI 分页组件内容样式修改https://blog.csdn.net/qq_54548545/article/details/139728064且通常情况下&#xff0c;一个项目若是大量使用到分页组件&#xff0c;咱们也不可…

MySQL语法笔记(补充版)

补充上一篇博客没涉及到的实用语法 MySQL语法笔记&#xff08;温习版&#xff09; 查看正在使用的数据库 SELECT DATABASE()查看时区 show VARIABLES like time_zone修改时区 timestamp类型存储的时间与MySQL数据库系统安装时所选的时区有关&#xff0c;在不同时区下查看的同…

【SVN的使用- SVN的基本命令-SVN命令简写-注意事项-解决冲突 Objective-C语言】

一、SVN的更新命令:update 1.服务器如果新建了一个文件夹,yuanxing,版本变成6了, 我现在本地还只有三个文件夹,版本5, 终端里边,我们敲一个svn update, 我这儿就多了一个yuanxing文件夹, 这个就是更新,就是把服务器最新的代码下载下来, 假设服务器上大家提交了这…

[CTF]-PWN:House of Cat堆题型综合解析

原理&#xff1a; 调用顺序&#xff1a; exit->_IO_wfile_jumps->_IO_wfile_seekoff->_IO_switch_to_wget_mode _IO_wfile_seekoff源码&#xff1a; off64_t _IO_wfile_seekoff (FILE *fp, off64_t offset, int dir, int mode) {off64_t result;off64_t delta, new…

基于ARM Cortex-M3单片机研发的国产指纹芯片 - P1032BF1

智能指纹锁的核心部件&#xff1a;主板、离合器、指纹采集器、密码技术、微处理器&#xff08;CPU&#xff09;、智能应急钥匙。作为指纹锁来说&#xff0c;重要的应该是指纹芯片。指纹锁是通过电子部件及机械部件的精密组合而生产出的安全产品。指纹锁的本质无非是安全、便捷、…

man手册的安装和使用

man手册 - HQ 文章目录 man手册 - HQ[toc]man手册的使用Linux man中文手册安装man中文手册通过安装包安装通过apt安装 配置man中文手册README使用说明配置步骤 man手册的使用 首先man分为八个目录&#xff0c;每个目录用一个数字表示 1.可执行程序2.系统调用3.库函数4.特殊文…

7.深度学习概述

深度学习概述 1. 线性回归1.1 线性回归一般表达式1.2 线性回归内积表达方式&#xff1a;1.3 多个样本时&#xff0c;线性回归的进一步表达&#xff1a;1.4 线性回归方程的解析1.5 线性回归就是求loss函数的最小值 2. 如何求函数最小值2.1 一个例子2.2 求导法——求最小值2.3 求…

CVE-2024-34351 漏洞复现

CVE-2024-34351&#xff0c;由Next.js异步函数createRedirectRenderResult导致的SSRF。 影响版本&#xff1a;13.4.0< Next.js < 14.1.1 参考文章&#xff1a; Next.js Server-Side Request Forgery in Server Actions CVE-2024-34351 GitHub Advisory Database Gi…

Ubuntu22.04.4 LTS系统/安装Anaconda【GPU版】

安装过程 1.wget命令行下载 下载Anaconda并保存文件至本地指定目录 wget -c https://repo.anaconda.com/archive/Anaconda3-2023.09-0-Linux-x86_64.sh -P ~/Downloads/anaconda3 查看是否下载好了 2.安装Anaconda 2.1 bash命令安装 bash后面是anaconda3下载好的路径 bash …

节点的真相:纠正大众对区块链安全概念的误解

​​发表时间&#xff1a;2024年4月25日 长期以来&#xff0c;人们都在对区块链及其基本原则进行讨论&#xff0c;但是只有“节点”这个概念被精准地定义&#xff0c;才能让我们穿越“去中心化”这个复杂概念的迷雾。在网络学的理论中&#xff0c;节点代表网络或图形中的一个实…

防火墙实验配置

实验要求 1&#xff0c;DMZ区内的服务器&#xff0c;办公区仅能在办公时间内&#xff08;9&#xff1a;00-18&#xff1a;00&#xff09;可以访问&#xff0c;生产区全天都能访问 2&#xff0c;生产区不允许访问互联网&#xff0c;办公区和游客区允许访问互联网 3&#xff0c;…

基于JavaSpringBoot+Vue+uniapp微信小程序校园宿舍管理系统设计与实现(论文7000字参考+源码+LW+部署讲解)

博主介绍&#xff1a;硕士研究生&#xff0c;专注于信息化技术领域开发与管理&#xff0c;会使用java、标准c/c等开发语言&#xff0c;以及毕业项目实战✌ 从事基于java BS架构、CS架构、c/c 编程工作近16年&#xff0c;拥有近12年的管理工作经验&#xff0c;拥有较丰富的技术架…