1 例6-5

1.1 分析1

sepend可以控制输出格式:

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官方文档》,可以了解到相关解释:
join
在这里插入图片描述

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)函数的返回结果,
又得知学生成绩由字典存储,因此求平均成绩则需要获得字典中的,然后套用上式即可,于是产生了以下两种思路

  1. 我们可以新建一个字典new_dict,之后遍历这个字典的键值对
    利用字典名[键] = 值的方式来更新这个新字典,即new_dict[key] = s[avg(value[0], value[1]), value[2]]
    这样新字典的键必定为原有字典的键学生名,同时它的值必定是平均成绩,最后输出这个新建的字典即可。
  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}