🚀 实战演练
专项训练 · 共 30 题 · 本页第 11–20 题(第 2 / 3 页)
11
递归:接收用户输入的字符串,输出该字符串的反转结果(如输入 “abcd”,输出 “dcba”)。
📝 样例输入: abcd
▶ 运行结果:
请输入一个字符串:abcd
递归反转结果:dcba
▼
参考答案
python
# 定义递归函数实现字符串反转
def reverse_string_recursive(s):
# 递归终止条件:空字符串或单字符字符串,直接返回自身
if len(s) <= 1:
return s
# 递归递推:反转剩余子串 + 拼接第一个字符
# s[1:] 是除第一个字符外的剩余子串,s[0] 是第一个字符
return reverse_string_recursive(s[1:]) + s[0]
# 接收用户输入
user_str = input("请输入一个字符串:")
# 调用递归函数并输出结果
reversed_str = reverse_string_recursive(user_str)
print(f"递归反转结果:{reversed_str}")
12
列表去重:创建包含重复元素的列表lst = [1,2,2,3,3,3,4,5,5],编写程序去除列表中的重复元素,输出去重后的列表。
▶ 运行结果:
原始列表: [1, 2, 2, 3, 3, 3, 4, 5, 5]
去重后: [1, 2, 3, 4, 5]
▼
参考答案
python
# 定义初始列表
lst = [1,2,2,3,3,3,4,5,5]
print("原始列表:", lst)
# 利用集合去重(简洁,但会打乱原列表顺序)
lst_set = list(set(lst))
print("\n去重后:", lst_set)
13
选择结构(成绩等级)
接收用户输入的 0-100 的成绩,判断等级:
90-100:优秀
80-89:良好
70-79:中等
60-69:及格
0-59:不及格输出对应的等级。
若数字超出 0-100 范围,提示 “成绩必须在 0-100 之间”。
接收用户输入的 0-100 的成绩,判断等级:
90-100:优秀
80-89:良好
70-79:中等
60-69:及格
0-59:不及格输出对应的等级。
若数字超出 0-100 范围,提示 “成绩必须在 0-100 之间”。
📝 样例输入: 85
▶ 运行结果:
请输入0-100之间的成绩:85
良好
▼
参考答案
python
# 转换为浮点数,兼容整数/小数成绩(如85.5分)
score = float(input("请输入0-100之间的成绩:"))
# 第一步:校验成绩范围
if score < 0 or score > 100:
print("成绩必须在 0-100 之间")
else:
# 第二步:判断成绩等级
if score >= 90:
print("优秀")
elif score >= 80:
print("良好")
elif score >= 70:
print("中等")
elif score >= 60:
print("及格")
else:
print("不及格")
14
字典嵌套
定义嵌套字典:
输出该班级的名称,以及所有学生的姓名和年龄。
定义嵌套字典:
输出该班级的名称,以及所有学生的姓名和年龄。
🎯 数据结构:
class_info = {
"班级": "Python基础班",
"学生": [
{"name": "李四", "age": 19},
{"name": "王五", "age": 20}
]}
▶ 运行结果:
班级名称:Python基础班
班级学生信息:
姓名:李四,年龄:19岁
姓名:王五,年龄:20岁
▼
参考答案
python
# 定义嵌套字典
class_info = {
"班级": "Python基础班",
"学生": [
{"name": "李四", "age": 19},
{"name": "王五", "age": 20}
]
}
# 1. 输出班级名称
class_name = class_info["班级"]
print(f"班级名称:{class_name}")
# 2. 输出所有学生的姓名和年龄
print("\n班级学生信息:")
# 遍历学生列表(class_info["学生"] 是列表,每个元素是学生字典)
for student in class_info["学生"]:
# 从学生字典中提取姓名和年龄
stu_name = student["name"]
stu_age = student["age"]
print(f"姓名:{stu_name},年龄:{stu_age}岁")
15
循环 + 选择
使用 for 循环计算 1 到 100 之间:
所有奇数的和
排除其中是 7 的倍数的数,输出最终的求和结果。
使用 for 循环计算 1 到 100 之间:
所有奇数的和
排除其中是 7 的倍数的数,输出最终的求和结果。
▶ 运行结果:
1到100之间,所有奇数且非7的倍数的数的和:2157
▼
参考答案
python
# 初始化累加变量,存储符合条件的奇数和
sum_odd = 0
# for循环遍历1到100(包含100)
for i in range(1, 101):
# 条件1:是奇数(不能被2整除);条件2:不是7的倍数(不能被7整除)
if i % 2 != 0 and i % 7 != 0:
sum_odd += i # 等价于 sum_odd = sum_odd + i
# 输出最终结果
print(f"1到100之间,所有奇数且非7的倍数的数的和:{sum_odd}")
16
函数(判断素数):定义函数is_prime(n),判断一个数是否为素数(质数),返回 True/False。调用该函数判断 17 和 20 是否为素数,并输出结果。
▶ 运行结果:
True
False
▼
参考答案
python
def is_prime(n):
# 小于2的数不是素数
if n < 2:
return False
# 检查从2到sqrt(n)是否有任何数可以整除n
for i in range(2, int(n ** 0.5) + 1):
if n % i == 0:
return False
return True
# 调用示例
print(is_prime(17)) # 返回True,因为17是素数
print(is_prime(20)) # 返回False,因为20不是素数
17
字符串切片:接收用户输入的手机号(11 位),将中间 4 位替换为 *,输出脱敏后的手机号(如 138****1234)。
📝 样例输入: 13812345678
▶ 运行结果:
请输入11位手机号:13812345678
脱敏后的手机号:138****5678
▼
参考答案
python
# 接收用户输入的手机号
phone_input = input("请输入11位手机号:").strip() # 去除两端可能的空格
# 第一步:校验输入合法性
if len(phone_input) != 11:
print("错误:手机号必须是11位数字!")
elif not phone_input.isdigit():
print("错误:手机号只能包含数字!")
else:
# 第二步:脱敏处理(前3位 + **** + 后4位)
# 切片:phone_input[0:3] 取前3位,phone_input[-4:] 取最后4位
masked_phone = phone_input[:3] + "****" + phone_input[-4:]
# 输出脱敏结果
print(f"脱敏后的手机号:{masked_phone}")
18
列表排序:创建列表random_nums = [12, 5, 8, 99, 34, 7],往列表中加入两个数后降序排序并输出。
▶ 运行结果:
添加两个数后: [12, 5, 8, 99, 34, 7, 50, 88]
降序排序后: [99, 88, 50, 34, 12, 8, 7, 5]
▼
参考答案
python
# 定义初始列表
random_nums = [12, 5, 8, 99, 34, 7]
# 方式2:批量添加(extend,更高效)
random_nums.extend([50, 88])
print("添加两个数后:", random_nums)
# 步骤2:降序排序(reverse=True 表示降序)
random_nums.sort(reverse=True)
# 步骤3:输出最终结果
print("降序排序后:", random_nums)
19
循环结构(打印空心菱形):使用 for 循环打印如下图案:
🎯 目标图形:
*
* *
* *
* *
* *
* *
*
▶ 运行结果:
*
* *
* *
* *
* *
* *
*
▼
参考答案
python
# 上半部分
for i in range(1,8,2):
spaces = (7 - i) // 2
if i == 1:
print(' ' * spaces + '*')
else:
print(' ' * spaces + '*' + ' ' * (i-2) + '*')
# 下半部分
for i in range(5,0,-2):
spaces = (7 - i) // 2
if i == 1:
print(' ' * spaces + '*')
else:
print(' ' * spaces + '*' + ' ' * (i-2) + '*')
20
字典增删改查
定义空字典user_info,完成:
添加键值对:"username": "pythoner","password": "123456"
修改 password 为 "654321"
查询是否存在 "email" 键,不存在则添加,值为 "python@test.com"
删除 "username" 键最后输出修改后的字典。
定义空字典user_info,完成:
添加键值对:"username": "pythoner","password": "123456"
修改 password 为 "654321"
查询是否存在 "email" 键,不存在则添加,值为 "python@test.com"
删除 "username" 键最后输出修改后的字典。
▶ 运行结果:
添加键值对后: {'username': 'pythoner', 'password': '123456'}
修改password后: {'username': 'pythoner', 'password': '654321'}
添加email后: {'username': 'pythoner', 'password': '654321', 'email': 'python@test.com'}
删除username后: {'password': '654321', 'email': 'python@test.com'}
最终字典: {'password': '654321', 'email': 'python@test.com'}
▼
参考答案
python
# 1. 定义空字典
user_info = {}
# 2. 添加键值对:"username": "pythoner","password": "123456"
user_info["username"] = "pythoner"
user_info["password"] = "123456"
print("添加键值对后:", user_info)
# 3. 修改 password 为 "654321"
user_info["password"] = "654321"
print("修改password后:", user_info)
# 4. 查询是否存在 "email" 键,不存在则添加,值为 "python@test.com"
if "email" not in user_info:
user_info["email"] = "python@test.com"
print("添加email后:", user_info)
# 5. 删除 "username" 键
del user_info["username"]
print("删除username后:", user_info)
# 最终输出修改后的字典
print("\n最终字典:", user_info)