首页 > 解决方案 > 循环中的 if 语句,结果总是返回 True

问题描述

编辑:感谢所有回答问题的人,我现在知道我做错了什么,你的解释都非常有帮助!(我想投票,但显然我没有足够的声誉)。也很抱歉,我知道其他人可能会问我问题,我只是找不到,猜是不知道要搜索什么。

第一篇文章,如果这是一个非常初学者的错误,我很抱歉,但我整个晚上都在摸索,并且无法为我的生活找出问题所在。

我试图在一个双 for 循环中运行下面的 if 语句,该循环遍历一个列表并且不能让它返回 false。我已经尝试查找它并认为它可能是数据类型比较问题,但我已经仔细检查过(因此为什么所有内容都被声明为 int)并且这似乎不是问题。一切都是整数,所以我有点失落!

您可以提供的任何帮助将不胜感激!谢谢!

for search_site in range(len(search_list)):
    for product in range(len(product_list)):
        if search_site != int(1) or int(10) or int(13):
            print(search_site)
            print("True")
        else:
            print("False")

我已经使用打印来查看正在比较的内容,我通常会得到这样的结果(为简单起见,删除了重复项):

0 真 1 真 2 真 3 真 4 真 5 真 6 真 7 真 8 真 9 真 10 真 11 真 12 真 13 真

标签: pythonif-statement

解决方案


if search_site != int(1) or int(10) or int(13):

这并不意味着你认为它意味着什么。它的意思是

if (search_site != 1) or 10 or 13:

也就是说,如果search_site不等于 1,或者如果 10 不等于 0,或者如果 13 不等于 0,则 if 语句为真。考虑

if search_site != 1 or search_site != 10 or search_site != 13:

或者,更简洁地说,

if search_site not in [1, 10, 13]:

推荐阅读