我正在編寫俄勒岡州越野游戲,這是我所擁有的導致問題的代碼,我不知道為什么它會出現問題。我想要做的是,如果他們輸入的名稱包含列表中的單詞,則會將變量 easter_mode 設置為 1,如果不這樣做,則會將 easter_mode 設置為 0。需要出現在列表中的單詞是:(Sturtz,sturtz,Nate,nate)謝謝#asking nameplayer_name = input('What is your name:')while len(player_name) >= 0: if len(player_name) > 1: print("Weclome" + str(player_name)) print('Which mode do you want to play?') mode_choice = input('(easy) More modes comming soon:') break if len(player_name) == 1: player_name_choice = input(str(player_name)+"? Are you kidding me? Only one letter? You might regreat it (Y/N):") if player_name_choice == "y" or player_name_choice == "Y": print("Ok Your Choice!!...") mode_choice = 'easter' break if player_name_choice == "n" or player_name_choice == "N": player_name = input('What is your name:') else: print("You do not type anything, try again") player_name = input('What is your name:')#Check Easter Egg Nameseaster_names = ["nate sturtz", "Nate Sturtz", "Nate", "nate", "Sturtz", "sturtz"]if player_name in easter_names: easter_mode = 1else: easter_mode = 0#easter eggs for nameif easter_mode == 1: year_set = 2005 mode_choice = 'easter'else: year_set = input('Enter a year whatever you like:') if year_set.isdigit(): return_num = 0 else: return_num = 1 while return_num == 1: print('Error,please try again!') year_set = input('Enter a year whatever you like:') if year_set.isdigit(): return_num = 0 else: return_num = 1 year_set = int(year_set)當我運行完整文件時,我得到Traceback (most recent call last): File "Oregon.py", line 64, in <module> player_name = input('What is your name:') File "<string>", line 1, in <module>NameError: name 'nate' is not defined您可以在 Github 上查看完整代碼https://raw.githubusercontent.com/nsturtz/Oregon-Trail/master/Oregon.py
2 回答

墨色風雨
TA貢獻1853條經驗 獲得超6個贊
您將在 Python 2 中收到此錯誤。在 Python 2 中,input()
使用輸入的確切值。
在您的示例中,您正在輸入nate
而不是'nate'
。前一個值是一個變量名(在代碼中未定義,因此是NameError
),而后者是一個字符串。
在 Python 3 中,input()
行為如您所假設,并將字符串傳遞給您的代碼。
如果您確定要使用 Python 2,您可以替換input()
為raw_input()
,它將把您的輸入解釋為字符串而不是變量名。

暮色呼如
TA貢獻1853條經驗 獲得超9個贊
在Python 2下,您可以使用raw_input
而不是input
阻止Python將用戶輸入解釋為Python代碼。
然而,由于 Python 2 已被棄用,我強烈建議不要使用它1。請改用 Python 3,它可以input
按預期工作。
1當然,維護遺留產品除外。但這似乎與這里無關。
添加回答
舉報
0/150
提交
取消