我是Python的新手,正在尝试使用if
和else
语句创建一个权重转换器。
这应该要求用户输入以磅(lbs)或千克(kgs)为单位的重量和单位并进行换算,但是程序仅执行if
条件。
这是我的代码段:
weight = int(input("Weight = "))
unit = input('(L)bs or (K)')
if unit == "L" or "l":
print(f'You are {weight*0.45} kilograms')
elif unit == "K" or "k":
print(f'You are {weight*2.2} pounds')
else:
print('The converter is only for Kgs and Lbs')
这是屏幕截图:
答案 0 :(得分:1)
您必须在之前和之后“或”之前写完整条件 对于该行:
if unit == "L" or "l"
您必须写:
if unit == "L" or unit == "l"
还行:
elif unit == "K" or "k"
到
elif unit == "K" or unit == "k"
答案 1 :(得分:1)
您缺少括号。请熟悉Operator Precedence。
当前,您的if
语句正在由解释程序读取为:
if (unit == "L") or "l":
...
elif (unit == "K") or "k":
...
else:
...
,因此自if
起,第一个bool("l") == True
语句将始终为真。
执行此操作的正确方法是:
if unit in "Ll":
...
elif unit in "Kk":
...
else:
...
甚至更好:
unit = input('(L)bs or (K)g').lower()
if unit == "l":
...
elif unit == "k":
...
else:
...
答案 2 :(得分:1)
您需要在两行中进行更改:
weight = int(input("Weight: "))
unit = input("(L)bs or (K): ")
# if unit == "L" or "l": # OLD_LINE
if unit == "L" or unit == "l": # NEW_LINE
print(f"You are {weight*0.45} kilograms")
# elif unit == "K" or "k": # OLD_LINE
elif unit == "K" or unit == "k": # NEW_LINE
print(f"You are {weight*2.2} pounds")
else:
print("The converter is only for Kgs and Lbs")
答案 3 :(得分:0)
写时:
if unit == 'L' or 'l':
它被解析为:
if (unit == 'L') or ('l'):
等效于:
if (unit == 'L') or (bool('l') is True):
bool('l')
始终为真,这就是为什么elif
/ else
块都不被执行的原因。
这就是您想要的:
if unit == 'L' or unit == 'l':
如果您不想避免重复使用unit ==
,则可以将其重写为:
if unit.upper() == 'L':
甚至:
if unit in ('L', 'l'):
我希望这会有所帮助。