Python实现输入对应循环次数及1-5范围输入校验问题求解
问题原因说明
第一段多段while代码问题
- 第一个
while(drink == 1)循环内部没有修改drink变量的逻辑,输入1时drink永远为1,会触发死循环 - 多个while判断相互独立,只有drink刚好匹配对应值才会进入循环,逻辑完全不符合「按输入次数循环」的需求
第二段for循环代码问题
- for循环中使用
drink作为遍历变量,直接覆盖了用户输入的drink值,range(1,6)会生成1到5共5个值,因此无论用户输入多少,都会固定执行5次循环
正确实现方案
完整实现代码如下,同时兼容输入非整数、输入值超出范围的异常场景:
# 输入校验:循环获取输入直到拿到1-5之间的合法整数 while True: try: drink_num = int(input("How many drinks will you consume? ")) if 1 <= drink_num <= 5: break print("请输入1-5范围内的整数") except ValueError: print("输入不合法,请输入整数") # 按输入次数执行循环 for i in range(1, drink_num + 1): print("You've consumed " + str(i) + " drinks") print("You're done drinking.")
逻辑说明
- 输入校验阶段用无限循环保证用户必须输入合法值才能进入后续流程,
try-except块捕获用户输入非整数的异常,避免程序直接崩溃 - 循环打印阶段使用独立的遍历变量
i,不会覆盖用户输入的次数值,range(1, drink_num + 1)保证循环次数和用户输入完全匹配
内容的提问来源于stack exchange,提问作者breadcrumbslicers
相关产品推荐
相关产品推荐

