如果变量不等于列表中的任何项目

时间:2016-12-29 09:13:21

标签: python list python-3.x

如果我有一个清单:

mobsdmg = [9, 708, 3001]

然后我有一个包含大约1500行怪物的文档,当我在for循环中读取这些行时,我想检查是否有任何小怪dmg等于{{1}内的任何项目1}}数组,如果是,则做一些事情,如果没有,做其他事情。

我现在的问题是,它会按预期检查,如果存在暴民,它会写:

mobsdmg

但是如果它是假的话,它会在进入下一行之前做出3次else语句。

print(mobname + "is perfect")

我想检查数组中的所有项目,如果所有这些项都是假的,那么程序应该做点什么。

这是代码:

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

1 个答案:

答案 0 :(得分:-1)

您的代码中的问题是,您只能在搜索完所有的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")

或者替代地,pythonic方式在没有附加条件的情况下执行此操作:

for lines in mobs:
    found = False
    for items in mobsdmg:
          if items in lines:
             print(mobname + "is perfect")
             break
    else:  
        print(mobname + "is not a match")

其他问题:

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