python函数测验题_python函数练习题

1.编写一个函数cacluate, 可以接收任意多个数,返回的是一个元组.

元组的第一个值为所有参数的平均值, 第二个值是大于平均值的所有数.

运行结果:

468490-a064baefabe176ae.png

image.png

1

2

3

4

5

6

7

8

9

10

11

12

13

14# 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)

468490-da2c50630459d8d6.png

image.png

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21# 直接在函数里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

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23# 导入生成随机数的包

import random

# 定义空列表

list = []

# 生成30个随机数

for i in range(30):

num = random.randint(1,100)

# 将生成的随机数添加到列表中

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

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30import random

# 定义(得奖情况)字典

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:

# 增加元素

resultDict[reskey] = 1

else:

resultDict[reskey] += 1

# 遍历输出字典的 key-value值

for k,v in resultDict.items():

print(k,'---->',v)

5.题目需求:

对于一个十进制的正整数, 定义f(n)为其各位数字的平方和,如:

f(13) = 12 + 32 = 10

f(207) = 22 + 02 + 72 = 53

下面给出三个正整数k,a, b,你需要计算有多少个正整数n满足a<=n<=b,

且kf(n)=n

输入:

第一行包含3个正整数k,a, b, k>=1, a,b<=10*18, a<=b;

输出:

输出对应的答案;

范例:

输入: 51 5000 10000

输出: 3

1

2

3

4

5

6

7k=51

a=5000

b=10000

7293 143

7854 154

7905 155

3

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24# 1.接收用户输入

k = int(input('k='))

a = int(input('a='))

b = int(input('b='))

# 2.定义函数,计算f

def fun(c):

f = 0

for i in str(c):

f += int(i)**2

return f

# fun(207)

# 定义计数器

count = 0

# 3.统计满足条件的n的个数

for n in range(a,b+1):

if k * fun(n) == n:

print(n,fun(n))

count += 1

# 打印个数

print(count)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值