Python小白必做的30道基础练习题(附详细解析与参考答案)
这些题目按难度递进排列,覆盖变量、输入输出、字符串、列表、字典、条件判断、循环、函数等核心基础。
学习建议:
- 先自己独立思考并写代码(不要直接看答案!)
- 运行测试,遇到错误就调试
- 每做完5道,复习一遍相关语法
- 全部做完后再对比我的参考答案,优化自己的写法
每道题都给出题目 + 提示 + 参考代码 + 解析。
第1-10题:基础语法与输入输出
1. 输出 “Hello, World!”
提示:使用 print() 函数。
参考答案:
print("Hello, World!")
2. 计算两个数的和
从键盘输入两个整数,输出它们的和。
参考答案:
a = int(input("请输入第一个数: "))
b = int(input("请输入第二个数: "))
print("两数之和为:", a + b)
3. 判断奇数还是偶数
输入一个整数,判断它是奇数还是偶数。
参考答案:
num = int(input("请输入一个整数: "))
if num % 2 == 0:
print("偶数")
else:
print("奇数")
4. 比较三个数的大小
输入三个整数,输出最大的数。
参考答案:
a, b, c = map(int, input("请输入三个整数(用空格分隔): ").split())
print("最大数是:", max(a, b, c))
5. 简单计算器
输入两个数和运算符(+ – * /),输出计算结果。
参考答案:
a = float(input("第一个数: "))
op = input("运算符 (+-*/): ")
b = float(input("第二个数: "))
if op == '+': print(a + b)
elif op == '-': print(a - b)
elif op == '*': print(a * b)
elif op == '/':
if b != 0:
print(a / b)
else:
print("除数不能为0")
else:
print("不支持的运算符")
6. 打印九九乘法表
用循环打印完整的九九乘法表。
参考答案:
for i in range(1, 10):
for j in range(1, i+1):
print(f"{j}×{i}={i*j}", end="\t")
print()
7. 求1到100的和
使用 for 或 while 循环计算。
参考答案:
total = 0
for i in range(1, 101):
total += i
print("1到100的和是:", total)
# 或者一行:print(sum(range(1, 101)))
8. 判断是否为闰年
输入年份,判断是否为闰年(能被4整除但不能被100整除,或能被400整除)。
参考答案:
year = int(input("请输入年份: "))
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
print("是闰年")
else:
print("不是闰年")
9. 交换两个变量的值
不使用临时变量交换两个变量。
参考答案:
a, b = 10, 20
a, b = b, a
print(a, b) # 输出 20 10
10. 字符串反转
输入一个字符串,输出它的反转形式。
参考答案:
s = input("请输入字符串: ")
print(s[::-1])
第11-20题:字符串与列表
11. 统计字符串中某个字符出现的次数
参考答案:
s = input("请输入字符串: ")
ch = input("请输入要统计的字符: ")
print(s.count(ch))
12. 去除字符串两端空格
参考答案:
s = input("请输入带空格的字符串: ")
print(s.strip())
13. 列表中最大值和最小值
参考答案:
lst = list(map(int, input("请输入数字列表(空格分隔): ").split()))
print("最大值:", max(lst), "最小值:", min(lst))
14. 列表去重并保持顺序
参考答案:
lst = [1, 2, 2, 3, 4, 4, 5]
unique = []
for x in lst:
if x not in unique:
unique.append(x)
print(unique)
# 更Pythonic:list(dict.fromkeys(lst))
15. 合并两个列表
参考答案:
a = [1, 2, 3]
b = [4, 5, 6]
print(a + b)
16. 计算列表中所有元素的和与平均值
参考答案:
nums = list(map(int, input().split()))
print("和:", sum(nums), "平均值:", sum(nums)/len(nums))
17. 查找列表中第二个最大的数
参考答案:
nums = [5, 2, 8, 1, 9, 3]
unique = sorted(set(nums), reverse=True)
print("第二大:", unique[1] if len(unique) > 1 else "无")
18. 判断列表是否为空
参考答案:
lst = []
print("空" if not lst else "非空")
19. 列表元素翻转
参考答案:
lst = [1, 2, 3, 4, 5]
print(lst[::-1])
# 或 lst.reverse()
20. 统计列表中正数、负数、零的个数
参考答案:
nums = list(map(int, input().split()))
positive = sum(1 for x in nums if x > 0)
negative = sum(1 for x in nums if x < 0)
zero = nums.count(0)
print(positive, negative, zero)
第21-30题:字典、函数与综合
21. 创建学生成绩字典并查询
参考答案:
scores = {"张三": 85, "李四": 92, "王五": 78}
name = input("请输入姓名: ")
print(scores.get(name, "未找到"))
22. 字典中值最大的键
参考答案:
d = {"a": 10, "b": 25, "c": 15}
print(max(d, key=d.get))
23. 定义函数求阶乘
参考答案:
def factorial(n):
if n == 0 or n == 1:
return 1
return n * factorial(n-1)
print(factorial(5)) # 120
24. 判断回文数/回文字符串
参考答案:
s = input("请输入: ").lower()
print("是回文" if s == s[::-1] else "不是回文")
25. 斐波那契数列前n项
参考答案:
def fib(n):
a, b = 0, 1
for _ in range(n):
print(a, end=" ")
a, b = b, a + b
fib(10)
26. 简单猜数字游戏
参考答案:
import random
secret = random.randint(1, 100)
while True:
guess = int(input("猜一个1-100的数: "))
if guess < secret:
print("太小了")
elif guess > secret:
print("太大了")
else:
print("猜对了!")
break
27. 统计一句话中单词个数
参考答案:
sentence = input("请输入一句话: ")
words = sentence.split()
print("单词个数:", len(words))
28. 成绩等级转换
(90+ A,80-89 B,70-79 C,60-69 D,<60 E)
参考答案:
score = int(input("请输入成绩: "))
if score >= 90: print("A")
elif score >= 80: print("B")
elif score >= 70: print("C")
elif score >= 60: print("D")
else: print("E")
29. 打印菱形图案
参考答案:
n = 5
for i in range(n):
print(" " * (n - i - 1) + "*" * (2 * i + 1))
for i in range(n-2, -1, -1):
print(" " * (n - i - 1) + "*" * (2 * i + 1))
30. 简单文件读写(保存姓名和年龄)
参考答案:
name = input("姓名: ")
age = input("年龄: ")
with open("info.txt", "w", encoding="utf-8") as f:
f.write(f"姓名: {name}\n年龄: {age}")
with open("info.txt", "r", encoding="utf-8") as f:
print(f.read())
做题Tips:
- 每做完一道,立刻运行测试各种输入(边界情况:0、空字符串、负数等)
- 尝试用列表推导式、f-string、字典推导式重写代码,让代码更Pythonic
- 全部做完后,尝试把1-30题打包成一个小程序(菜单选择题号执行)
想看带详细中文解析 + 多种解法的完整版本、进阶版30题(文件操作、异常处理、简单类),或者自动判题脚本,随时告诉我!
现在就开始刷题吧!每天5道,坚持一周,你会明显感觉到进步。加油,小白也能快速变大神!🐍🚀
有不会的题目直接回复题号,我立刻给你详细讲解!