2016-08-13 102 views
-4

我想了一個簡單的程序,並不斷收到此特定錯誤:NameError:名字「user_choice1」沒有定義

line 34, in <module> 
user_choice1 == input("Do you want to exit or continue searching?") 
NameError: name 'user_choice1' is not defined 

下面是一段代碼導致錯誤:

while True: 
choice = input("Do you want to add items?") 
if choice == "y": 
    add_items() 
    more = input("Do you want to add more items?") 
    if more == "y": 
     add_items() 
    else: 
     while True: 
      user_choice = input("Adding items finished. Do you want to search items or exit?") 
      if user_choice == "search": 
       search_item() 
       while True: 
        user_choice1 == input("Do you want to exit or continue searching?") 
        if user_choice1 == "continue": 
         search_item() 
         continue 
        elif user_choice1 == "exit": 
         sys.exit() 
        else: 
         break     
      elif user_choice == "exit": 
       sys.exit 
      else: 
       continue 


elif choice == "n": 
    search_item() 
    while True: 
     user_choice2 = input("Searching finished. Do you want to continue or exit?") 
     if user_choice2 == "continue": 
      break 
      continue 
     elif user_choice2 == "exit": 
      sys.exit() 
     else: 
      continue 

elif choice == "exit": 
    sys.exit() 

else: 
    print("Invalid Choice") 

什麼導致此錯誤?我正在使用Python 3.5.2。 此外,有沒有更好的方式來編寫代碼,有沒有一種方法來優化此代碼?

回答

1

在Python中,使用雙等號==是對等式的邏輯測試。使用單等於=是一項任務。

所以你要做的是告訴Python檢查user_choice1是否等於input聲明。這是正確地告訴你,你還沒有定義這個變量。

x = 4 #assigns the value 4 to x 
y = 4 #assigns the value 4 to y 
x == y #returns True 
x == 7 #returns False 

它看起來像你在幾個地方重複這個錯誤,所以回去,並切換到一個平等的所有人。

+0

我不知道我錯過了這個。我覺得很愚蠢。感謝兄弟的幫助。我想我需要一些睡眠:) –

+1

我知道你的意思,但它更準確地說,你告訴Python來檢查'user_choice1'是否等於'input'函數返回的值。順便說一句,我們通常不會爲編寫錯誤的問題編寫完整的答案,因爲它們不太可能幫助未來的讀者帶來類似的問題:他們不太可能通過谷歌搜索找到這個問題。 –

相關問題