如何解决Python 逻辑 (OR) 和比较 (==)
给出一个权重。 它可以以磅或公斤为单位。 然后代码相应地转换(即磅到公斤;公斤到磅)。 在代码中,lbs 具有单位输入:l 或 L。 kg 有单位输入:k 或 K。
weight = 60
unit = "k"
if unit == "L" or "l":
weight_kg = weight * 0.45
print(f"You are {weight_kg}kg")
else:
weight_lb = weight * 2.2
print(f"You are {weight_lb}lbs")
但这会返回:您的体重为 27.0 公斤。 尽管提供的单位不是“L”或“l”,但代码仍然执行 if 语句。
然后我将 if 语句调整为:
if unit == "L" or unit == "l":
它现在给出了正确的 132.0 磅。
我试过浏览在线教程和我的笔记,但仍然不明白为什么第一个代码不起作用,为什么第二个代码起作用......
解决方法
基本思想是“l”是一个truthy Value
> if unit == "L" or "l":
在您调整代码之前,它返回:您是 27.0 公斤。并且代码仍然执行 if 语句,尽管提供的单位不是“L”或“l”,因为您没有指定任何变量是否等于(比较运算符)“l”。所以在执行时,它总是执行 True 作为一个真值。因为它是 OR 运算符,如果 unit=="L" 一个操作数为真,如果 unit!="L" 仍然另一个操作数始终为真,所以 if 语句运行。
如果你用 AND 运算符做同样的事情,它就会执行 else 语句。
这是一个例子:
输入:
> if 'l' or 'L':
> print("HI")
> else:
> print("HELLO")
输出: 嗨
这里的输出总是“HI”,因为运算符的两边总是执行 True。
尝试使用 AND 运算符:
输入:
> weight = 60 unit = "k"
>
> if unit == "L" and "l":
> weight_kg = weight * 0.45
> print(f"You are {weight_kg}kg")
> else:
> weight_lb = weight * 2.2
> print(f"You are {weight_lb}lbs")
输出: 你是 132.0 磅
我无意破坏这里的逻辑。我只是想告诉你,使用 AND 运算符,两边都需要 True,只有“l”执行 True,所以它执行 else 语句。
真实的价值观: 根据 Python 文档: 默认情况下,对象被视为真。 真实值包括: 1.非空序列或集合(列表、元组、字符串、字典、集合)。
2. 不为零的数值。
3.真
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。