给出一个权重。它可以是磅或公斤。然后代码相应地转换(即磅到公斤;公斤到磅(。在代码中,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公斤。代码仍然执行if语句,尽管所提供的单元不是"if";L";或";l";。
然后我将if语句调整为:
if unit == "L" or unit == "l":
现在它给出了正确的132.0磅
我试着浏览了在线教程和笔记,但仍然不明白为什么第一个代码不起作用,为什么第二个代码起作用。。。
基本思想是"l〃;是一个真实的价值
> if unit == "L" or "l":
在你调整你的代码之前,它会返回:你是27.0kg。尽管提供的单位不是",但代码仍然执行if语句;L";或";l〃;因为您没有指定是否有任何变量等于(比较运算符(";l〃;是否。所以在执行时,它总是执行真理是一种真理的价值。由于它是OR运算符,如果单元==";L";一个操作数为真,如果单位="L";但另一个操作数始终为true,因此if语句将运行。
如果您对AND运算符做了同样的操作,它就会执行else语句。
这里有一个例子:
输入:
> if 'l' or 'L':
> print("HI")
> else:
> print("HELLO")
输出:HI
这里的输出总是"0";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,并且只需要"True";l〃;执行True,所以它执行else语句。
真诚的价值观:根据Python文档:默认情况下,对象被视为true。真诚的价值观包括:1.非空序列或集合(列表、元组、字符串、字典、集合(
2.非零的数值
3.真