python for循环with if语句不返回项

2024-05-15 02:49:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试通过一些基本的练习来学习python。我有一份我们已经订购的在途零件清单,还有一份我们目前缺货的零件清单。我想能够发送一份清单给供应商,我们需要什么-但我不想创建重复的订单,因为事实上,在订单上的零件,列为缺货。你知道吗

我把这个基本的程序放在一起,它查看缺货的商品列表,并且只打印缺货列表中的商品,但是onorder列表中不存在的商品,这样如果它已经订购,我们就不会再订购了。但是,它什么也不输出。你知道吗

onorder = ["A1417", "A1322", "ISL6259", "LP8545B1SQ", "PM6640", "SLG3NB148V", "PD4HDMIREG", "338S1201", "SN2400B0", "AD7149", "J3801", "J4502", "IPRO97B"]
outofstock = ["ISL6259", "LY-UVH900", "triwing", "banana-to-alligator", "LP8548B1SQ", "EDP-J9000-30-PIN-IPEX", "J3801", "LT3470", "PM6640", "SN2400B0", "IPRO97B", "SLG3NB148V", "SN2400AB0", "usbammeter", "821-00814-A", "J5713", "343S0645", "PMCM4401VPE", "J4502", "PMD9645", "J9600", "J2401", "AD7149", "593-1604", "821-1722", "LM3534TMX", "U4001"]

for part in onorder:
    if (part in onorder) == False and (part in outofstock) == True:
    print (part)

它不打印任何内容,即使outofstock中有不在onorder中的条目。你知道吗

如果我在循环外尝试这个,它会工作并打印onorder列表中的每个部分。你知道吗

for part in onorder:
    print (part)

如果我在循环外尝试这个,它也可以工作并打印triwing,因为triwing确实在outofstock列表中。你知道吗

if ('triwing' in outofstock) == True:
    print ("triwing")

但是,for循环中的程序不返回任何内容。我错过了什么?你知道吗


Tags: in订单程序列表for商品printpart
3条回答

哦!适当的代码是

for part in outofstock:
if (part not in onorder):
    print (part)

这样它就可以打印出我需要订购的缺货商品,除非它们已经在订购了。你知道吗

我真不敢相信我无缘无故地把事情搞得太复杂了。非常感谢你指出我错的地方。事后看来,这是个愚蠢的问题。你知道吗

for part in onorder:
    if (part in onorder) == False ...

这没有道理。因为您正在迭代onorder的每一个元素,所以您永远不会得到不在onorder中的part。因此,print语句没有被执行并不是奇迹。你知道吗

你翻错单子了。要在outofstock中查找项,而不是在onorder中查找项,请在outofstock上循环:

for part in outofstock:
    if part not in onorder:
        print(part)

更简单的方法是将两个列表转换为集合,并计算差异:

print(set(outofstock) - set(onorder))

相关问题 更多 >

    热门问题