在我玩的python游戏中,我有一个菜单,你可以选择玩游戏,加载已保存的游戏,保存游戏,然后退出。数字输入工作正常,但是当您不小心或故意输入字母或符号时,它会返回错误:
Choice = eval(input())
File "string", line 1, in module
NameError: name 'y' is not defined"
我该如何解决此问题?
发生错误的函数:
def DisplayMenu():
print('1. Start new game')
print('2. Load game')
print('3. Save game')
print('9. Quit')
print('Please enter your choice: ')
def GetMainMenuChoice():
Choice = eval(input())
return Choice
if not (Choice in ['1','2','3','4','9']):
print("\n Invalid choice. Enter your option again. \n")
Choice = False
else:
Choice = True
答案 0 :(得分:0)
如果您使用的是python2,则需要raw_input
,而不使用eval,如果需要int等,则只需转换为int ...除非您有变量y
在您尝试eval
字符串y
的某个地方定义时,您将看到错误,无论是否使用eval都应该很少。您的列表中包含字符串的事实会导致尝试使Choice
和int
不合逻辑。
choice = raw_input() # input python3
if choice not in {'1','2','3','4','9'}
....
对变量/函数名称使用小写。
您可能还会发现while循环是一种更好的方法:
def get_main_menu_choice():
while True:
choice = raw_input("Please choose an option")
if choice not in {'1','2','3','4','9'}:
print("Invalid choice. Enter your option again.")
else:
return choice