如果ELSE语句在python中无法正常工作

时间:2019-06-10 17:23:55

标签: python-3.x

我是Python的新手,正在尝试使用ifelse语句创建一个权重转换器。

这应该要求用户输入以磅(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')

这是屏幕截图:

enter image description here

4 个答案:

答案 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")

See the Reference

答案 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'):

我希望这会有所帮助。