Python while循环满足终止条件仍无法停止的问题修复咨询
问题原因及修复方案
1. 死循环核心原因
循环条件的逻辑运算符使用错误:
你当前写的while teller < 8 or neerslag != "overvloed"用了逻辑或or,规则是只要两个条件任意一个成立,循环就继续运行:
- 哪怕已经采集满7天(
teller >=8),只要没输入过overvloed,neerslag != "overvloed"就成立,循环不会停止 - 哪怕已经输入了
overvloed,只要还没满7天,teller <8就成立,循环也不会停止
正确逻辑需要改为逻辑与and:同时满足「未采集满7天」和「未输入洪水关键词」两个条件时才继续循环,即调整为while teller < 8 and neerslag != "overvloed",只要其中一个条件不满足,循环就会立刻退出。
2. 其他需要修复的逻辑问题
- 原代码在进入循环前提前读取了一次输入,该次输入既没有做逻辑判断也没有存入结果列表,属于冗余逻辑,第一次输入的温度和降水数据会被直接丢弃
- 最终执行
print(dagen[teller])会触发索引越界报错:7天采集完成后teller会累加到8,而dagen列表最多只有7个元素,索引最大值为6,无法访问索引8的内容
3. 修复后完整代码(保留原荷兰语交互)
def main(): teller = 1 dagen = [] neerslag = "" # 修正逻辑运算符为and while teller < 8 and neerslag != "overvloed": temp = int(input("Voer de temperatuur in: ")) neerslag = input("Hoeveelheid neerslag(overvloed - veel – matig – geen): ") dagen.append({"dag": teller, "temperatuur": temp, "neerslag": neerslag}) teller += 1 if neerslag == "overvloed": print("Uitstap gaat NIET door") else: # 修正索引越界问题,直接打印所有采集到的有效数据 print(dagen) if __name__ == '__main__': main()
内容的提问来源于stack exchange,提问作者Xattics
相关产品推荐
相关产品推荐

