如何让代码拒绝无效输入并重复提示(仅使用循环实现)
如何让代码拒绝无效输入并重复提示(仅使用循环实现)
看起来你现在的问题是,只要输入不是"y",不管是无效内容还是"n",循环都会直接退出对吧?咱们来调整一下逻辑,核心就是在获取用户输入的时候,加一个小循环来校验输入的有效性,直到用户输入"y"或者"n"为止。
先说说你现有代码的问题:当前逻辑里,输入后只判断了如果是"n"就break,但如果是其他无效内容(比如"abc"、"123"这类),sYesOrNo就不等于"y",外层的while循环条件不满足,自然就退出了,这显然不是你想要的效果。
下面是修改后的代码,完全只用循环实现,没有用到函数:
sYesOrNo = "y" while sYesOrNo == "y" : fSalesPrice = getFloatInput("Enter property sales value: ") fProperty_Values.append(fSalesPrice) # 新增内层循环:强制用户输入有效的Y/N while True: sYesOrNo = input("Enter another value Y or N: ").lower() # 检查输入是否在允许的选项里 if sYesOrNo in ("y", "n"): break # 输入无效时给出提示,让用户重新输入 print("Invalid input! Please enter Y or N only.") if sYesOrNo == "n" : break
简单解释下修改的关键点:
- 新增的内层
while True是个无限循环,它会一直运行,直到用户输入了"y"或者"n"——只要输入不在这两个选项里,就会打印错误提示,然后再次弹出输入框。 - 这样处理后,外层循环只会在两种情况下变化:用户输入"y"时继续下一轮录入,输入"n"时break退出;无效输入会被内层循环完全拦住,根本不会影响外层循环的执行逻辑。
备注:内容来源于stack exchange,提问作者RLA




