Python 中 while 循环练习题
一、while 基本用法
练习 1.1 用 while 打印 1~10
题目:
使用 while 循环,依次打印数字 1、2、3、…、10。循环结束后再打印一行“打印完毕”。
参考答案:
n = 1
while n <= 10:
print(n)
n = n + 1
print("打印完毕")
要点: 循环体内要让 n 递增,否则会死循环。
练习 1.2 用 while 累加求和
题目:
使用 while 计算 1 + 2 + 3 + … + 100 的和,将结果存到变量 total 中,最后打印“1 到 100 的和为:xxx”。
参考答案:
n = 1
total = 0
while n <= 100:
total = total + n
n = n + 1
print("1 到 100 的和为:", total) # 5050
练习 1.3 输入合法才退出(while 处理输入)
题目:
不断让用户输入一个 1~5 之间的整数,若输入不在此范围则提示“请输入 1~5 之间的整数”,直到用户输入合法为止,最后打印“你输入了:x”。
参考答案:
num = 0
while num < 1 or num > 5:
num = int(input("请输入 1~5 之间的整数:"))
if num < 1 or num > 5:
print("请输入 1~5 之间的整数")
print("你输入了:", num)
另一种写法(先输入再判断,不合法就继续循环):
while True:
num = int(input("请输入 1~5 之间的整数:"))
if 1 <= num <= 5:
break
print("请输入 1~5 之间的整数")
print("你输入了:", num)
二、break 退出循环
练习 2.1 输入 quit 退出
题目:
编写程序:不断让用户输入一行内容,若用户输入 quit(不区分大小写,即 quit、QUIT、Quit 都算),则打印“已退出”并结束循环;否则打印“你输入了:xxx”。
参考答案:
while True:
line = input("请输入内容(输入 quit 退出):")
if line.lower() == "quit":
print("已退出")
break
print("你输入了:", line)
要点: 用 line.lower() == "quit" 可忽略大小写。
练习 2.2 累加直到输入 0
题目:
不断让用户输入一个数字,将每次输入的数字累加到变量 total 中;当用户输入 0 时结束循环,并打印“累加和为:xxx”。
参考答案:
total = 0
while True:
num = float(input("请输入一个数字(输入 0 结束):"))
if num == 0:
break
total = total + num
print("累加和为:", total)
三、continue 跳过本轮
练习 3.1 只打印偶数
题目:
用 while 循环,变量 n 从 1 变到 10。若 n 为奇数则用 continue 跳过打印,只打印偶数。预期输出:2, 4, 6, 8, 10。
参考答案:
n = 0
while n < 10:
n = n + 1
if n % 2 != 0:
continue
print(n)
练习 3.2 跳过无效输入
题目:
循环 5 次,每次让用户输入一个正数。若用户输入小于等于 0,则提示“请输入正数”并用 continue 跳过本次,不累加;只有正数才累加到 total。最后打印“正数之和:xxx”。
参考答案:
count = 0
total = 0
while count < 5:
count = count + 1
num = float(input("请输入第 {} 个正数:".format(count)))
if num <= 0:
print("请输入正数")
continue
total = total + num
print("正数之和:", total)
四、while 处理列表
练习 4.1 用 while 和 pop 清空列表
题目:
列表 lst = ["A", "B", "C", "D"]。使用 while 循环,每次用 pop() 从列表末尾取走一个元素并打印“取出:x”,直到列表为空,最后打印“列表已空”。
参考答案:
lst = ["A", "B", "C", "D"]
while lst:
item = lst.pop()
print("取出:", item)
print("列表已空:", lst)
要点: while lst: 在列表非空时为 True,空列表为 False。
练习 4.2 把列表元素移到另一个列表
题目:
有两个列表:pending = ["任务1", "任务2", "任务3"] 和空列表 done = []。用 while 循环,每次从 pending 的开头取走一个元素(可用 pop(0)),并追加到 done,直到 pending 为空。最后分别打印 pending 和 done。
参考答案:
pending = ["任务1", "任务2", "任务3"]
done = []
while pending:
task = pending.pop(0)
done.append(task)
print("已完成:", task)
print("待处理:", pending) # []
print("已完成列表:", done) # ['任务1', '任务2', '任务3']
练习 4.3 删除列表中所有指定值
题目:
列表 pets = ["猫", "狗", "兔子", "狗", "鸟", "狗"]。使用 while 循环,删除其中所有 "狗",直到列表中不再包含 "狗"。打印删除后的列表。
参考答案:
pets = ["猫", "狗", "兔子", "狗", "鸟", "狗"]
while "狗" in pets:
pets.remove("狗")
print(pets) # ['猫', '兔子', '鸟']
要点: 用 while "狗" in pets 保证删到没有为止;不要在 for 遍历时边遍历边 remove。
五、while 与字典
练习 5.1 用 while 收集键值对到字典
题目:
从空字典开始,用 while 循环不断让用户输入“键”和“值”(两次 input)。若用户在第一轮输入键时直接回车(空字符串),则结束循环。否则把该键值对加入字典。最后打印“最终字典:”和字典内容。
参考答案:
data = {}
while True:
key = input("请输入键(直接回车结束):")
if key == "":
break
value = input("请输入对应的值:")
data[key] = value
print("最终字典:", data)
六、活动标志
练习 6.1 用活动标志实现简易菜单
题目:
使用一个布尔变量 active 作为活动标志,实现如下菜单循环:
- 打印:“1. 开始 2. 设置 3. 退出”
- 用户输入 1:打印“开始”
- 用户输入 2:打印“设置”
- 用户输入 3:将 active 设为 False,并打印“再见”,然后退出循环
- 其他输入:打印“无效选项”
循环结束后打印“程序结束”。
参考答案:
active = True
while active:
print("1. 开始 2. 设置 3. 退出")
choice = input("请选择(1-3):")
if choice == "1":
print("开始")
elif choice == "2":
print("设置")
elif choice == "3":
active = False
print("再见")
else:
print("无效选项")
print("程序结束")
练习 6.2 多个条件结束循环(活动标志)
题目:
用 while 和活动标志 active 实现:不断让用户输入一句话。若输入 quit 则设 active 为 False 并退出;若连续 3 次输入空字符串(直接回车),也设 active 为 False 并打印“输入空内容次数过多,退出”。否则正常打印“你输入了:xxx”。有效输入时要把“空输入计数”清零。
参考答案:
active = True
empty_count = 0
while active:
line = input("请输入(quit 退出):")
if line == "quit":
active = False
print("已退出")
elif line == "":
empty_count = empty_count + 1
print("当前空输入次数:", empty_count)
if empty_count >= 3:
active = False
print("输入空内容次数过多,退出")
else:
print("你输入了:", line)
empty_count = 0
七、综合练习
练习 7.1 while + 列表 + break
题目:
不断让用户输入一个正整数并加入列表;若用户输入 0 则结束输入。然后打印“你共输入了 x 个数”,以及该列表。要求用 while True 和 break 实现“输入 0 结束”。
参考答案:
nums = []
while True:
n = int(input("请输入一个正整数(0 结束):"))
if n == 0:
break
if n > 0:
nums.append(n)
print("你共输入了", len(nums), "个数:", nums)
练习 7.2 综合:活动标志 + 列表 + 菜单
题目:
实现一个简单“名单管理”:
- 初始名单列表
names = [],活动标志active = True。 - 循环菜单:
- 输入 add:再提示输入一个姓名,将该姓名加入
names。 - 输入 list:打印当前名单(若为空则打印“名单为空”)。
- 输入 quit:将 active 设为 False,打印“再见”,退出循环。
- 其他输入:打印“未知命令”。
- 输入 add:再提示输入一个姓名,将该姓名加入
- 退出后打印“最终名单:”和名单内容。