[英]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.