为什么我的 Python 代码没有正确计算布尔值?
Why is my Python code not evaluating booleans correctly?
我是 Python 的初学者,我在 YouTube 上看到了 Cory Schafer 关于布尔值和条件的教程。当他试图显示 Python 认为哪些值是 False 时,他有一段话。他一个一个地测试它们,但我想知道是否有更多 efficient/fun 的方法来做到这一点,所以我尝试想出这个 for 循环语句。我期望输出为 8 行 Evaluated to False,但我一直得到 Evaluated to True。有人可以启发我吗?谢谢!
condition = (False, None, 0, 0.00, '', (), [], {})
for i in condition:
if condition: # It is assumed that condition == true here, right?
print('Evaluated to True')
else:
print('Evaluated to False ')
#OUT:
Evaluated to True
Evaluated to True
Evaluated to True
Evaluated to True
Evaluated to True
Evaluated to True
Evaluated to True
Evaluated to True
将 if condition
更改为 if i
。您想要测试从 condition
元组中提取的每个单独项目,而不是测试整个元组 8 次。
更清晰的命名可以避免这个问题。我建议始终为集合提供复数名称,并在末尾添加 s
。那你可以这样写,这样读起来更自然:
conditions = (False, None, 0, 0.00, '', (), [], {})
for condition in conditions:
if condition: # It is assumed that condition == true here, right?
print('Evaluated to True')
else:
print('Evaluated to False ')
小心!您正在评估完整的元组,每次在您的循环中(因此,评估同一个对象)而不是单个项目。此外,您得到的是 True,因为非空的 lists/tuples/dictionaries 将始终评估为 True,与评估为 False 的空的相比,正如您在最后 3 次迭代中看到的那样。
你应该在评估为 i
而不是 condition
时更改行:
condition = (False, None, 0, 0.00, '', (), [], {})
for i in condition:
if i:
print('Evaluated to True')
else:
print('Evaluated to False')
这理所当然 returns:
Evaluated to False
Evaluated to False
Evaluated to False
Evaluated to False
Evaluated to False
Evaluated to False
Evaluated to False
Evaluated to False
在 if 语句中将条件替换为 i
condition = (False, None, 0, 0.00, '', (), [], {})
for i in condition:
if condition:
print("Evaluated to True")
else:
print("Evaluated to False")
我是 Python 的初学者,我在 YouTube 上看到了 Cory Schafer 关于布尔值和条件的教程。当他试图显示 Python 认为哪些值是 False 时,他有一段话。他一个一个地测试它们,但我想知道是否有更多 efficient/fun 的方法来做到这一点,所以我尝试想出这个 for 循环语句。我期望输出为 8 行 Evaluated to False,但我一直得到 Evaluated to True。有人可以启发我吗?谢谢!
condition = (False, None, 0, 0.00, '', (), [], {})
for i in condition:
if condition: # It is assumed that condition == true here, right?
print('Evaluated to True')
else:
print('Evaluated to False ')
#OUT:
Evaluated to True
Evaluated to True
Evaluated to True
Evaluated to True
Evaluated to True
Evaluated to True
Evaluated to True
Evaluated to True
将 if condition
更改为 if i
。您想要测试从 condition
元组中提取的每个单独项目,而不是测试整个元组 8 次。
更清晰的命名可以避免这个问题。我建议始终为集合提供复数名称,并在末尾添加 s
。那你可以这样写,这样读起来更自然:
conditions = (False, None, 0, 0.00, '', (), [], {})
for condition in conditions:
if condition: # It is assumed that condition == true here, right?
print('Evaluated to True')
else:
print('Evaluated to False ')
小心!您正在评估完整的元组,每次在您的循环中(因此,评估同一个对象)而不是单个项目。此外,您得到的是 True,因为非空的 lists/tuples/dictionaries 将始终评估为 True,与评估为 False 的空的相比,正如您在最后 3 次迭代中看到的那样。
你应该在评估为 i
而不是 condition
时更改行:
condition = (False, None, 0, 0.00, '', (), [], {})
for i in condition:
if i:
print('Evaluated to True')
else:
print('Evaluated to False')
这理所当然 returns:
Evaluated to False
Evaluated to False
Evaluated to False
Evaluated to False
Evaluated to False
Evaluated to False
Evaluated to False
Evaluated to False
在 if 语句中将条件替换为 i
condition = (False, None, 0, 0.00, '', (), [], {})
for i in condition:
if condition:
print("Evaluated to True")
else:
print("Evaluated to False")