当前位置: 首页 > news >正文

第23天python内容

Day 3:函数与参数传递核心知识(必背版)

📌 今日目标

掌握函数定义、参数类型、返回值,能做对模拟题4、8、13题


第一部分:函数定义【必考!】

1. 函数基本格式【必背】

# 格式
def 函数名(参数列表):"""函数说明文档"""函数体return 返回值# 示例1:无参数无返回值
def say_hello():print("Hello!")say_hello()  # 调用# 示例2:有参数有返回值
def add(x, y):return x + yresult = add(3, 5)
print(result)  # 8# 示例3:多个返回值(用元组)
def calc(a, b):return a+b, a-b, a*b, a/bs, d, p, q = calc(10, 2)
print(s, d, p, q)  # 12 8 20 5.0

2. 函数头格式【高频考点!】

【模拟题4对应】

# 参数顺序规则(从左到右):
# 1. 位置参数(必选参数)
# 2. 默认参数
# 3. *args(可变位置参数)
# 4. **kwargs(可变关键字参数)# ✅ 正确的函数头
def func1(a, b=2, *args, **kwargs):pass# ❌ 错误示例1:默认参数在位置参数前
def func3(b=2, a, *args, **kwargs):pass  # SyntaxError# ❌ 错误示例2:*args在**kwargs后
def func4(*args, **kwargs, b=2, a):pass  # SyntaxError# ❌ 错误示例3:位置参数在默认参数后
def func2(a, b=2, **kwargs, *args):pass  # SyntaxError# 答案:C

【记忆口诀】

位置默认可变位,最后才是可变字
位置必在默认前,星号双星分先后

【必做练习】

# 判断下列函数头是否正确# 1.
def f1(a, b, c=10):pass
# ✅ 正确# 2.
def f2(a, b=5, c):pass
# ❌ 错误:位置参数c在默认参数后# 3.
def f3(a, *args, b=10):pass
# ✅ 正确# 4.
def f4(a, **kwargs, *args):pass
# ❌ 错误:*args必须在**kwargs前# 5.
def f5(*args, **kwargs):pass
# ✅ 正确

第二部分:参数类型详解【核心!】

1. 位置参数(必选参数)

def greet(name, age):  # name和age是位置参数print(f"{name}今年{age}岁")# 调用时必须提供,且顺序对应
greet("张三", 18)     # 张三今年18岁
greet(18, "张三")     # 18今年张三岁(错误!)# 缺少参数会报错
greet("张三")         # ❌ TypeError: missing 1 required positional argument

2. 默认参数

def power(x, n=2):  # n有默认值2return x ** nprint(power(5))      # 25(n取默认值2)
print(power(5, 3))   # 125(n取指定值3)
print(power(x=5, n=4))  # 625(关键字传参)

【注意事项】

# 默认参数必须在位置参数后面
def func1(a, b=2, c):  # ❌ 错误passdef func2(a, b=2, c=3):  # ✅ 正确pass# 默认参数不要用可变对象
def bad_func(L=[]):  # ❌ 不推荐L.append(1)return Lprint(bad_func())  # [1]
print(bad_func())  # [1, 1]  奇怪!# 正确做法
def good_func(L=None):if L is None:L = []L.append(1)return L

3. 可变位置参数 *args【重要】

def my_sum(*args):  # *args接收多个位置参数,组成元组print(type(args))  # <class 'tuple'>print(args)return sum(args)print(my_sum(1, 2, 3))        # 6
print(my_sum(1, 2, 3, 4, 5))  # 15# 示例:计算平均值
def average(*nums):if len(nums) == 0:return 0return sum(nums) / len(nums)print(average(80, 90, 85))     # 85.0
print(average(70, 80, 90, 100))  # 85.0

4. 可变关键字参数 **kwargs【重要】

def student_info(**kwargs):  # **kwargs接收多个关键字参数,组成字典print(type(kwargs))  # <class 'dict'>print(kwargs)for k, v in kwargs.items():print(f"{k}: {v}")student_info(name="张三", age=18, score=95)
# {'name': '张三', 'age': 18, 'score': 95}
# name: 张三
# age: 18
# score: 95# 示例:记录学生信息
def record(**info):return infodata = record(id=1001, name="李四", gender="男")
print(data)  # {'id': 1001, 'name': '李四', 'gender': '男'}

5. 混合使用【必背】

def func(a, b=2, *args, **kwargs):print(f"a={a}")print(f"b={b}")print(f"args={args}")print(f"kwargs={kwargs}")# 调用示例1
func(1)
# a=1
# b=2
# args=()
# kwargs={}# 调用示例2
func(1, 3, 4, 5, x=10, y=20)
# a=1
# b=3
# args=(4, 5)
# kwargs={'x': 10, 'y': 20}# 调用示例3
func(10, 20, 30, 40, name="Tom", age=18)
# a=10
# b=20
# args=(30, 40)
# kwargs={'name': 'Tom', 'age': 18}

【必做练习】

# 练习1:定义一个函数,接收任意个数字,返回最大值
def my_max(*nums):if len(nums) == 0:return Nonereturn max(nums)print(my_max(1, 5, 3, 9, 2))  # 9# 练习2:定义一个函数,接收任意关键字参数,返回所有值的列表
def get_values(**kwargs):return list(kwargs.values())print(get_values(a=1, b=2, c=3))  # [1, 2, 3]# 练习3:综合练习
def test(a, b=10, *args, **kwargs):print(f"a={a}, b={b}")print(f"args={args}")print(f"kwargs={kwargs}")test(1, 2, 3, 4, x=5, y=6)
# 写出输出结果

第三部分:函数调用方式【必背】

1. 位置传参

def divide(a, b):return a / bresult = divide(10, 2)  # 按位置传递:a=10, b=2
print(result)  # 5.0result = divide(2, 10)  # 按位置传递:a=2, b=10
print(result)  # 0.2

2. 关键字传参

def divide(a, b):return a / bresult = divide(a=10, b=2)  # 关键字传参
print(result)  # 5.0result = divide(b=2, a=10)  # 顺序无关
print(result)  # 5.0

3. 混合传参

def func(a, b, c):print(a, b, c)func(1, 2, 3)           # 全部位置传参:1 2 3
func(1, b=2, c=3)       # 混合传参:1 2 3
func(c=3, a=1, b=2)     # 全部关键字传参:1 2 3# ❌ 错误示例
func(1, c=3, 2)         # SyntaxError: 位置参数不能在关键字参数后
func(a=1, 2, 3)         # SyntaxError: 位置参数不能在关键字参数后

【规则】

位置传参必须在关键字传参之前
一旦使用关键字传参,后面的参数也必须用关键字

第四部分:全局变量与局部变量【必考!】

1. 变量作用域【必背】

# 全局变量:函数外定义
x = 100def func():# 局部变量:函数内定义y = 200print(x)  # ✅ 可以读取全局变量print(y)  # ✅ 可以读取局部变量func()
print(x)  # ✅ 100
print(y)  # ❌ NameError: y是局部变量,外部不可访问

2. 局部变量与全局变量同名【重要】

# 情况1:不使用global
x = 10
def func():x = 20  # 这是局部变量x,不是全局xprint(f"函数内x={x}")func()           # 函数内x=20
print(f"函数外x={x}")  # 函数外x=10(全局x没变)# 情况2:使用global
x = 10
def func():global x  # 声明使用全局变量xx = 20    # 修改全局变量xprint(f"函数内x={x}")func()           # 函数内x=20
print(f"函数外x={x}")  # 函数外x=20(全局x被修改)

【模拟题8详解】

a = 5
b = 6
def test():global aa = 10b = 20
test()
print(a, b)# 执行过程分析:
# 1. 全局:a=5, b=6
# 2. 调用test()
#    - global a:声明使用全局a
#    - a=10:修改全局a为10
#    - b=20:创建局部变量b(不影响全局b)
# 3. 函数结束,局部b消失
# 4. print(a, b):打印全局a和全局b
# 5. 输出:10 6# 答案:A(10 6)

3. 何时需要global【必背】

# 规则1:只读取全局变量,不需要global
count = 0
def show():print(count)  # ✅ 只读取,不需要globalshow()  # 0# 规则2:要修改全局变量,必须global
count = 0
def add():global countcount += 1add()
print(count)  # 1# 规则3:不用global会报错
count = 0
def add():count += 1  # ❌ UnboundLocalErroradd()  # 报错!

【为什么会报错?】

count = 0
def add():count += 1  # 相当于 count = count + 1# Python看到 count = ...就认为count是局部变量# 但右边的count还没定义,所以报错# 正确做法1:使用global
def add():global countcount += 1# 正确做法2:不修改全局变量
def add():return count + 1count = add()

【必做练习】

# 练习1:判断输出
x = 10
def f1():x = 20print(x)
f1()
print(x)
# 输出:20  10# 练习2:判断输出
x = 10
def f2():global xx = 20print(x)
f2()
print(x)
# 输出:20  20# 练习3:判断输出
x = 10
def f3():print(x)
f3()
print(x)
# 输出:10  10# 练习4:判断是否报错
x = 10
def f4():x = x + 1  # ❌ 报错!print(x)
f4()# 练习5:统计函数调用次数
count = 0
def func():global countcount += 1print(f"函数被调用{count}次")func()  # 函数被调用1次
func()  # 函数被调用2次
func()  # 函数被调用3次

第五部分:返回值【重要】

1. 单个返回值

def square(x):return x ** 2result = square(5)
print(result)  # 25

2. 多个返回值(用元组)

def calc(a, b):return a+b, a-b, a*b, a/b# 方法1:接收元组
result = calc(10, 2)
print(result)  # (12, 8, 20, 5.0)
print(type(result))  # <class 'tuple'># 方法2:序列解包
s, d, p, q = calc(10, 2)
print(s, d, p, q)  # 12 8 20 5.0

3. 返回列表

def get_primes(n):"""返回n以内的所有素数"""primes = []for num in range(2, n+1):is_prime = Truefor i in range(2, int(num**0.5)+1):if num % i == 0:is_prime = Falsebreakif is_prime:primes.append(num)return primesresult = get_primes(20)
print(result)  # [2, 3, 5, 7, 11, 13, 17, 19]

4. 无返回值(返回None)

def say_hello():print("Hello!")# 没有return语句result = say_hello()  # Hello!
print(result)  # None# 或者显式返回None
def func():return None# 或者只写return
def func():return

第六部分:递归函数【考点!】

1. 递归基本概念【必背】

# 递归:函数调用自己
# 必须有:
# 1. 递归终止条件(基线条件)
# 2. 递归公式(向终止条件靠近)# 示例:阶乘
def factorial(n):if n == 1:  # 终止条件return 1else:return n * factorial(n-1)  # 递归调用print(factorial(5))  # 120
# 计算过程:
# factorial(5) = 5 * factorial(4)
#              = 5 * 4 * factorial(3)
#              = 5 * 4 * 3 * factorial(2)
#              = 5 * 4 * 3 * 2 * factorial(1)
#              = 5 * 4 * 3 * 2 * 1
#              = 120

2. 递归经典题目

【模拟题13对应:小球弹跳高度】

# 题目:小球从100米高度落下,每次弹起高度是前一次的2/3
# 求第10次落地弹起的高度def bounce(n):"""n: 第n次落地返回:第n次弹起的高度"""if n == 0:  # 终止条件:第0次是初始高度return 100else:  # 递归公式:h(n) = h(n-1) * 2/3return bounce(n-1) * 2/3# 主函数调用
height = bounce(10)
print(f"第10次落地弹起的高度是:{height:.2f}米")# 输出:第10次落地弹起的高度是:1.73米

【斐波那契数列】

def fib(n):"""返回斐波那契数列第n项"""if n <= 2:  # 终止条件return 1else:return fib(n-1) + fib(n-2)print(fib(7))  # 13
# f(7) = f(6) + f(5)
#      = [f(5)+f(4)] + [f(4)+f(3)]
#      = ...

【求幂】

def power(x, n):"""计算x的n次方"""if n == 0:return 1else:return x * power(x, n-1)print(power(2, 5))  # 32

【必做练习】

# 练习1:求和 1+2+3+...+n
def sum_n(n):if n == 1:return 1else:return n + sum_n(n-1)print(sum_n(100))  # 5050# 练习2:数字逆序
def reverse_num(n):"""将整数n逆序"""if n < 10:return nelse:# 获取最后一位和剩余部分last = n % 10rest = n // 10# 计算剩余部分的位数digits = len(str(rest))return last * (10 ** digits) + reverse_num(rest)print(reverse_num(12345))  # 54321# 练习3:最大公约数(辗转相除法)
def gcd(m, n):if m % n == 0:return nelse:return gcd(n, m % n)print(gcd(12, 18))  # 6

📝 Day 3 课后作业

作业1:函数定义(必做)

# 1. 定义函数判断三角形类型
def triangle_type(a, b, c):"""判断三角形类型返回:'等边'、'等腰'、'其他'或'不能构成三角形'"""# 请完成代码# 测试
print(triangle_type(3, 3, 3))  # 等边
print(triangle_type(3, 3, 4))  # 等腰
print(triangle_type(3, 4, 5))  # 其他# 2. 定义函数求列表的最大值、最小值、平均值
def list_stats(nums):"""返回(最大值, 最小值, 平均值)"""# 请完成代码# 测试
print(list_stats([1, 2, 3, 4, 5]))  # (5, 1, 3.0)# 3. 定义函数判断素数
def is_prime(n):"""判断n是否为素数"""# 请完成代码# 测试
print(is_prime(17))  # True
print(is_prime(18))  # False

作业2:参数类型(必做)

# 1. 定义函数,接收任意个数字,返回它们的乘积
def multiply(*nums):# 请完成代码passprint(multiply(2, 3, 4))  # 24# 2. 定义函数,接收学生信息(关键字参数),打印格式化信息
def student_info(**info):# 请完成代码passstudent_info(name="张三", age=18, score=95)
# 输出:
# 姓名:张三
# 年龄:18
# 成绩:95# 3. 定义函数,接收列表和操作类型(默认求和)
def calc_list(nums, operation='sum'):"""operation可以是:'sum', 'avg', 'max', 'min'"""# 请完成代码passprint(calc_list([1,2,3,4,5]))           # 15
print(calc_list([1,2,3,4,5], 'avg'))    # 3.0
print(calc_list([1,2,3,4,5], 'max'))    # 5

作业3:递归函数(必做)

# 1. 斐波那契数列第n项
def fib(n):# 请完成代码passprint(fib(10))  # 55# 2. 猴子吃桃子
# 第一天吃一半多一个,第二天吃剩下一半多一个
# 第7天只剩1个,问原来有多少个?
def peach(n):"""n是第几天"""# 请完成代码passprint(peach(1))  # 第1天的桃子数# 3. 汉诺塔问题
def hanoi(n, A, B, C):"""n: 盘子数量A, B, C: 三个柱子"""# 请完成代码passhanoi(3, 'A', 'B', 'C')

Day 4:列表与字典核心知识(必背版)

📌 今日目标

掌握列表、元组、字典操作,能做对模拟题2、5、11、12、16、17题


第一部分:列表操作【核心!】

1. 列表创建【必背】

# 方法1:直接创建
lst = [1, 2, 3, 4, 5]
lst = ['a', 'b', 'c']
lst = [1, 'hello', 3.14, True]  # 混合类型# 方法2:list()函数
lst = list(range(10))      # [0,1,2,...,9]
lst = list("hello")        # ['h','e','l','l','o']
lst = list((1, 2, 3))      # [1, 2, 3](元组转列表)# 方法3:列表推导式
lst = [x**2 for x in range(10)]  # [0,1,4,9,16,...]# 空列表
lst = []
lst = list()

2. 列表索引和切片【必背】

lst = [10, 20, 30, 40, 50]# 索引
lst[0]    # 10
lst[-1]   # 50
lst[2]    # 30# 切片
lst[1:4]   # [20, 30, 40]
lst[:3]    # [10, 20, 30]
lst[2:]    # [30, 40, 50]
lst[:]     # [10, 20, 30, 40, 50](复制)
lst[::-1]  # [50, 40, 30, 20, 10](倒序)
lst[::2]   # [10, 30, 50](步长2)

3. 列表方法【高频考点!】

lst = [1, 2, 3]# append():末尾添加一个元素
lst.append(4)
print(lst)  # [1, 2, 3, 4]# extend():末尾添加多个元素
lst.extend([5, 6])
print(lst)  # [1, 2, 3, 4, 5, 6]# insert():指定位置插入
lst.insert(0, 0)  # 在索引0处插入0
print(lst)  # [0, 1, 2, 3, 4, 5, 6]# remove():删除指定值(第一个)
lst.remove(3)
print(lst)  # [0, 1, 2, 4, 5, 6]# pop():删除指定索引(默认最后一个)
x = lst.pop()    # 删除最后一个,返回6
y = lst.pop(0)   # 删除索引0,返回0
print(lst)  # [1, 2, 4, 5]# clear():清空列表
lst.clear()
print(lst)  # []

【append vs extend vs +】

lst = [1, 2, 3]# append:添加一个元素(可以是列表)
lst.append([4, 5])
print(lst)  # [1, 2, 3, [4, 5]]lst = [1, 2, 3]
# extend:添加多个元素
lst.extend([4, 5])
print(lst)  # [1, 2, 3, 4, 5]lst = [1, 2, 3]
# +:生成新列表
new_lst = lst + [4, 5]
print(new_lst)  # [1, 2, 3, 4, 5]
print(lst)      # [1, 2, 3](原列表不变)

4. 列表排序【重要】

lst = [3, 1, 4, 1, 5, 9, 2, 6]# sort():原地排序(改变原列表)
lst.sort()
print(lst)  # [1, 1, 2, 3, 4, 5, 6, 9]# sort(reverse=True):降序
lst.sort(reverse=True)
print(lst)  # [9, 6, 5, 4, 3, 2, 1, 1]# sorted():返回新列表(不改变原列表)
lst = [3, 1, 4, 1, 5]
new_lst = sorted(lst)
print(new_lst)  # [1, 1, 3, 4, 5]
print(lst)      # [3, 1, 4, 1, 5](不变)# reverse():倒序(改变原列表)
lst = [1, 2, 3, 4, 5]
lst.reverse()
print(lst)  # [5, 4, 3, 2, 1]

5. 列表统计【必背】

lst = [1, 2, 3, 2, 4, 2, 5]# count():统计元素出现次数
print(lst.count(2))  # 3# index():返回元素第一次出现的索引
print(lst.index(2))  # 1# 如果元素不存在会报错
# print(lst.index(10))  # ValueError# 安全的查找方法
if 10 in lst:print(lst.index(10))
else:print("不存在")

【必做练习】

# 练习1:列表操作
lst = [1, 2, 3]
lst.append(4)
lst.extend([5, 6])
lst.insert(0, 0)
lst.remove(3)
x = lst.pop()
# 写出lst的最终结果# 练习2:列表去重
lst = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
# 方法1:用set
new_lst = list(set(lst))# 方法2:用循环
new_lst = []
for x in lst:if x not in new_lst:new_lst.append(x)# 练习3:找出列表中的最大值和最小值
lst = [3, 7, 2, 9, 1, 5]
max_val = max(lst)
min_val = min(lst)

第二部分:元组【必考!】

1. 元组特点【必背】

# 元组:不可变的列表
# 用()创建,元素不能修改tup = (1, 2, 3, 4, 5)
tup = 1, 2, 3  # 括号可省略# 单元素元组(必须加逗号)
tup = (1,)     # ✅ 元组
tup = (1)      # ❌ 整数1,不是元组# 空元组
tup = ()
tup = tuple()

【模拟题2对应】

# 题目:下列关于元组的说法中,正确的是A. 元组不能进行切片操作           # ❌ 错误,可以切片
B. 元组中的元素都是可修改的       # ❌ 错误,不可修改
C. 元组是无序的数据序列           # ❌ 错误,是有序的
D. 不能用sort()方法对元组进行排序  # ✅ 正确# 验证
tup = (3, 1, 4, 1, 5)# 可以切片
print(tup[1:4])  # (1, 4, 1)# 不能修改
# tup[0] = 10  # TypeError# 是有序的
print(tup[0])  # 3# 不能用sort()
# tup.sort()  # AttributeError: 'tuple' object has no attribute 'sort'# 但可以用sorted()(返回列表)
print(sorted(tup))  # [1, 1, 3, 4, 5]# 答案:D

2. 元组操作【必背】

tup = (1, 2, 3, 4, 5)# 索引
tup[0]    # 1
tup[-1]   # 5# 切片
tup[1:4]  # (2, 3, 4)
tup[:3]   # (1, 2, 3)
tup[::-1] # (5, 4, 3, 2, 1)# 不能修改
# tup[0] = 10  # TypeError# 可以拼接(生成新元组)
new_tup = tup + (6, 7)
print(new_tup)  # (1, 2, 3, 4, 5, 6, 7)# 重复
print(tup * 2)  # (1, 2, 3, 4, 5, 1, 2, 3, 4, 5)# 统计
print(tup.count(3))  # 1
print(tup.index(3))  # 2

3. 元组的应用【重要】

# 1. 多变量赋值
x, y, z = (1, 2, 3)
print(x, y, z)  # 1 2 3# 2. 变量交换
x, y = 10, 20
x, y = y, x
print(x, y)  # 20 10# 3. 函数返回多个值
def calc(a, b):return a+b, a-b, a*b, a/bresult = calc(10, 2)
print(result)  # (12, 8, 20, 5.0)s, d, p, q = calc(10, 2)
print(s, d, p, q)  # 12 8 20 5.0# 4. 格式化输出
name = "张三"
age = 18
print("%s今年%d岁" % (name, age))

第三部分:字典【高频考点!】

1. 字典创建【必背】

# 方法1:直接创建
d = {'name': 'Alice', 'age': 25, 'city': 'Beijing'}# 方法2:dict()函数
d = dict(name='Bob', age=30)  # 键必须是标识符
print(d)  # {'name': 'Bob', 'age': 30}# 方法3:从键值对列表创建
pairs = [('name', 'Charlie'), ('age', 35)]
d = dict(pairs)
print(d)  # {'name': 'Charlie', 'age': 35}# 空字典
d = {}
d = dict()

【模拟题5对应】

# 题目:以下不能正确创建一个字典A. my_dict = dict(name='Bob', age=30)
# ✅ 正确:{'name': 'Bob', 'age': 30}B. my_dict = {'name': 'Alice', 'age': 25}
# ✅ 正确C. my_dict = dict([['job', 'Engineer'], ('salary', 80000)])
# ✅ 正确:{'job': 'Engineer', 'salary': 80000}D. my_dict = {'city', 'New York', ('country', 'USA')}
# ❌ 错误:这是集合,不是字典
# 字典必须是 {key: value} 形式# 答案:D

2. 字典操作【必背】

d = {'name': 'Alice', 'age': 25, 'city': 'Beijing'}# 访问
print(d['name'])  # 'Alice'# 如果键不存在会报错
# print(d['job'])  # KeyError# 安全访问:get()
print(d.get('job'))         # None
print(d.get('job', 'None'))  # 'None'(默认值)# 添加/修改
d['job'] = 'Engineer'  # 添加
d['age'] = 26          # 修改
print(d)  # {'name': 'Alice', 'age': 26, 'city': 'Beijing', 'job': 'Engineer'}# 删除
del d['city']
print(d)  # {'name': 'Alice', 'age': 26, 'job': 'Engineer'}# pop():删除并返回值
age = d.pop('age')
print(age)  # 26
print(d)    # {'name': 'Alice', 'job': 'Engineer'}# clear():清空
d.clear()
print(d)  # {}

3. 字典遍历【必背】

d = {'name': 'Alice', 'age': 25, 'city': 'Beijing'}# 遍历键
for key in d:print(key)
# name
# age
# city# 遍历值
for value in d.values():print(value)
# Alice
# 25
# Beijing# 遍历键值对
for key, value in d.items():print(f"{key}: {value}")
# name: Alice
# age: 25
# city: Beijing

4. 字典方法【重要】

d = {'name': 'Alice', 'age': 25}# keys():所有键
print(d.keys())    # dict_keys(['name', 'age'])
print(list(d.keys()))  # ['name', 'age']# values():所有值
print(d.values())  # dict_values(['Alice', 25])
print(list(d.values()))  # ['Alice', 25]# items():所有键值对
print(d.items())   # dict_items([('name', 'Alice'), ('age', 25)])
print(list(d.items()))  # [('name', 'Alice'), ('age', 25)]# update():更新字典
d.update({'city': 'Beijing', 'age': 26})
print(d)  # {'name': 'Alice', 'age': 26, 'city': 'Beijing'}# in:判断键是否存在
print('name' in d)  # True
print('job' in d)   # False

【必做练习】

# 练习1:统计字符出现次数
s = "hello world"
d = {}
for c in s:if c in d:d[c] += 1else:d[c] = 1
print(d)# 练习2:反转字典(键值互换)
d = {'a': 1, 'b': 2, 'c': 3}
new_d = {v: k for k, v in d.items()}
print(new_d)  # {1: 'a', 2: 'b', 3: 'c'}# 练习3:合并两个字典
d1 = {'a': 1, 'b': 2}
d2 = {'c': 3, 'd': 4}
d1.update(d2)
print(d1)  # {'a': 1, 'b': 2, 'c': 3, 'd': 4}

第四部分:程序填空题【核心!】

【模拟题11详解】

# 题目:输入单词,逆序后元音字母转大写,其他转小写words = input("请输入一组单词,空格分隔:").split()
vowels = 'aeiou'  # 元音字母
result = []for word in words:word = word.lower()  # (1) 全部转小写temp = ""for ch in word:if ch in vowels:  # (2) 判断是否为元音temp += ch.upper()  # (3) 元音转大写else:temp += ch  # 其他字母保持小写reverse_word = temp[::-1]  # 逆序result.append(reverse_word)  # (4) 添加到结果列表print(" ".join(result))# 答案:
# (1) vowels 或 'aeiou'
# (2) ch.upper
# (3) ch
# (4) reverse_word

【模拟题12详解】

# 题目:体育比赛,每名选手3次机会,求平均分,输出冠军N = int(input("请输入选手的数量:"))
M = 3
champion_score = 0
champion_index = 0for i in range(N):scores = input(f"请输入第{i+1}名选手的{M}次成绩,空格分隔:")scores = scores.split()  # (1) 分割字符串# 计算平均分total = 0for score in scores:total += float(score)  # (2) 转为浮点数avg = total / M  # (3) 求平均print(f"第{i+1}名选手的成绩是:{avg:.2f}")# 更新冠军if avg > champion_score:  # (4) 比较champion_score = avgchampion_index = i + 1print(f"冠军是第{champion_index}名选手,成绩是:{champion_score:.2f}")# 答案:
# (1) scores.split() 或 scores.split(' ')
# (2) float(score) 或 float
# (3) total / M 或 avg = total / M
# (4) avg > champion_score 或 champion_score < avg

📝 Day 3-4 课后作业

作业1:列表操作(必做)

# 1. 输入一组数字,统计正数、负数、零的个数
nums = eval(input("输入一组数字:"))
# 请完成代码# 2. 列表元素位置交换
lst = [1, 2, 3, 4, 5]
# 将索引1和索引3的元素交换# 3. 找出两个列表的公共元素
lst1 = [1, 2, 3, 4, 5]
lst2 = [3, 4, 5, 6, 7]
# 结果:[3, 4, 5]

作业2:字典操作(必做)

# 1. 统计字符串中每个单词出现的次数
s = "hello world hello python world"
# 结果:{'hello': 2, 'world': 2, 'python': 1}# 2. 学生成绩管理
students = {'张三': [80, 90, 85],'李四': [75, 85, 80],'王五': [90, 95, 92]
}
# 计算每个学生的平均分
# 找出平均分最高的学生# 3. 字典排序
d = {'b': 2, 'a': 1, 'c': 3}
# 按键排序
# 按值排序

作业3:综合题(必做)

# 1. 成绩统计
scores = [85, 92, 78, 90, 88, 76, 95, 89]
# 计算:平均分、最高分、最低分、及格率# 2. 数据分类
nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 将奇数和偶数分别放入两个列表# 3. 模拟题11、12
# 完整实现两道程序填空题

Day 3-4 完成!明天继续Day 5内容!💪

http://www.dtcms.com/a/596428.html

相关文章:

  • 5.2、Python-字符串的编码和解码
  • 美容院网站源码网站流量下降的原因
  • FreeRTOS 学习:(十七)“外部中断”和“内核中断”的差异,引入 FreeRTOS 中断管理
  • CodeBuddy AI IDE :Skills 模式
  • 大模型学习计划(按周规划)
  • 绥中网站建设分类信息网网站500
  • k8s 部署MySQL 数据持久化
  • Quantinuum 发布新型量子计算机“Helios“
  • ubuntu/kali安装k8s
  • 开源 Objective-C IOS 应用开发(二)Xcode安装
  • 【论文阅读】Gradient Guidance for Diffusion Models:An Optimization Perspective
  • WebSocket调试工具(html),用于调试WebSocket链接是否畅通
  • Springboot3.X+security6.5+jdk21
  • 中文企业网站设计欣赏宁波网站建设方案联系方式
  • Vue2 入门到实战(day2):计算属性、监视属性、样式绑定与条件渲染(附代码案例)
  • C语言位运算深度应用:嵌入式硬件寄存器控制与低功耗优化实践
  • 深圳建立网站营销用动易建设网站教程
  • 京东后端架构技术,Pipline 设计 解决复杂查询逻辑
  • 《STM32 江湖 SPI 双绝:硬件外设与软件模拟的深度解析》
  • Docker学习笔记---day002
  • F280049C学习笔记之X-BAR
  • Python基础教学:Python的openpyxl和python-docx模块结合Excel和Word模板进行数据写入-由Deepseek产生
  • WebSocket原理及实现详解
  • 网站建设与管理吴振峰pptapp的制作需要多少钱
  • 优雅与极简:将你的屏幕变成复古翻页钟——Fliqlo for Mac 完全指南
  • wsl ubuntu24.04 cuda13 cudnn9 pytorch 显卡加速
  • macos安装mysql
  • 解决 iPhone 和 Mac 之间备忘录无法同步的9种方法
  • 【Ubuntu系统开机后出现:GNU GRUB ,Advanced options for Ubuntu】
  • 江西省建设监督网站电子网特色的企业网站建设