python-3.x - 在while循环内的if语句中无法访问代码
问题描述
我试图制作一个带有 while 循环的菜单,以不断重复,直到输入有效的输入。这是我拥有的代码:
print("1) Play game")
print("")
print("2) Instructions")
print("")
print("3) Quit")
print("")
while True:
try:
menu = int(input("Make a selection: "))
except ValueError:
print("Sorry, your input was not valid")
continue
if menu > 3 or menu < 1:
print("Please use a number in the range 1-3")
continue
else:
break
if menu == 1:
print("Lets go!")
elif menu == 2:
print("Lets go!")
else:
print("Quitting...")
“如果”,它说“如果菜单> 3或菜单< 1:”给出了一个错误,说明:
“无法访问的代码pylint(无法访问)”
请帮助,将不胜感激。
解决方案
问题1:continue语句
为了帮助您理解您的代码,我使用流程图为您绘制线条。
但是,如果将 continue 移到 except 语句中,则代码将在成功的 try 语句上传递到 if 语句。
挑战在于,代码永远不会进入if menu > 3....
语句,它总是进入try
orexcept
然后执行continue
. 所以它的循环本身跳过了if menu > 3 ....
语句。这意味着,您永远不会退出循环,因为它永远不会执行break
。
问题 2:您说您删除了 continue 语句。
当您从语句中删除 continue 时,您会创建一个新问题。如果代码进入 except 子句,则变量菜单没有正确创建。因此,当它转到 时if menu > 3 ...
,尚未定义变量(由于 except 子句),这会给您一个新错误。
解决方案:
我建议将语句移到continue
子句except
中。这将解决问题。如果菜单的输入有错误,它将返回到 while 语句。如果成功,那么您if menu > 3 ...
将正确执行。
修改后的正确代码将是:
while True:
try:
menu = int(input("Make a selection: "))
except ValueError:
print("Sorry, your input was not valid")
continue #move this inside except
if menu > 3 or menu < 1:
print("Please use a number in the range 1-3")
continue
else:
break
if menu == 1:
print("Lets go!")
elif menu == 2:
print("Lets go!")
else:
print("Quitting...")
推荐阅读
- java - 需要了解的字符串、字符串常量池和字符串实习生方法
- csv - 定期导入 .CSV 文件 HDFS
- c# - 使用 ASP.NET 将 HTML 内容转换为 PDF
- android - Android 7.0 中的 MQTT java.io.EOFException
- keras - 如何在 Keras 中将标量添加到张量或从标量创建张量?
- jquery - 在 ember-js 中加载微调器
- django - connection.queries 没有返回任何东西 django
- javascript - 在函数内调用函数(调用函数)
- azure - 使用 API 在 Azure Key Vault 中创建密钥
- c++ - 如何制作产生同一类对象的类