1.编写一个名为collatz()的函数,它有一个名为number的参数,如果参数是偶数,那么collatz()就打印出number//2,如果number是奇数,collatz()就打印3*number+1
def collatz(number):
if number % 2==0:
print(number//2)
else:
print(3*number+1)
collatz(4)
2.编写一个函数cacluate, 可以接收任意多个数,返回的是一个元组.元组的第一个值为所有参数的平均值, 第二个值是大于平均值的所有数。
def cacluate(*num):
li = []
avg = sum(num)/len(num)
for i in num:
if i > avg:
li.append(i)
return int(avg),li
a = cacluate(1,2,3,4,5)
print(a)
3.编写函数, 接收一个列表(包含10个整形数)和一个整形数k, 返回一个新列表.
函数需求: 将列表下标k之前对应(不包含k)的元素逆序;
将下标k及之后的元素逆序;
def fun(list,k):
if k<0 or k>len(list):
return 'error key'
else:
return list[:k][::-1]+list[k:][::-1]
print(fun([1,2,3,4,5,6,7,8,9,10],3))
4.模拟轮盘抽奖游戏
轮盘分为三部分: 一等奖, 二等奖和三等奖;轮盘转的时候是随机的,
如果范围在[0,0.08)之间,代表一等奖,如果范围在[0.08,0.3)之间,代表2等奖,
如果范围在[0.3, 1.0)之间,代表3等奖。
import random
rewardDict = {
'一等奖': (0, 0.08),
'二等奖': (0.08, 0.3),
'三等奖': (0.3, 1)
}
def rewardFun():
"""用户得奖等级"""
# 生成一个0~1之间的随机数
num = random.random()
# 判断随机转盘转的数是几等奖
for k, v in rewardDict.items():
# 这里的v是元组
if v[0] <= num < v[1]:
return k
resultDict = {}
for i in range(1000):
# res:本次转盘的等级(一/二/三等奖)
res = rewardFun()
if res not in resultDict:
resultDict[res] = 1
else:
resultDict[res] = resultDict[res] + 1
for k, v in resultDict.items():
print(k, '---------->', v)