Python3在函数中定义变量
我正在编写自己的代码来加密/解密消息,一切正常。现在我只是想整理一下代码,我还想添加错误捕获。我想在一个函数中捕获这个错误,这样我就不必在一个代码块中键入6次错误捕获Python3在函数中定义变量,python,function,Python,Function,我正在编写自己的代码来加密/解密消息,一切正常。现在我只是想整理一下代码,我还想添加错误捕获。我想在一个函数中捕获这个错误,这样我就不必在一个代码块中键入6次错误捕获 c = 1 list = ['Y', 'N'] test1 = "H" def f(test1): while c == 1: try: test1 = raw_input("Input something yo")
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成为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
回溯(最近一次呼叫最后一次):
文件“FuncTest.py”,第19行,在
a(测试1)
NameError:未定义名称“test1”
有没有办法解决这个问题?提前谢谢大家!: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
您可能希望尝试不同的返回值,而不是引发错误。不确定官方的智慧是什么,但从易于重用的角度来看,返回元组可能更容易处理,并且避免在验证函数中定义错误(即,您可能希望根据所处程序的不同部分进行不同的处理).为什么要将值传递给函数,然后立即丢弃它?将原始输入移到函数调用之外并传递,或者删除传递参数的要求。现在你正在传递一个未定义的变量作为参数,因此你的错误。基思,我不知道你的意思。我知道有点乱,我会把它清理干净,但现在这只是一个测试。我只想知道如何返回值test1并将其设为a,因此如果a为“Y”,它将打印“是”,否则它将打印“否”。它似乎没有返回值,因为它总是打印“否”。您将得到一个test1未定义错误,因为您正在删除它的定义。(示例的第3行)。看到我更完整的答案了吗?我不在手机上