🚀 实战演练
专项训练 · 共 30 题 · 本页第 21–30 题(第 3 / 3 页)
21
函数 + 循环(阶乘计算):定义函数factorial(n),计算 n 的阶乘(n! = 1×2×3×...×n),调用该函数计算 5 的阶乘并输出。
▶ 运行结果:
5的阶乘 = 120
▼
参考答案
python
def factorial_recursive(n):
"""递归计算n的阶乘"""
if n < 0:
return "阶乘仅支持非负整数"
if n <= 1:
return 1
return n * factorial_recursive(n - 1)
fact_5_rec = factorial_recursive(5)
print(f"5的阶乘 = {fact_5_rec}")
22
字符串处理(统计字符类型)
接收用户输入的字符串,统计其中:
大写字母数量
小写字母数量
数字数量
其他字符数量并输出统计结果。
接收用户输入的字符串,统计其中:
大写字母数量
小写字母数量
数字数量
其他字符数量并输出统计结果。
📝 样例输入: Hello World 123!
▶ 运行结果:
请输入任意字符串:Hello World 123!
大写字母数量:2
小写字母数量:8
数字数量:3
其他字符数量:3
▼
参考答案
python
# 接收用户输入的字符串
user_str = input("请输入任意字符串:")
# 初始化4个统计变量
upper_count = 0 # 大写字母数量
lower_count = 0 # 小写字母数量
digit_count = 0 # 数字数量
other_count = 0 # 其他字符数量
# 遍历字符串中的每个字符
for char in user_str:
if char.isupper():
upper_count += 1
elif char.islower():
lower_count += 1
elif char.isdigit():
digit_count += 1
else:
other_count += 1
# 输出统计结果
print(f"大写字母数量:{upper_count}")
print(f"小写字母数量:{lower_count}")
print(f"数字数量:{digit_count}")
print(f"其他字符数量:{other_count}")
23
列表 + 字典(学生成绩统计):定义列表scores = [ {"name": "赵六", "语文": 88, "数学": 95, "英语": 90}, {"name": "钱七", "语文": 78, "数学": 82, "英语": 85}, {"name": "孙八", "语文": 92, "数学": 79, "英语": 94} ]编写程序计算每个学生的总分,并输出每个学生的姓名和总分。
▶ 运行结果:
姓名:赵六,总分:273
姓名:钱七,总分:245
姓名:孙八,总分:265
▼
参考答案
python
# 定义学生成绩列表
scores = [
{"name": "赵六", "语文": 88, "数学": 95, "英语": 90},
{"name": "钱七", "语文": 78, "数学": 82, "英语": 85},
{"name": "孙八", "语文": 92, "数学": 79, "英语": 94}
]
# 遍历每个学生的字典,计算并输出总分
for student in scores:
# 提取姓名和各科成绩
name = student["name"]
chinese = student["语文"]
math = student["数学"]
english = student["英语"]
# 计算总分
total = chinese + math + english
# 格式化输出
print(f"姓名:{name},总分:{total}")
24
循环 + 选择(猜数字游戏)
编写简单猜数字游戏:
系统随机生成 1-100 之间的整数
用户输入数字,提示 “猜大了”“猜小了”“猜对了”
最多允许猜 5 次,5 次猜错则提示 “游戏结束,正确数字是 XX”
编写简单猜数字游戏:
系统随机生成 1-100 之间的整数
用户输入数字,提示 “猜大了”“猜小了”“猜对了”
最多允许猜 5 次,5 次猜错则提示 “游戏结束,正确数字是 XX”
📝 样例输入:
10
20
82
▶ 运行结果:
===== 猜数字游戏 =====
规则:猜1-100之间的整数,最多猜5次!
第1次猜测,请输入数字:10
猜小了!
第2次猜测,请输入数字:20
猜小了!
第3次猜测,请输入数字:82
恭喜你!第3次就猜对了,正确数字是82!
▼
参考答案
python
import random
# 系统生成1-100的随机整数
target_num = random.randint(1, 100)
# 最多允许猜5次
max_guesses = 5
print("===== 猜数字游戏 =====")
print(f"规则:猜1-100之间的整数,最多猜{max_guesses}次!")
# 循环接收用户猜测(1-5次)
for guess_times in range(1, max_guesses + 1):
# 直接接收用户输入并转为整数(需确保输入是数字)
user_guess = int(input(f"\n第{guess_times}次猜测,请输入数字:"))
# 对比猜测值和目标值
if user_guess > target_num:
print("猜大了!")
elif user_guess < target_num:
print("猜小了!")
else:
# 猜对了,直接结束游戏
print(f"\n恭喜你!第{guess_times}次就猜对了,正确数字是{target_num}!")
break
# 5次都猜错的情况
else:
print(f"\n游戏结束!你已经猜了{max_guesses}次,正确数字是{target_num}。")
25
函数(列表最大值和最小值):定义函数get_max_min(lst),接收一个数字列表,返回列表中的最大值和最小值(以元组形式)。调用该函数处理列表[23, 56, 8, 77, 9, 45],并输出结果。
▶ 运行结果:
最大值和最小值:(77, 8)
▼
参考答案
python
def get_max_min(lst):
# 计算最大值和最小值
max_num = max(lst)
min_num = min(lst)
# 以元组形式返回
return (max_num, min_num)
# 定义待处理的列表
num_list = [23, 56, 8, 77, 9, 45]
# 调用函数,接收返回的元组
result = get_max_min(num_list)
# 输出结果
print(f"最大值和最小值:{result}")
26
字符串 + 循环(单词计数):接收用户输入的一句话(以空格分隔单词),统计其中单词的数量(如输入 “Hello Python world”,输出 3)。
📝 样例输入: Hello Python world
▶ 运行结果:
请输入一句话(单词以空格分隔):Hello Python world
你输入的内容:Hello Python world
单词数量:3
▼
参考答案
python
# 接收用户输入的一句话
user_input = input("请输入一句话(单词以空格分隔):")
# 按空格分割成单词列表(自动忽略多个连续空格、首尾空格)
word_list = user_input.split()
# 统计单词数量(列表长度即为单词数)
word_count = len(word_list)
# 输出结果
print(f"你输入的内容:{user_input}")
print(f"单词数量:{word_count}")
27
列表推导式
使用列表推导式完成:
生成 1-20 之间所有奇数的列表
生成 1-100 之间所有能被 7 整除的数的列表输出两个列表。
使用列表推导式完成:
生成 1-20 之间所有奇数的列表
生成 1-100 之间所有能被 7 整除的数的列表输出两个列表。
▶ 运行结果:
1-20之间的所有奇数: [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
1-100之间能被7整除的数: [7, 14, 21, 28, 35, 42, 49, 56, 63, 70, 77, 84, 91, 98]
▼
参考答案
python
# 1. 生成1-20之间所有奇数的列表(列表推导式)
odd_list = [i for i in range(1, 21) if i % 2 != 0]
# 2. 生成1-100之间所有能被7整除的数的列表(列表推导式)
div7_list = [i for i in range(1, 101) if i % 7 == 0]
# 输出两个列表
print("1-20之间的所有奇数:", odd_list)
print("1-100之间能被7整除的数:", div7_list)
28
函数 + 字典(成绩查询系统)
定义函数search_score(student_dict, name),接收学生成绩字典(键为姓名,值为分数)和要查询的姓名:
如果姓名存在,输出 “XX 的成绩是 XX”
如果不存在,输出 “未找到该学生”测试字典:scores_dict = {"张三": 90, "李四": 85, "王五": 92}
定义函数search_score(student_dict, name),接收学生成绩字典(键为姓名,值为分数)和要查询的姓名:
如果姓名存在,输出 “XX 的成绩是 XX”
如果不存在,输出 “未找到该学生”测试字典:scores_dict = {"张三": 90, "李四": 85, "王五": 92}
▶ 运行结果:
李四 的成绩是 85
未找到该学生
▼
参考答案
python
def search_score(student_dict, name):
# 判断姓名是否在字典中
if name in student_dict:
# 存在则获取分数并输出
score = student_dict[name]
print(f"{name} 的成绩是 {score}")
else:
# 不存在则提示未找到
print("未找到该学生")
# 测试字典
scores_dict = {"张三": 90, "李四": 85, "王五": 92}
# 调用函数测试
search_score(scores_dict, "李四")
search_score(scores_dict, "赵六")
29
循环 + 字符串(回文判断):编写程序,接收用户输入的字符串,判断是否为回文字符串(正读和反读一样,如 “abba”“上海自来水来自海上”),输出判断结果。
📝 样例输入: 上海自来水来自海上
▶ 运行结果:
请输入要判断的字符串:上海自来水来自海上
「上海自来水来自海上」是回文字符串
▼
参考答案
python
# 接收用户输入的字符串
user_str = input("请输入要判断的字符串:")
# 预处理:转小写 + 去除所有空格(避免大小写/空格干扰判断)
processed_str = user_str.lower().replace(" ", "")
# 判断是否为回文:反转字符串后与预处理后的字符串对比
if processed_str == processed_str[::-1]:
print(f"「{user_str}」是回文字符串")
else:
print(f"「{user_str}」不是回文字符串")
30
综合函数(购物车结算)
定义函数shopping_cart(cart),接收购物车字典(键为商品名称,值为 (单价,数量)):
计算购物车中所有商品的总价
输出每个商品的名称、单价、数量、小计
返回总价测试购物车:cart = {"苹果": (5.9, 2), "香蕉": (3.5, 3), "橙子": (4.2, 1)}
定义函数shopping_cart(cart),接收购物车字典(键为商品名称,值为 (单价,数量)):
计算购物车中所有商品的总价
输出每个商品的名称、单价、数量、小计
返回总价测试购物车:cart = {"苹果": (5.9, 2), "香蕉": (3.5, 3), "橙子": (4.2, 1)}
▶ 运行结果:
===== 购物车明细 =====
商品:苹果,单价:5.9元,数量:2,小计:11.8元
商品:香蕉,单价:3.5元,数量:3,小计:10.5元
商品:橙子,单价:4.2元,数量:1,小计:4.2元
购物车总价:26.5元
▼
参考答案
python
def shopping_cart(cart):
# 初始化总价
total_price = 0.0
print("===== 购物车明细 =====")
# 遍历购物车中的每个商品
for goods_name, (price, count) in cart.items():
# 计算单个商品小计
subtotal = price * count
# 累加至总价
total_price += subtotal
# 输出商品明细(保留1位小数,更符合金额展示习惯)
print(f"商品:{goods_name},单价:{price}元,数量:{count},小计:{subtotal}元")
# 返回总价
return total_price
# 测试购物车
cart = {"苹果": (5.9, 2), "香蕉": (3.5, 3), "橙子": (4.2, 1)}
# 调用函数并接收总价
total = shopping_cart(cart)
# 输出最终总价
print(f"\n购物车总价:{total}元")