🚀 实战演练
专项训练 · 共 30 题 · 本页第 1–10 题(第 1 / 3 页)
1
字符串基础:编写程序,接收用户输入的一个字符串,去掉字符串两端的空格,然后输出该字符串的长度、第一个字符和最后一个字符。
📝 样例输入: " Hello Python "(含首尾空格)
▶ 运行结果:
请输入一个字符串: Hello Python
去除两端空格后的字符串:'Hello Python'
字符串长度:12
▼
参考答案
python
# 接收用户输入的字符串
user_input = input("请输入一个字符串:")
# 去除字符串两端的空格
stripped_str = user_input.strip()
# 输出处理后的字符串(便于验证)
print(f"\n去除两端空格后的字符串:'{stripped_str}'")
# 计算字符串长度
str_length = len(stripped_str)
print(f"字符串长度:{str_length}")
2
列表综合操作
创建列表 nums = [12, 5, 8, 99, 34, 7, 12, 8, 99],完成:
计算列表所有元素的平均值(保留 2 位小数)
找出列表中出现次数最多的元素及其出现次数
创建列表 nums = [12, 5, 8, 99, 34, 7, 12, 8, 99],完成:
计算列表所有元素的平均值(保留 2 位小数)
找出列表中出现次数最多的元素及其出现次数
▶ 运行结果:
列表所有元素的平均值:31.56
出现次数最多的元素及次数:
元素:[12, 8, 99],出现次数:2
▼
参考答案
python
# 定义指定列表
nums = [12, 5, 8, 99, 34, 7, 12, 8, 99]
# 1. 计算平均值(保留2位小数)
total = sum(nums) # 求和
count = len(nums) # 元素个数
average = round(total / count, 2)
# 计算平均值并保留2位小数
print(f"列表所有元素的平均值:{average}")
# 2. 找出出现次数最多的元素及其出现次数
# 存储元素和对应次数的字典
count_dict = {}
for num in nums:
count_dict[num] = count_dict.get(num, 0) + 1 # 统计每个元素出现次数
# 找出最大出现次数
max_count = max(count_dict.values())
# 找出所有出现次数等于最大次数的元素
max_elements = [k for k, v in count_dict.items() if v == max_count]
# 输出结果
print("\n出现次数最多的元素及次数:")
if len(max_elements) == 1:
print(f"元素:{max_elements[0]},出现次数:{max_count}")
else:
print(f"元素:{max_elements},出现次数:{max_count}")
3
选择结构(多条件判断)
接收用户输入的三个整数(代表三角形的三边长度):
判断这三个数能否构成三角形(任意两边之和大于第三边)
若能构成,进一步判断是等边三角形、等腰三角形还是普通三角形
若不能,输出 “无法构成三角形”输出最终判断结果。
接收用户输入的三个整数(代表三角形的三边长度):
判断这三个数能否构成三角形(任意两边之和大于第三边)
若能构成,进一步判断是等边三角形、等腰三角形还是普通三角形
若不能,输出 “无法构成三角形”输出最终判断结果。
📝 样例输入:
3
4
5
▶ 运行结果:
请输入三角形第一条边的长度:3
请输入三角形第二条边的长度:4
请输入三角形第三条边的长度:5
能构成三角形:普通三角形
▼
参考答案
python
a = int(input("请输入三角形第一条边的长度:"))
b = int(input("请输入三角形第二条边的长度:"))
c = int(input("请输入三角形第三条边的长度:"))
# 先判断边长是否为正数(边长不能为0或负数)
if a <= 0 or b <= 0 or c <= 0:
print("无法构成三角形:边长不能为0或负数")
else:
# 判断能否构成三角形(简化:排序后取较小两边之和大于最大边)
# 先对三边排序,方便后续判断
sides = sorted([a, b, c]) # sides[0] <= sides[1] <= sides[2]
if sides[0] + sides[1] > sides[2]:
# 能构成三角形,判断类型
if a == b == c:
print("能构成三角形:等边三角形")
elif a == b or a == c or b == c:
print("能构成三角形:等腰三角形")
else:
print("能构成三角形:普通三角形")
else:
print("无法构成三角形:任意两边之和需大于第三边")
4
字典取值:定义一个字典student = {"name": "张三", "age": 18, "score": 92},将该学生的分数改为95后输出姓名和分数。
▶ 运行结果:
修改前 - 姓名:张三,分数:92
修改后 - 姓名:张三,分数:95
▼
参考答案
python
# 定义初始字典
student = {"name": "张三", "age": 18, "score": 92}
# 输出修改前的分数(便于对比)
print(f"修改前 - 姓名:{student['name']},分数:{student['score']}")
# 修改分数为95
student["score"] = 95
# 输出修改后的姓名和分数
print(f"修改后 - 姓名:{student['name']},分数:{student['score']}")
5
循环结构(1-100偶数求和):使用 while 循环计算 1 到 100(包含)之间的偶数的累加和,并输出结果。
▶ 运行结果:
1到100之间所有偶数的累加和:2550
▼
参考答案
python
# 初始化累加和变量和循环计数器
sum_even = 0 # 存储偶数的累加和
i = 1 # 循环计数器,从1开始
# while循环遍历1到100(包含)
while i <= 100:
# 判断是否为偶数(能被2整除)
if i % 2 == 0:
sum_even += i # 等价于 sum_even = sum_even + i
# 计数器自增,避免死循环
i += 1
# 输出结果
print(f"1到100之间所有偶数的累加和:{sum_even}")
6
字符串拼接:接收用户输入的姓名和年龄,用两种不同的方式输出,格式为:“我的名字是 XX,今年 XX 岁”。
📝 样例输入:
张三
18
▶ 运行结果:
请输入你的姓名:张三
请输入你的年龄:18
方式1(f-string): 我的名字是 张三,今年 18 岁
方式2(format方法): 我的名字是 张三,今年 18 岁
▼
参考答案
python
# 接收用户输入
name = input("请输入你的姓名:")
# 年龄可直接保留字符串,也可转换为整数(两种方式都兼容格式化)
age = input("请输入你的年龄:")
# 方式1:使用f-string格式化输出(Python 3.6+ 推荐)
output1 = f"我的名字是 {name},今年 {age} 岁"
print("方式1(f-string):", output1)
# 方式2:使用str.format()方法格式化输出(兼容性更广)
output2 = "我的名字是 {},今年 {} 岁".format(name, age)
# 也可使用带索引的格式,更清晰:
# output2 = "我的名字是 {0},今年 {1} 岁".format(name, age)
print("方式2(format方法):", output2)
7
列表增删改
创建列表nums = [1,2,3,4,5],完成:
在列表末尾添加元素 6
删除列表中索引为 2 的元素
将索引为 0 的元素修改为 0最后输出修改后的列表。
创建列表nums = [1,2,3,4,5],完成:
在列表末尾添加元素 6
删除列表中索引为 2 的元素
将索引为 0 的元素修改为 0最后输出修改后的列表。
▶ 运行结果:
初始列表: [1, 2, 3, 4, 5]
添加元素6后: [1, 2, 3, 4, 5, 6]
删除索引2的元素后: [1, 2, 4, 5, 6]
修改索引0的元素为0后: [0, 2, 4, 5, 6]
最终修改后的列表: [0, 2, 4, 5, 6]
▼
参考答案
python
# 定义初始列表
nums = [1, 2, 3, 4, 5]
print("初始列表:", nums)
# 1. 在列表末尾添加元素 6
nums.append(6)
print("添加元素6后:", nums)
# 2. 删除列表中索引为 2 的元素
del nums[2]
print("删除索引2的元素后:", nums)
# 3. 将索引为 0 的元素修改为 0
nums[0] = 0
print("修改索引0的元素为0后:", nums)
# 最终输出修改后的列表
print("\n最终修改后的列表:", nums)
8
函数
定义一个可变参数函数 calc_average(*args),接收任意数量的数字参数
计算并返回这些数字的平均值(若没有参数,返回 0)
调用该函数分别计算:10、20、30 的平均值
无参数的情况输出所有调用结果。
定义一个可变参数函数 calc_average(*args),接收任意数量的数字参数
计算并返回这些数字的平均值(若没有参数,返回 0)
调用该函数分别计算:10、20、30 的平均值
无参数的情况输出所有调用结果。
▶ 运行结果:
10、20、30 的平均值:20.0
无参数时的返回值:0
▼
参考答案
python
# 定义可变参数函数 calc_average
def calc_average(*args):
# 判断是否有传入参数
if not args: # 等价于 len(args) == 0
return 0
# 计算总和与数量,求平均值
total = sum(args)
count = len(args)
average = total / count
return average
# 调用函数1:传入10、20、30三个参数
avg1 = calc_average(10, 20, 30)
print(f"10、20、30 的平均值:{avg1}")
# 调用函数2:无参数
avg2 = calc_average()
print(f"无参数时的返回值:{avg2}")
9
循环结构(打印乘法表):使用嵌套循环打印 99 乘法表的前 5 行(1×1 到 5×5)。
▶ 运行结果:
1×1=1
2×1=2 2×2=4
3×1=3 3×2=6 3×3=9
4×1=4 4×2=8 4×3=12 4×4=16
5×1=5 5×2=10 5×3=15 5×4=20 5×5=25
▼
参考答案
python
# 外层循环:控制行数(1到5行)
for i in range(1, 6): # range(1,6) 生成1、2、3、4、5
# 内层循环:控制每行的列数(1到当前行数i)
for j in range(1, i + 1):
# 计算乘积并格式化输出,end=" " 表示不换行,用空格分隔
product = i * j
print(f"{i}×{j}={product}", end=" ")
# 内层循环结束后换行,开始下一行
print() # 空print()默认换行
10
字典 + 循环(词频统计)
定义字符串 text = "Python is a popular programming language. Python is easy to learn, Python is powerful.",完成:
去除字符串中的标点符号(. ,),将所有字母转为小写
按空格分割成单词列表
用字典统计每个单词出现的次数
输出出现次数最多的单词及其次数
定义字符串 text = "Python is a popular programming language. Python is easy to learn, Python is powerful.",完成:
去除字符串中的标点符号(. ,),将所有字母转为小写
按空格分割成单词列表
用字典统计每个单词出现的次数
输出出现次数最多的单词及其次数
▶ 运行结果:
预处理后的字符串: python is a popular programming language python is easy to learn python is powerful
分割后的单词列表: ['python', 'is', 'a', 'popular', 'programming', 'language', 'python', 'is', 'easy', 'to', 'learn', 'python', 'is', 'powerful']
单词出现次数统计: {'python': 3, 'is': 3, 'a': 1, 'popular': 1, 'programming': 1, 'language': 1, 'easy': 1, 'to': 1, 'learn': 1, 'powerful': 1}
出现次数最多的单词:
单词:['python', 'is'],出现次数:3
▼
参考答案
python
# 定义初始字符串
text = "Python is a popular programming language. Python is easy to learn, Python is powerful."
# 1. 预处理:去除标点(. ,),转为小写
# 先替换标点为空字符串,再转小写
processed_text = text.replace(".", "").replace(",", "").lower()
print("预处理后的字符串:", processed_text)
# 2. 按空格分割成单词列表
word_list = processed_text.split()
print("\n分割后的单词列表:", word_list)
# 3. 用字典统计每个单词出现的次数
word_count = {}
for word in word_list:
# 若单词已在字典中,次数+1;否则初始化为1
word_count[word] = word_count.get(word, 0) + 1
print("\n单词出现次数统计:", word_count)
# 4. 找出出现次数最多的单词及其次数
if word_count: # 确保字典非空
max_count = max(word_count.values()) # 获取最大次数
# 筛选出所有次数等于最大次数的单词(兼容多个单词次数相同的情况)
max_words = [word for word, count in word_count.items() if count == max_count]
# 输出结果
print("\n出现次数最多的单词:")
if len(max_words) == 1:
print(f"单词:{max_words[0]},出现次数:{max_count}")
else:
print(f"单词:{max_words},出现次数:{max_count}")
else:
print("\n无有效单词可统计")