如何获取符合要求的数值?Python代码逻辑问题排查求助
问题分析与修复方案
你的代码逻辑问题很明确:当用户重新输入数值时,你没有把新输入的值更新到变量a里!
咱们一步步拆解问题流程:
- 第一次输入89,
a被赋值为89 - 程序判断
89 not in b,条件成立,进入if分支 - 你调用了
int(input('enter a number')),用户输入8,但这个新值只是被临时计算了一下,没有存回a,所以a仍然是最初的89 - if分支执行完后,程序直接结束了,根本没再去判断新输入的数值,自然不会输出
ok
要解决这个问题,你需要用循环来持续检查输入,直到用户输入符合要求的数值为止。这里给你两个修改方案:
基础修复方案(解决核心问题)
直接在重新输入时把值赋值回a,并改用while循环重复验证:
a = int(input('enter a number: ')) # 直接用range判断,不需要转成list,更高效 while a not in range(1, 11): a = int(input('enter a number: ')) print('ok')
更健壮的进阶方案(处理非整数输入)
实际场景中用户可能输入非整数,咱们可以加上异常处理,给用户更友好的提示:
while True: try: a = int(input('enter a number between 1 and 10: ')) # 直接用数值范围判断,比in range更直观 if 1 <= a <= 10: print('ok') break # 符合条件就退出循环 else: print('Oops! That number is out of range. Please enter 1-10.') except ValueError: print('Whoops! Please enter a valid whole number.')
这样不管用户输入错误范围的数值,还是输入字母、符号,程序都能正确处理,直到拿到符合要求的输入为止。
内容的提问来源于stack exchange,提问作者Sudip Kundu
相关产品推荐
相关产品推荐

