繁体   English   中英

Python 3 在函数中定义变量

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM