Python while循环无法持续询问输入直至属于指定列表问题排查
问题排查
- 类型不匹配:
input()函数默认返回字符串类型,你直接将返回值与整数列表[0,1,2,3,4]做包含判断,字符串和整数属于不同类型,即使字面量相同也会被判定为不相等,比如"4"不等于4,因此判断结果永远为False。 - 循环逻辑错误:你在输入不符合要求的
else分支中添加了break语句,只要第一次输入不符合要求就会直接终止整个循环,不会触发下一轮的用户询问。
修复后可运行代码
这里提供两种写法,第二种更贴合你原本的代码结构:
写法1(无限循环终止式,逻辑更清晰):
valid_numbers = [0,1,2,3,4] while True: input_content = input("type a number: ") # 增加类型转换异常处理,避免用户输入非数字内容导致程序崩溃 try: number = int(input_content) except ValueError: print("请输入合法的整数") continue print(number) if number in valid_numbers: print('one of those numbers') break
写法2(保留你原本的循环判断条件):
valid_numbers = [0,1,2,3,4] number = 12 while number not in valid_numbers: input_content = input("type a number: ") try: number = int(input_content) except ValueError: print("请输入合法的整数") # 重置number为非法值,保证循环继续 number = 12 continue print(number) if number in valid_numbers: print('one of those numbers')
当前输出的原因说明
你输入4343时,input() 返回的是字符串 "4343",判断是否在整数列表中结果为False,直接触发else分支的break终止循环,执行循环外的print('not one of those numbers'),所以得到了你贴出的输出结果。
内容的提问来源于stack exchange,提问作者user10828529
相关产品推荐
相关产品推荐

