如果变量不等于lis中的任何项

2024-10-01 15:40:24 发布

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

如果我有清单:

mobsdmg = [9, 708, 3001]

然后我有一个包含1500行mob的文档,当我在for循环中读取这些行时,我想检查是否有任何mob dmg等于mobsdmg数组中的任何项,如果它们是,那么就做些什么,否则就做其他的事情。在

我当前的问题是现在,它会按预期进行检查,如果有暴徒存在,它会写:

^{pr2}$

但是如果它为false,它将在执行下一行之前执行else语句3次。在

print(mobname + "is not a match")
print(mobname + "is not a match")
print(mobname + "is not a match")

我想检查数组中的所有项,如果它们都是false,那么程序应该做些什么。在

代码如下:

for lines in mobs.txt:
    for items in mobsdmg:
          if items in lines:
             print(mobname + "is perfect")
          else:
             print(mobname + "is not a match")

Tags: in文档falseforismatchnotitems
1条回答
网友
1楼 · 发布于 2024-10-01 15:40:24

代码中的问题是,在搜索完所有mobsdmg列表后,只能打印出项目不匹配。也就是说,在for循环之后,只能断定它不是匹配项。正如您所说,您只想打印不匹配的“如果所有这些都是错误的”,那么您的print语句不能在循环中,因为您没有完成对所有mobsdmg的检查:

更正如下:

for lines in mobs:
    found = False
    for items in mobsdmg:
          if items in lines:
             print(mobname + "is perfect")
             found = True   # found a match
             break
    if not found:      # if a match wasn't found in list, print this
        print(mobname + "is not a match")

或者,用Python式的方法来做这件事,而不需要附加条件:

^{pr2}$

其他问题:

你程序中的一行是什么样子的,是什么mobs.txt?它是字符串还是整数的列表?另外,什么是mobname?你似乎永远不会在循环的行之间改变它。在

相关问题 更多 >

    热门问题