Python条件判断逻辑问题:输入'l'为何执行Kg单位转换分支?
问题原因分析
你的代码里的条件判断逻辑写错了。Python中or运算符的两边需要是完整的布尔表达式,而你写的KorL == "K" or "k",实际上会被解析成(KorL == "K") or "k"。由于非空字符串"k"在Python中会被视为True,所以这个条件永远成立——不管你输入的是l还是其他字符,第一个if分支都会被执行,这就是为什么输入l时会走Kg转换的原因。
正确的写法示例
这里提供几种可行的修正方式:
方式一:完整的布尔表达式
把每个判断都写全,明确对比变量和每个目标值:
weight = float(input("Weight: ")) KorL = input("(K)gs or (L)bs: ") if KorL == "K" or KorL == "k": convert = weight / 2.2 # 建议用/而非//,//是取整除法,可能不符合转换精度需求 print("Weight in Kg is: ", convert) elif KorL == "L" or KorL == "l": convert1 = weight * 2.2 print("Weight in Lbs is: ", convert1)
方式二:统一转为小写/大写后判断
把输入的字符转为小写(或大写),只需要对比一次:
weight = float(input("Weight: ")) KorL = input("(K)gs or (L)bs: ").lower() # 统一转为小写 if KorL == "k": convert = weight / 2.2 print("Weight in Kg is: ", convert) elif KorL == "l": convert1 = weight * 2.2 print("Weight in Lbs is: ", convert1)
方式三:用in判断成员关系
判断输入的字符是否在目标列表里:
weight = float(input("Weight: ")) KorL = input("(K)gs or (L)bs: ") if KorL in ["K", "k"]: convert = weight / 2.2 print("Weight in Kg is: ", convert) elif KorL in ["L", "l"]: convert1 = weight * 2.2 print("Weight in Lbs is: ", convert1)
内容的提问来源于stack exchange,提问作者Kiwax11
相关产品推荐
相关产品推荐

