Python循环计数问题:首个符合条件的输入未被统计
Fix for Missing First Input Count in Number Range Counter
我来帮你排查这个问题——你的代码确实存在一个小逻辑漏洞:第一个输入的数字根本没机会被判断是否在100-200范围内。
咱们拆解下原代码的执行流程:
- 你先获取了第一个输入值存在
entry里 - 进入
while循环后,第一行就重新获取新输入覆盖了entry - 这时候才判断新输入的数值是否符合条件,完全跳过了最开始输入的那个数
比如你输入123、150、0时:
- 第一次
entry是123,但进入循环后立刻被新输入的150覆盖,123根本没被检查 - 接着判断150符合条件,
total变成1 - 最后输入0,循环结束,打印出的结果自然少统计了第一个数
修复方案一:用while True实现先输入再判断的逻辑(更直观)
这种写法能确保每一次输入都会被先检查是否是终止符0,再判断是否在目标范围内:
def counting(): total = 0 while True: entry = int(input("Type a number: ")) # 先判断是否要退出循环 if entry == 0: break # 再判断是否在100-200之间 if 100 < entry < 200: total += 1 print(total)
修复方案二:调整原循环的执行顺序
如果你想保留原来的循环结构,可以把判断逻辑放在获取下一个输入之前,这样初始的输入值会被先检查:
def counting(): total = 0 entry = int(input("Type a number: ")) while entry != 0: # 先检查当前entry是否符合条件 if 100 < entry < 200: total += 1 # 再获取下一个输入 entry = int(input("Type a number: ")) print(total)
这两种写法都能解决你的问题,测试输入123、150、0时,都会得到正确的结果2。
内容的提问来源于stack exchange,提问作者user9855290
相关产品推荐
相关产品推荐

