🚀 实战演练

专项训练 · 共 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 之间”。
📝 样例输入: 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 的倍数的数,输出最终的求和结果。
▶ 运行结果: 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" 键最后输出修改后的字典。
▶ 运行结果: 添加键值对后: {'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)