Python之函数(综合练习)函数的综合练习
案例1:
编写⼀个函数cacluate, 可以接收任意多个数,返回的是⼀个元组.
元组的第⼀个值为所有参数的平均值, 第⼆个值是⼤于平均值的所有数.
代码:
# 1.定义函数; *args:可变参数
def cacluate(*args):
# 2.计算平均值; args的数据类型为元组,sum求和
average = sum(args) / len(args)
# 3.将所有⼤于平均值数的值存⼊列表
list=[]
for i in args:
if i > average:
list.append(i)
# 4.将平均值和列表元素存⼊元组
tuple=(average,list)
return tuple
print(cacluate(1,1,2,3,4))
运⾏结果:
案例2:
编写⼀个函数, 接收字符串参数, 返回⼀个元组,
元组的第⼀个值为⼤写字母的个数, 第⼆个值为⼩写字母个数.
例如
输⼊:'hello WORLD'
输出:(5,5)
代码:
# 直接在函数⾥print输出,在调⽤函数时只能打印不能使⽤
# 如果想要使⽤函数⾥的变量值,此时需要在定义函数时⽤return返回函数值
def fun(c):
# 记录⼤写字母个数
upper = 0
# 记录⼩写字母个数
lower = 0
# 统计⼤⼩写字母的个数
for i in c:
if i.isupper():
upper += 1
# 注意:不能⽤else,因为字符串之间有空格
if i.islower():
lower += 1
tuple = (upper,lower)
# 函数返回值
return tuple
# 此时直接调⽤函数将不会有输出值,必须⽤print输出
print(fun(input('请输⼊字符串:')))
运⾏结果:
案例3:
编写函数, 接收⼀个列表(包含30个1~100之间的随机整形数)
和⼀个整形数k, 返回⼀个新列表.
函数需求:
- 将列表下标k之前对应(不包含k)的元素逆序;
- 将下标k及之后的元素逆序;
[1,2,3,4,5] 2  [2,1,5,4,3]
代码:对象英文
# 导⼊⽣成随机数的包
import random
# 定义空列表
list = []
# ⽣成30个随机数
for i in range(30):
num = random.randint(1,100)
# 将⽣成的随机数添加到列表中
java write方法
list.append(num)
# 打印原始列表
print(list)
# 定义函数
def fun(list,k):
# k表⽰下标
if k < 0 or k >= len(list):
print('error key')
else:
# [:k] k之前的元素  [::-1] 逆序  + 连接
多态的例子
return list[:k][::-1] + list[k:][::-1]
print(fun(list,3))
运⾏结果:
案例4:
模拟抽奖游戏
分为三部分: ⼀等奖, ⼆等奖和三等奖;
转的时候是随机的,
如果范围在[0,0.08)之间,代表⼀等奖,
如果范围在[0.08,0.3)之间,代表2等奖,
如果范围在[0.3, 1.0)之间,代表3等奖,
模拟本次活动1000⼈参加, 模拟游戏时需要准备各等级奖品的个数.代码:(⽅法1)
def rewordfun():
# 定义⽤来记录各个中奖等级⼈数的变量
onecount = 0
twocount = 0
threecont = 0
# 计算中奖等级⼈数
for i in range(1000):
# random.random():⽣成0-1的随机数
# format: 格式转换,保留两位⼩数
# print(random.random())
num = float(format(random.random(),'.2f'))
# print(num)
if  0 <= num < 0.08:
onecount += 1
elif 0.08 <= num < 0.3:
twocount += 1
else:
threecont += 1
# 返回各个中奖等级⼈数
return onecount,twocount,threecont
# 将函数返回值赋给变量
count01,count02,count03 = rewordfun()
# 定义字典
rewordDict = {'⼀等奖':count01,'⼆等奖':count02,'三等奖':count03}
# 遍历输出字典的key-value
for k,v in rewordDict.items():
print(k,'--->',v)
运⾏结果:
代码:(⽅法2)
# 定义(得奖情况)字典
rewardDict ={'⼀等奖':(0,0.08),'⼆等奖':(0.08,0.3),'三等奖':(0.3,1.0)}
# 判断⽤户是否得奖
def rewardfun():
num = random.random()
# 遍历key-value
for k,v in rewardDict.items():
if num >= v[0] and num < v[1]:
return k
# 定义空字典
resultDict = {}
# 将得奖记录添加到字典中,记录1000⼈玩游戏的得奖情况
电脑怎么开进程
for i in range(1000):
# 将函数的返回值赋给reskey
reskey = rewardfun()
print(reskey)
if reskey not in resultDict:
# 增加元素
python基础代码练习resultDict[reskey] = 1
else:
resultDict[reskey] += 1
# 遍历输出字典的 key-value值
for k,v in resultDict.items():
无限循环题材的电影print(k,'---->',v)
运⾏结果:
案例5:
题⽬需求:
对于⼀个⼗进制的正整数,定义f(n)为其各位数字的平⽅和,如:
f(13) = 1**2 + 3**2 = 10
f(207) = 2**2 + 0**2 + 7**2 = 53
下⾯给出三个正整数k,a, b,你需要计算有多少个正整数n满⾜a<=n<=b,且k*f(n)=n
输⼊:
第⼀⾏包含3个正整数k,a, b, k>=1,  a,b<=10**18, a<=b;
输出:
输出对应的答案;
范例:
输⼊: 51 5000 10000
输出: 3
代码:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。