13.Python中while循环练习题

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 为空。最后分别打印 pendingdone

参考答案:

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 Truebreak 实现“输入 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,打印“再见”,退出循环。
    • 其他输入:打印“未知命令”。
  • 退出后打印“最终名单:”和名单内容。

发表评论