实验名称:函数练习2

server/2024/10/19 6:27:56/

你是蛤蟆秧子跟着甲鱼转,装王八孙子。这是我今天听到最牛逼的一句话。

目录

一、实验目的

二、实验环境

三、实验步骤

四、实验结果

1.系统的增删改等都需要先登录后才能操作。 

编写装饰器用于登录验证,再对增删改进行装饰,测试登录验证装饰器是否生效。

2.编写函数f(n),实现输入n的值,求出1~n之和(要求使用递归方式)。

3.素数:只能被1和它本身整除。回文数:从左往右读和从右往左读,数字 相同。如121,1221

 需求:编写函数找出所有既是回文数又是素数的3位十进制数。

 4.模拟轮盘抽奖游戏: 

轮盘分为三部分: 一等奖, 二等奖和三等奖;

轮盘转的时候是随机的:

如果范围在[0,0.08)之间,代表一等奖,

如果范围在[0.08,0.3)之间,代表2等奖,

如果范围在[0, 1.0)之间,代表3等奖。

编写函数实现该轮盘抽奖功能

五、实验心得


一、实验目的

1.系统的增删改等都需要先登录后才能操作。 

编写装饰器用于登录验证,再对增删改进行装饰,测试登录验证装饰器是否生效。

2.编写函数f(n),实现输入n的值,求出1~n之和(要求使用递归方式)。

3.素数:只能被1和它本身整除。回文数:从左往右读和从右往左读,数字 相同。如121,1221

 需求:编写函数找出所有既是回文数又是素数的3位十进制数。

4.模拟轮盘抽奖游戏: 

轮盘分为三部分: 一等奖, 二等奖和三等奖;

轮盘转的时候是随机的:

如果范围在[0,0.08)之间,代表一等奖,

如果范围在[0.08,0.3)之间,代表2等奖,

如果范围在[0, 1.0)之间,代表3等奖。

编写函数实现该轮盘抽奖功能

二、实验环境

安装pycharm2023.3.4 

安装适配的jdk

三、实验步骤

1.系统的增删改等都需要先登录后才能操作。 

编写装饰器用于登录验证,再对增删改进行装饰,测试登录验证装饰器是否生效。

  • 编写装饰器用于登录验证,再对增删改进行装饰,测试登录验证装饰器是否生效。
  • 先写一个装饰器助手,内部写一个login函数用于登录验证
  • 分别写出增删改函数
  • 在增删改函数前@装饰器,表示需要使用该装饰器增加登录验证功能
  • 验证登录装饰器是否生效

 2.编写函数f(n),实现输入n的值,求出1~n之和(要求使用递归方式)。

  • 定义一个函数,将n作为参数
  • 如果是1,直接输出1
  • 如果大于1,使用递归进行叠加
  • 输出结果

3.素数:只能被1和它本身整除。回文数:从左往右读和从右往左读,数字 相同。如121,1221

 需求:编写函数找出所有既是回文数又是素数的3位十进制数。

  • 首先判断该数是否是素数,如果它可以整除(2~前一个数)就不是素数,如果不能整除,就是素数
  • 判断完是否为素数之后,判段是否为回文数,将其分别除以100取得百位上的数,除以10获得十位上的数,分别用两个变量接收,再判断是否相等,相等就是回文数
  • 最后再写一个main函数,判断是否既是素数又是回文数
  • 给定范围,输出结果

 4.模拟轮盘抽奖游戏: 

轮盘分为三部分: 一等奖, 二等奖和三等奖;

轮盘转的时候是随机的:

如果范围在[0,0.08)之间,代表一等奖,

如果范围在[0.08,0.3)之间,代表2等奖,

如果范围在[0, 1.0)之间,代表3等奖。

编写函数实现该轮盘抽奖功能

  • 导入随机函数
  • 使用randint()获取随机值
  • 根据随机值,使用if else语句判断为一等奖二等奖还是三等奖
  • 输出结果

四、实验结果

1.系统的增删改等都需要先登录后才能操作。 

编写装饰器用于登录验证,再对增删改进行装饰,测试登录验证装饰器是否生效。

python">#1.系统的增删改等都需要先登录后才能操作。
# 编写装饰器用于登录验证,再对增删改进行装饰,测试登录验证装饰器是否生效。
#用户输入用户名与密码
uname = (input("请输入您的用户名:"))
upassword = (input("请输入您的密码:"))
#定义一个装饰器
def decorator(func):# 定义内部函数logindef login(*args, **kwargs):print("登录成功")func(*args, **kwargs)print("登录失败")return login@decorator
def add(uname,upasssword):print("添加成功!")print(f"新用户:{uname},密码为:{upassword}")@decorator
def delete(uname,upassword):print(f"已删除用户名为:{uname}的用户")@decorator
def modify(uname,upassword):print(f"修改成功!")print(f"新的用户名为:{uname},新的密码为:{upassword}")add = decorator(add)
add( "admin",123456)
delete = decorator(delete)
delete( "admin",123456)

2.编写函数f(n),实现输入n的值,求出1~n之和(要求使用递归方式)。

python"># 2.编写函数f(n),实现输入n的值,求出1~n之和(要求使用递归方式)。
def func(num):if num == 1:return 1else:return num + func(num-1)
n = int(input("请输入您要计算1到几的和:"))
print(func(n))

3.素数:只能被1和它本身整除。回文数:从左往右读和从右往左读,数字 相同。如121,1221

 需求:编写函数找出所有既是回文数又是素数的3位十进制数。

python"># 3.素数:只能被1和它本身整除。
# 回文数:从左往右读和从右往左读,数字相同。如121,1221
# 需求:编写函数找出所有既是回文数又是素数的3位十进制数。
import math
def isprime(n):m = int(math.sqrt(n)+1)for i in range(2,m):if n%i==0:return Falsebreakelse:return Truedef h(n):a = n//100b = n%10if a == b:return Trueelse:return Falsedef main():print("既是素数又是回文数的3位十进制数:")for i in range (100,1000):if isprime(i) == True:if h(i) == True:print(i)main()

 4.模拟轮盘抽奖游戏: 

轮盘分为三部分: 一等奖, 二等奖和三等奖;

轮盘转的时候是随机的:

如果范围在[0,0.08)之间,代表一等奖,

如果范围在[0.08,0.3)之间,代表2等奖,

如果范围在[0, 1.0)之间,代表3等奖。

编写函数实现该轮盘抽奖功能

python"># 4.模拟轮盘抽奖游戏:
# 轮盘分为三部分: 一等奖, 二等奖和三等奖;
# 轮盘转的时候是随机的:
# 如果范围在[0, 0.08)之间, 代表一等奖,
# 如果范围在[0.08, 0.3)之间, 代表2等奖,
# 如果范围在[0, 1.0)之间, 代表3等奖。
# 编写函数实现该轮盘抽奖功能
import random
print("您好!欢迎来到转盘抽奖游戏!")
print("按下回车游戏就开始啦!")
n = float(random.randint(0,1))
if 0 <= n <= 0.08:print("恭喜你!中的是一等奖哟!")
if 0.08 <= n <= 0.3:print("恭喜你!中的是一等奖哟!")
if 0.3 <= n <= 1.0:print("恭喜你!中的是一等奖哟!")

五、实验心得

这些实验老师上课都讲过,要学会把他变成自己的东西,真正理解代码的意思

多思考,有助于形成代码思维,代码尽量简洁

去学习,多看他人的代码,打开自己的思维。

  1. 函数是代码的基本组成单位。

  2. 函数可以将一段代码封装起来,并通过调用函数名来运行它。

  3. 函数可以接收输入参数,并可以返回一个结果。

  4. 函数应该具有清晰的功能,易于理解和维护。

  5. 使用函数参数时,可以设置默认值,使得函数的调用更加灵活。

  6. 使用装饰器来增强函数的功能,而不需要修改原函数的代码。

  7. 函数式编程强调函数的 first-class 能力,可以使用高阶函数和闭包等技术。

  8. 错误处理应该通过try...except语句来进行,避免程序因为异常而崩溃。

这些知识可以帮助我们更好地理解和应用Python函数,提高代码质量和开发效率。


http://www.ppmy.cn/server/47661.html

相关文章

Vue Router源码分析

摘要&#xff1a;最近项目中遇到了点Vue Router的问题&#xff0c;发现有些只是没理清楚&#xff0c;再次复习了下Vue Router的源码&#xff0c;记录下... Vue-Router的能力十分强大&#xff0c;它支持hash、history、abstract 3种路由方式&#xff0c;提供了<router-link&g…

概率分布、回归分析、假设检验……用 DolphinDB 函数库快速实现概率统计分析

在金融和物联网等领域&#xff0c;概率统计与分析扮演着至关重要的角色。DolphinDB 作为一款强大的时序数据库&#xff0c;提供了一系列内置的概率统计与分析函数&#xff0c;能够满足用户的各种需求。 金融领域 风险管理&#xff1a;通过概率统计分析&#xff0c;金融机构可…

表 ,索引的 degree 检查, trim(degree) default INSTANCES

检查degree >1 的 select substr(owner,1,15) Owner , ltrim(degree) Degree, ltrim(instances) Instances, count(*) "Num Tables" , Parallel from dba_tables where ( trim(degree) > 1 ) and table_name not like ET$% group by owner, degree , ins…

【HDFS】处理状态为RECEIVING_BLOCK的增量块汇报

带着以下问题: RECEIVING_BLOCK状态的IBR,block的长度汇报上来有用么?BlockManager#processIncrementalBlockReport里,处理IBR,里面有一个case分支,专门处理RECEIVING_BLOCK状态的块。 case RECEIVING_BLOCK:// receving计数器++receiving++;// 第三个参数副本状态是RBWp…

指纹采集技术

目录 1.概述 1.1 捺印油墨采集 1.2 现场指纹提取 1.3 在线指纹采集 2. 指纹采集器的关键技术指标 2.1 采集面积 2.2 分辨率 2.3 图像质量 2.4 耐用性 1.概述 最早的指纹采集技术是油墨法&#xff0c;至少已经有上百年的历史。1990年代出现了活体指纹采集器&#xff0c…

laravel项目配置Facades Redis自动补全,方法查看

问题原因: 因为Laravel的Redis连接实例是通过RedisManger的工厂类创建的,返回的是一个mixin的类型,因此在IDE中不能自动补全Redis的方法,缺少这个功能,使用起来有些麻烦,尤其是Redis有数十个方法,每个方法也有不少参数。 相关部分的代码如下: /*** @mixin \Illumina…

vscode 好用的插件

转中文插件 Chinese 官网&#xff1a;Chinese (Simplified) (简体中文) Language Pack for Visual Studio Code - Visual Studio Marketplace vue文件模板快速生成 Vue VSCode Snippets 官网&#xff1a;Vue VSCode 代码段 - Visual Studio Marketplace

算法004:盛水最多的容器

这道题比较简单&#xff0c;使用双指针。 要求的是最大面积&#xff0c;对于一个水桶&#xff08;水杯来说&#xff09;&#xff0c;面积的算法是固定的&#xff0c;就是底乘以高。 在这个题中&#xff0c;我们把左边的位置设为left&#xff0c;右边的位置设为right&#xff…