You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 14:10:34