python函数作业1
1 例6-5
1.1 分析1
sep
和end
可以控制输出格式:
print(…, sep = '-')
print(…, end = '')
当我们想让输出格式分别用‘-’或‘/’多项输出以及输出之后不换行,方式如下:
1.2 代码实现1
print(1, 2, 3, sep = '-')
1-2-3
print(23, 5, 34, sep = '/')
for i in range(1,4):
print(i, end = '')
123
1.3 分析2
书上这一部分程序使用了Python的语法糖列表生成式
,当i为不3的倍数时输出以逗号结尾,否则换行:
1.4 代码实现2
for i in range(1, 10):
print(i, end = "," if i % 3 != 0 else "\n")
1,2,3
4,5,6
7,8,9
2 例6-6
2.1 分析
函数定义时,*c表示表示可接受任意个(包含0个)位置参数,当函数调用时,所有未使用(未匹配)的位置参数会在函数内自动组装进一个元组对象中,
此元组对象会赋值给局部变量c
函数调用时,*c表示解包元组对象中的每个元素作为位置参数传入到被调用函数中
2.2 代码实现
def commonMultiple(*c): # 暂时还没理解题目要求“自己定义可变参数”是做什么,之后会修改的
for i in c:
print("{:^4}".format(i), end = '')
return len(c)
count = commonMultiple("李白", "杜甫")
print("共{}人".format(count))
count = commonMultiple("李白", "杜甫", "王维", "袁枚")
print("共{}人".format(count))
3 例6-16
3.1 代码实现
def fun(*para): # 形参不确定, 用可变的位置参数
avg = sum(para)/len(para)
g = [i for i in para if i > avg] # 列表生成式
return (avg, g)
m, l = fun(6.7, 2.4, -0.1, 2.15, -5.8)
print("平均值:", m)
print("大于均值的数:", l)
平均值: 1.07
大于均值的数: [6.7, 2.4, 2.15]
4 例6-17
4.1 分析
该程序使用了join()以及upper()方法,查阅《Python官方文档》
,可以了解到相关解释:
4.2 代码实现
def fun(s):
lst = s.split()
return [x[0].upper() for x in lst]
s = input("输入短语:")
print("". join(fun(s)))
输入短语:very important person
VIP
5 p140 习题3
5.1 分析
题意要求计算平均成绩,并给出return int((a + b +c)) / 3
作为avg(a, b, c)函数
的返回结果,
又得知学生成绩由字典存储,因此求平均成绩则需要获得字典中的值
,然后套用上式即可,于是产生了以下两种思路:
- 我们可以新建一个字典
new_dict
,之后遍历这个字典的键值对
。
利用字典名[键] = 值
的方式来更新这个新字典,即new_dict[key] = s[avg(value[0], value[1]), value[2]]
,
这样新字典的键必定为原有字典的键学生名
,同时它的值必定是平均成绩
,最后输出这个新建的字典即可。- 结合上述,我们不妨在遍历原有字典时,将
值
取出来时用列表的函数sum()
与len()
求出平均成绩。
这个时候,我们是将列表list
作为函数的参数,创建的是一个avg(list)
函数
5.2 代码实现
5.2.1 思路1
def avg(a, b, c):
return int((a + b + c) / 3)
s = {'小李' : [77, 54, 57], '小张' : [89, 66, 78], '小陈' : [90, 93, 80], '小杨' : [69, 58, 93]}
new_dict = {}
for k, v in s.items():
new_dict[k] = avg(v[0], v[1], v[2])
print(new_dict)
{'小李': 62, '小张': 77, '小陈': 87, '小杨': 73}
5.2.2 思路2
def avg(list):
return int(sum(list) / len(list))
s = {'小李' : [77, 54, 57], '小张' : [89, 66, 78], '小陈' : [90, 93, 80], '小杨' : [69, 58, 93]}
new_dict = {}
for k, v in s.items():
new_dict[k] = avg(v)
print(new_dict)
{'小李': 62, '小张': 77, '小陈': 87, '小杨': 73}
6 p140 习题4
6.1 思路分析
思路同上述5.2.2
6.2 代码实现
def avg(lst):
return int(sum(lst) / len(lst))
s = {'小李' : [77, 54], '小张' : [89, 66, 78, 99], '小陈' : [90], '小杨' : [69, 58, 93]}
new_dict = {}
for k, v in s.items():
new_dict[k] = avg(v)
print(new_dict)
{'小李': 65, '小张': 83, '小陈': 90, '小杨': 73}
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 刘宇的个人网站!
评论
ValineDisqus