为何输入整数时代码重复执行而非继续?求解决方案
问题排查:代码持续重复执行的原因
你的代码存在两个核心问题,导致循环无法正常终止:
循环条件逻辑错误:
while new_custom !=["y","n"]是将字符串类型的new_custom与列表["y","n"]做比较,这两者永远不可能相等,所以循环会一直执行。正确写法应该是判断输入是否不在允许的选项范围内:while new_custom not in ["y", "n"]。字符串方法调用错误:
input("are you a new customer y/n \n").lower里的.lower缺少括号,这会让new_custom存储的是lower方法本身(一个对象),而非输入字符串的小写形式。后续判断new_custom == "y"或"n"永远不成立,循环无法退出。需要改成.lower()来调用方法,得到转换后的小写字符串。
另外还有一个潜在问题:代码中使用的miles变量未定义,运行时会抛出NameError,需要确保在使用前为miles赋值。
修复后的代码示例:
new_custom = "" miles = float(input("请输入行驶里程: ")) # 先获取里程数值 while new_custom not in ["y", "n"]: new_custom = input("are you a new customer y/n \n").lower() if new_custom == "y": if miles <= 5: print(7) else: print(7 + ((miles - 5) * 2)) elif new_custom == "n": if miles <= 5: print(8) else: print(8 + ((miles - 5) * 2))
内容的提问来源于stack exchange,提问作者muhammad ingar
相关产品推荐
相关产品推荐

