本文汇总了 20 多个 Python 入门级练习题,从最简单的布尔转换到二维列表操作,再到自定义函数。每个例子都配有详细文字分析和完整代码,适合零基础或刚学完语法需要练习的同学。建议边看边敲,运行观察输出。
一、为什么选择这些练习?
Python 是一门强调可读性和简洁性的语言。对于初学者来说,条件判断(if-elif-else)、循环(for / while)以及列表操作是三个必须熟练掌握的模块。本文精选的题目来自于常见的基础题库,覆盖了:
- 数据类型转换与布尔逻辑
- 列表的空值判断与遍历
- 字符串忽略大小写比较
- 多条件分支与输入验证
- 累加器与平均值的计算
- 嵌套循环与二维列表修改
- 自定义函数的定义与调用
下面我们逐一分析。
二、条件判断专项练习
2.1 布尔值的转换与输出
a = bool(int(input()))
if a:
print("Hello World!")
else:
print("Erros!")
文字分析:
input() 读取用户输入(字符串),int() 将其转为整数。在 Python 中,只有 0 会被转为 False,其他整数都是 True。bool() 再次确保类型为布尔值。如果输入 1(或任意非零数),打印 Hello World!;如果输入 0,打印 Erros!。注意原题中错误拼写了 Errors,这里保留原样。
2.2 判断列表是否为空
a = []
if a == []:
print('my_list is empty!')
else:
print('my_list is not empty!')
文字分析:
直接比较变量 a 与空列表 [] 是否相等。更 Pythonic 的写法是 if not a:,因为空列表在布尔上下文中为 False。但原题采用显式比较,逻辑同样正确。
2.3 用户名注册检查(忽略大小写)
ls = ['Niuniu', 'Niumei', 'GURR', 'LOLO']
lst = ['GurR', 'Niu Ke Le', 'LoLo', 'Tuo Rui Chi']
for i in lst:
for j in ls:
if i.lower() == j.lower():
print('The user name ' + i + ' has already been registered! Please change it and try again!')
break
else:
print('Congratulations, the user name ' + i + ' is available!')
文字分析:
这是一个典型的嵌套循环 + for-else 结构。外层遍历待检查的用户名列表 lst,内层遍历已注册列表 ls。使用 .lower() 将两个字符串都转为小写再比较,实现大小写不敏感的匹配。
- 如果找到相同用户名(忽略大小写),则打印冲突提示并用
break跳出内层循环。 for-else的else分支只有在循环没有被break中断时才会执行。因此,当内层循环完整遍历完都没找到匹配项时,就打印“用户名可用”。
2.4 简单的食物价格查询
a = input()
if a == 'pizza':
print(10)
elif a == 'rice':
print(2)
elif a == 'yogurt':
print(5)
else:
print(8)
文字分析:
这是一个多分支判断。如果输入 pizza 输出 10,输入 rice 输出 2,输入 yogurt 输出 5,其他任何输入(包括空输入)都输出 8。适合用来模拟菜单定价逻辑。
2.5 学分绩点计算器(含终止条件)
x = 0.0
y = 0
for i in range(100):
a = input()
if a == 'A':
b = int(input())
x += b * 4.0
y += b
elif a == 'B':
b = int(input())
x += b * 3.0
y += b
elif a == 'C':
b = int(input())
x += b * 2.0
y += b
elif a == 'D':
b = int(input())
x += b * 1.0
y += b
elif a == 'F':
b = int(input())
x += b * 0
y += b
else:
print("%.2f" % (x / y))
break
文字分析:
这是一个累计加权平均程序。最多循环 100 次,每次先输入等级(A~F),再输入该门课的学分。
- 等级对应绩点:A=4.0,B=3.0,C=2.0,D=1.0,F=0.0。
- 变量
x存储加权总分(学分×绩点),y存储总学分。 - 当输入不是 A~F 中的任何一个时(比如直接回车或输入其他字符),程序就会计算平均绩点(
x/y)并输出(保留两位小数),然后break退出循环。
这个例子很好地演示了循环内的条件分支和累计计算。
2.6 登录验证(嵌套 if)
username = input()
password = input()
if username == 'admis':
if password == 'Nowcoder666':
print("Welcome!")
else:
print("user id or password is not correct!")
else:
print("user id or password is not correct!")
文字分析:
先判断用户名是否为 admis(注意原题可能是 admin 的笔误)。如果用户名正确,再判断密码;否则直接报错。这种嵌套条件结构清晰,但重复的错误提示可以进一步合并。
三、循环语句专项练习
3.1 列表的创建与长度查询
mylist = ['P', 'y', 't', 'h', 'o', 'n']
print('Here is the original list:')
print(mylist)
print("")
print('The number that my_list has is:')
print(len(mylist))
文字分析:
最简单的列表操作。len() 返回列表元素个数,这里输出 6。
3.2 遍历列表并格式化输出
ls = ['Niuniu', 'Niumei', 'Niu Ke Le']
for i in ls:
print("Hi, " + i + "! Welcome to Nowcoder!")
print("Happy Programmers' Day to everyone!")
文字分析:
for i in ls: 依次取出每个元素,拼接字符串后打印。循环结束后再打印一句节日祝福。这种模式常用于批量发送欢迎消息。
3.3 列表推导式与索引访问
a = [i for i in range(10, 51)]
print(a)
print(a[0], a[40])
文字分析:
[i for i in range(10, 51)] 是列表推导式,生成从 10 到 50 的整数列表(共 41 个元素)。a[0] 是第一个元素 10,a[40] 是最后一个元素 50(因为索引从 0 开始)。注意 range(10,51) 包含 10,不包含 51。
3.4 输入多个整数并计算总和与平均值
a = input().split()
total = 0
count = 0
for i in a:
i = int(i)
total += i
count += 1
average = total / count
print(total, round(average, 1))
文字分析:
input().split() 将一行输入按空格分割成字符串列表。循环中将每个字符串转为整数,累加求和,同时计数。最后用 round(average, 1) 保留一位小数。这种方法不需要预先知道数字个数,非常灵活。
3.5 输出 0 到 18 之间的所有偶数
a = [i for i in range(0, 19, 2)]
for i in a:
print(i)
文字分析:
range(0, 19, 2) 生成步长为 2 的序列:0,2,4,...,18。再用列表推导式生成列表。也可以直接 for i in range(0,19,2): print(i)。
3.6 输出 5 到 50 之间 5 的倍数
for i in range(5, 51, 5):
print(i)
文字分析:
步长设为 5,从 5 开始到 50(包括 50)。输出:5,10,15,...,50。
3.7 计算 2 的 1~10 次幂
ls = []
for i in range(1, 11):
ls.append(2 ** i)
for i in ls:
print(i)
文字分析:
先创建空列表,然后在循环中用 append 添加每次计算的结果。2 ** i 表示 2 的 i 次幂。最后遍历列表输出所有值。
3.8 使用 list(range()) 快速生成列表
a = list(range(10))
print(a)
文字分析:
range(10) 生成 0~9,再用 list() 转为列表。这是生成连续整数列表最简洁的方法。
3.9 循环弹出列表元素直到为空
ls = ['apple', 'ice cream', 'watermelon', 'chips', 'hotdogs', 'hotpot']
while ls != []:
ls.pop()
print(ls)
文字分析:
while ls != []: 当列表不为空时,反复执行 pop()(默认删除最后一个元素并返回它)。每次删除后打印当前列表状态。最终列表变为空。这个例子展示了 pop() 的副作用。
3.10 带特殊判断的问候
ls = ['Niuniu', 'Niumei', 'HR', 'Niu Ke Le', 'GURR', 'LOLO']
for i in ls:
if i == 'HR':
print("Hi, " + i + "! Would you like to hire someone?")
else:
print("Hi, " + i + "! Welcome to Nowcoder!")
文字分析:
在遍历时检查当前元素是否为 'HR',如果是则发送招聘询问,否则发送普通欢迎语。体现了循环内的条件分支。
3.11 查找元素并提前终止循环
ls = [3, 45, 9, 8, 12, 89, 103, 42, 54, 79]
a = int(input())
for i in ls:
if i == a:
break
else:
print(i)
文字分析:
用户输入一个整数 a,程序遍历列表 ls。如果当前元素等于 a,则 break 跳出循环,不再输出后面的元素;否则打印当前元素。注意:找到目标后不会打印它,只打印它之前的所有元素。
3.12 跳过特定数字(continue 示例)
for i in range(1, 16):
if i == 13:
continue
else:
print(i, end=' ')
文字分析:
continue 跳过本次循环剩余部分,直接进入下一次迭代。因此输出 1 到 15,但缺少 13。end=' ' 使 print 不换行,用空格分隔。
3.13 二维列表每个元素乘以 n
n = int(input())
ls = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
for i in range(3):
for j in range(3):
ls[i][j] = ls[i][j] * n
print(ls)
文字分析:
嵌套循环遍历 3×3 矩阵。外层循环 i 控制行,内层循环 j 控制列。每个元素都乘以用户输入的 n。这是修改二维列表的基础操作。
四、自定义函数练习
4.1 华氏度转近似摄氏度(for 循环版)
def Table_For(min, max):
print("华氏度\t\t近似摄氏度")
print("********************")
for i in range(min, max + 1, 10):
h = (i - 30) / 2
print(f"{i}\t\t{round(h, 1)}")
文字分析:
函数接收最小和最大华氏温度,步长为 10 进行遍历。近似公式:摄氏 ≈ (华氏 - 30) / 2。结果保留一位小数,使用 f-string 格式化输出。\t 表示制表符对齐。
4.2 华氏度转近似摄氏度(while 循环版)
def Table_While(min, max):
print("华氏度\t\t近似摄氏度")
print("********************")
i = min
while i <= max:
h = (i - 30) / 2
print(f"{i}\t\t{round(h, 1)}")
i += 10
文字分析:
与 for 版功能相同,但使用 while 循环,需要手动维护计数器 i。
4.3 精确摄氏度转换(for 版)
def Table_For(min, max):
print("华氏度\t\t摄氏度\t\t近似摄氏度")
print("****************************************")
for i in range(min, max + 1, 10):
h = (i - 30) / 2
m = (i - 32) / 1.8
print(f"{i}\t\t{round(m, 1)}\t\t{round(h, 1)}")
文字分析:
增加精确转换公式:摄氏 = (华氏 - 32) / 1.8。输出三列:华氏度、精确摄氏度、近似摄氏度。便于对比两种算法的差异。
4.4 精确摄氏度转换(while 版)
def Table_While(min, max):
print("华氏度\t\t摄氏度\t\t近似摄氏度")
print("****************************************")
i = min
while i <= max:
h = (i - 30) / 2
m = (i - 32) / 1.8
print(f"{i}\t\t{round(m, 1)}\t\t{round(h, 1)}")
i += 10
文字分析:
同上,只是循环方式不同。
4.5 列表追加并分阶段打印
def Append(primes, p):
for i in primes:
print(i)
primes.append(p)
for i in primes:
print(i)
文字分析:
该函数接收一个列表 primes 和一个元素 p。先打印原列表所有元素,然后将 p 追加到列表末尾,再打印一次完整列表。演示了列表是可变对象,函数内修改会影响外部。
4.6 生成奇数列表(for 循环)
def Odd_For(n):
odds = []
if n == 1:
odds.append(n)
else:
for i in range(1, n + 1, 2):
odds.append(i)
return odds
文字分析:
返回从 1 到 n 之间的所有奇数(包括 n 如果 n 是奇数)。range(1, n+1, 2) 步长为 2。注意边界情况 n=1 时也能正确返回 [1]。
4.7 生成奇数列表(while 循环)
def Odd_While(n):
odds = []
if n == 1:
odds.append(n)
else:
i = 1
while i < n + 1:
odds.append(i)
i += 2
return odds
文字分析:
while 版本逻辑相同,需要手动控制循环变量 i 的递增。
五、总结与学习建议
通过以上 20 多个小例子,你可以看到:
- 条件判断用于控制程序的分支流向,常与比较运算符和逻辑运算符结合。
- 循环用于重复执行代码块,
for适合遍历已知范围或可迭代对象,while适合条件未知的循环。 - 列表是 Python 最常用的数据结构,支持增删改查、切片、推导式等操作。
- 函数将代码封装为可复用的单元,提高代码的组织性和可读性。
建议你依次运行每个代码段,尝试修改输入值或边界条件,观察输出的变化。例如:
- 在成绩计算器中输入
F学分 3,然后输入X结束,看看平均绩点是多少。 - 修改二维列表乘法函数,让它支持不同尺寸的矩阵。
- 将华氏度转换函数改为从键盘输入 min 和 max 再调用。
最后,编程能力的提升离不开持续的练习。你可以尝试将这些小函数组合成一个完整的程序,比如:用户登录成功后,显示温度转换表,并可以计算成绩。不断挑战自己,你会进步得更快!
Happy Coding!