如何解决未绑定的本地错误:分配前已引用本地变量“ answer”

时间:2019-06-07 18:06:20

标签: python

我想开发一个脚本,该脚本可以根据用户输入来转换测量单位。并且脚本运行到最后一个代码后,它给了我这个错误(未绑定本地错误:分配前引用了本地变量'answer')

python v是3.7.3。 正如我上面提到的(并且是python的新手),该脚本是根据用户输入来转换测量单位的,但是它给了我这个错误。所以 我尝试了不同的方法,将打印功能从底部移到了我的函数中,该函数可以处理错误,但不适用于实际脚本,因为它会给我“无”提示

python

def convart(MU , oMU , NUM):
    if MU.lower == "in" and oMU.lower =="cm":
        answer= float(NUM)* 2.54
        print("{} {} is = {} {}".format(NUM,MU.upper,MUcm,oMU.upper))
    elif MU.lower == "cm" and oMU.lower =="in":
        answer= float(NUM) / 2.54
        print("{} {} is = {} {}".format(NUM,MU.upper,answer,oMU.upper))
    # return ("{} {} is = {} {}".format(NUM,MU.upper,answer,oMU.upper))

Fmu = input("Please Enter your Measuring unit >>")
Smu= input("Please Enter Measuring units you want to convert to >>")
number = input(" Enter the number >>")
print(convart(Fmu,Smu,number))

“我希望2 in的输出为= 5.08 cm,但实际输出为“ None”

2 个答案:

答案 0 :(得分:0)

将您对lower的所有调用替换为lower()(并用upper替换upper()),因此您的函数应如下所示:

def convart(MU , oMU , NUM):
    if MU.lower() == "in" and oMU.lower() == "cm":
        answer = float(NUM) * 2.54
        print("{} {} is = {} {}".format(NUM, MU.upper(), MUcm, oMU.upper()))
    elif MU.lower() == "cm" and oMU.lower() == "in":
        answer = float(NUM) / 2.54
        print("{} {} is = {} {}".format(NUM, MU.upper(), MUcm, oMU.upper()))

但是,您不会从函数中返回任何内容,即:默认情况下它会返回None,因此print(convart(...将显示None。因此,您的函数必须返回变量answer

def convart(MU , oMU , NUM):
    answer = 0 # any default value to be returned if neither tests are true
    if MU.lower() == "in" and oMU.lower() == "cm":
        answer = float(NUM) * 2.54
        print("{} {} is = {} {}".format(NUM, MU.upper(), MUcm, oMU.upper()))
    elif MU.lower() == "cm" and oMU.lower() == "in":
        answer = float(NUM) / 2.54
        print("{} {} is = {} {}".format(NUM, MU.upper(), MUcm, oMU.upper()))
    return answer

答案 1 :(得分:0)

lower和upper是方法,而不是关键字。因此,将lower&upper更改为lower()和upper()。

  

“ any_string” .lower()/ upper()