赋值语句未传递函数python 3.1

赋值语句未传递函数python 3.1,python,Python,我在Windows10设备上使用Python3.1,遇到了一个问题 当我使用在我所做的另一个函数中定义的赋值时,该赋值不起作用。我的问题在于一长串代码,但我制作了一个较小的版本来帮助解释发生了什么 def test(): """ takes input """ f = input("1 or 2? ") if f == 1: t = "wow" if f == 2: t = "woah" def test2(t): """

我在Windows10设备上使用Python3.1,遇到了一个问题

当我使用在我所做的另一个函数中定义的赋值时,该赋值不起作用。我的问题在于一长串代码,但我制作了一个较小的版本来帮助解释发生了什么

def test():
    """ takes input """
    f = input("1 or 2? ")
    if f == 1:
        t = "wow"
    if f == 2:
        t = "woah"

def test2(t):
    """ Uses input """
    print(t)

def main():
    test()
    test2(t)

main()
input("\n\nPress enter to exit" )
我不知道为什么程序在选择输入后不使用赋值t

我的目标是使用第一个函数的输入来更改第二个函数的结果。当然,我原来的程序比一个简单的打印函数更复杂,但我知道这个演示会把我的程序搞乱。我的原始程序处理打开.txt文件,输入是选择要打开的文件


任何帮助都将不胜感激

您必须返回t才能在test2中使用它:

def test():
    """ takes input """
    f = input("1 or 2? ")
    if f == '1':
        t = "wow"
    if f == '2':
        t = "woah"
    return t  # This returns the value of t to main()

def test2(t):
    """ Uses input """
    print(t)

def main():
    t = test()  # This is where the returned value of t is stored
    test2(t)    # This is where the returned value of t is passed into test2()

main()
input("\n\nPress enter to exit" )

您的代码有很多问题……f==1将无法工作,因为f是一个字符串,如果在mainUse global t中没有将t定义为函数块doc之后的第一行,您如何将t传递给test2,在这里您要访问全局变量t。仅当您更改它时才需要它。=>在函数测试中,或者您应该从测试中返回t,并将值分配给main中的t。在测试过程中,字符串部分是我的错误,但传递t是我试图解决问题的原因。您能解释一下怎么做吗?@Collingpc您需要在测试函数的末尾添加行return t,正如@paperazzo79在回答中指出的那样,这允许将t的值返回到主函数。但是,为了在main函数中使用该t值,还需要将main的第一行更改为t=test。不要忘记更新if语句以检查字符串值。如果f='1':和如果f='2':我改变了这一点和其他人指出的int/string问题,但它仍然给出相同的错误