[英]NameError in dictionary-based switch case
我沒有使用python的經驗,所以我想我會開始考慮我的新興趣。 我有一個問題,當談到一個開關案例,python沒有,谷歌搜索后我發現大多數使用字典樣式方法,你可以在下面看到。 這是一個小的.py文件,我正在構建復制ATM風格的系統,只是為了讓我熟悉所有python的選項。
while True:
print ("Who are you?")
name = input().lower()
if re.match("^[A-Za-z]*$", name):
break
else:
print('Please enter a valid name')
print('Hello ' + name)
print("Please enter your PIN " + name)
pin = input()
accounts = {"stephen" : stephen,
"Dean" : Dean,
"Jennifer" : Jennifer,
"Liam" : Liam,
"Billie" : Billie,
"Decky" : Decky,
"Joel" : Joel,
}
accounts[name]()
def stephen():
if pin == 1234:
print("Pin Accepted")
else:
print("Wrong PIN")
def Dean():
if pin == 1344:
print("Pin Accepted")
else:
print("Wrong PIN")
現在的問題是,當我進入輸入引腳部分時,它返回時出現錯誤,說明如下:
options = {“stephen”:stephen,NameError:name'stephen'未定義
任何想法可能是什么? 看看這個例子,我覺得我的一切都是正確的,但是我無法通過Google搜索特定的錯誤找到答案。
由於您嘗試使用stephen
而導致錯誤,因此尚未定義。 在定義函數后創建該字典。
Python是一種解釋型語言 ,這意味着代碼是由解釋器逐行執行的,無需事先編譯。 因此,當您嘗試將其輸入字典時,未定義函數stephen
因為它僅在稍后的腳本中定義。 在將函數輸入字典之前定義函數stephen
,您的腳本將起作用。
accounts = {"stephen" : stephen,
"Dean" : Dean,
"Jennifer" : Jennifer,
"Liam" : Liam,
"Billie" : Billie,
"Decky" : Decky,
"Joel" : Joel,
}
1)您的accounts
字典中的值會導致錯誤。 無論是變量還是函數,都必須在使用前定義它們。
2)刪除account
詞典中的最后一個逗號
這里有一個簡單的樣本:
>>> mydict ={"a":A} # A is not defined, will raise Error
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'A' is not defined
>>> mydict ={"a":"A"} # A is string here, it is okay
>>> A = "A" # declares A and assigns value to it
>>> mydict ={"a":A} # good now.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.