如果我有一个清单:
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")
答案 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?你似乎永远不会在循环线之间改变它。