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