繁体   English   中英

返回赋值前引用的变量

[英]Return Variable Referenced Before Assignment

这是我的代码:

    def HTR(S, T):



        while S == 1:
            Z = 60
            if (S == 2):
                Z = 60 + (60*.5)
            elif (S == 3):
                Z = 60*2
            else:
                Z = 0


        return Z

这是我得到的错误:

        return Z
UnboundLocalError: local variable 'Z' referenced before assignment

您必须在进入while loop之前定义Z 否则,如果S != 1 ,则在尝试返回时不会进入循环并且Z未定义:

def HTR(S, T):

    Z = None            #<-- choose the value you wish to return is S != 1

    while S == 1:
        Z = 60                 #<-- Z is set to 60
        if (S == 2):               #<-- S already equals 1 at this point
            Z = 60 + (60*.5)
        elif (S == 3):             #<-- S already equals 1 at this point
            Z = 60*2
        else:
            Z = 0              #<-- then Z is always set to zero  
                               # this is probably not the behavior you are expecting!


    return Z
def HTR(S, T):
    Z = -1  # init Z
    while S == 1:
        Z = 60
        if (S == 2):
            Z = 60 + (60*.5)
        elif (S == 3):
            Z = 60*2
        else:
            Z = 0

    return Z

在您的代码中,如果 S 不是 1,则不会设置 z。您需要为 Z 提供一个初始值。如果 S 不是 1,则将返回 -1。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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