[英]Python 3 defining a variable within a function
我正在編寫自己的代碼來加密/解密消息,並且一切正常。 現在我只是想稍微整理一下代碼,我也在嘗試添加錯誤捕獲。 我想在一個函數中捕獲這個錯誤,這樣我就不必在一個代碼塊中輸入 6 次這樣的錯誤捕獲。
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")
這是練習這樣做的測試。 但是,我還沒有能夠成功地做到這一點。 因此,在此代碼中,我想將 a 定義為“Y”或“N”作為用戶輸入。 我想要 a 調用函數 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
在刪除 test1 的定義時刪除示例的第 3 行時會出現錯誤。
沒有必要將值傳遞給函數以返回它們,相同代碼的更一般應用如下:
def wait_and_validate (validation_list):
while True:
the_input= raw_input("Input something yo")
if the_input not in validation_list:
raise ValueError("Input not In Validation List")
return the_input
try:
valid_input = wait_and_validate(['Y', 'N'])
except ValueError as error:
print(error)
#do stuff with valid_input
您可能希望嘗試不同的返回值而不是引發錯誤。 不確定官方的智慧是什么,但從易於重用的角度來看,返回元組可能更容易處理並節省在驗證函數中定義錯誤(即,您可能希望根據程序的不同部分對其進行不同的處理)重新進入)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.