我正在處理我自己的代碼來加密/解密消息,並且所有工作都正常。現在我只是想整理一下代碼,並且還試圖添加錯誤捕獲。我想讓這個錯誤在一個函數中捕獲,所以我不必在一個代碼塊中輸入6次錯誤捕獲。Python 3定義函數內的變量
c = 1
list = ['Y', 'N']
test1 = "H"
def f(test1):
while c == 1:
try:
test1 = raw_input("Input something yo")
if test1 not in list:
raise ValueError("Enter Y or N")
else:
return test1
break
except ValueError as error:
print (error)
a = f
a(test1)
a = test1
print (a)
if a == "Y":
print ("Yes")
else:
print ("No")
這是一個測試來練習這樣做。但是,我無法成功地做到這一點。因此,在這段代碼中,我想定義一個「Y」或「N」作爲用戶輸入。我想要一個調用函數f,然後test1是變量名稱。在函數運行後,我想要一個test1。因此,如果功能正在運行並且用戶輸入「Y」,則會打印「是」。如果不是,則會打印「否」。對於我的實際腳本,我需要將多個值定義爲該函數的返回值,因爲我不想多次輸入錯誤捕獲過程。如果用戶沒有輸入「Y」或「N」,那麼他們必須再次輸入,以便部分工作。它只是返回我遇到麻煩的值test1。
目前,test1的始終是「H」,但如果我沒有那行,我得到這個錯誤:
Traceback (most recent call last):
File "FuncTest.py", line 19, in <module>
a(test1)
NameError: name 'test1' is not defined
任何想法如何,我可以解決這個問題?在此先感謝大家! :D
爲什麼你傳遞一個值給函數,然後立即丟棄它?將原始輸入移動到函數調用之外並傳遞該函數,或者刪除傳遞參數的要求。此刻你傳遞一個未定義的變量作爲參數,因此你的錯誤。 –
Keith我不確定你的意思。我知道這有點麻煩,我會清理它,但現在這只是一個測試。我只想知道如何返回值test1並使其成爲a,所以如果a是「Y」,它將打印「是」,否則它將打印「否」。它似乎沒有返回值,因爲它總是打印「否」。 – Javid
您正在獲取test1未定義的錯誤,因爲您正在移除它的定義。 (你的例子中的第3行)。現在看到我的更全面的答案,我不在手機上 –