代码从count=0
到count = 9。然后它没有进入其他elif代码。我评论了下面哪个部分不起作用。我通过检查计数的值来尝试了这么多时间,但我仍然无法找到为什么代码不起作用
count =0
for line in sys.stdin:
line = line.strip()
print(count)
if (count==0):
a = int(line) #no of series
count=1
elif(count==1): #2nd line 2 players 3 mtches
plyrs_mtchs=[]
plyrs_mtchs= line.split()
print(plyrs_mtchs)
count+=1 # #no of players , no of matches
elif(count==2 or count==6):
players.append(str(line))
print(players)
count+=1
elif(count==3,5 or count==7,9):
currenplyr = players[len(players)-1]
predict.append(line.split())
count+=1
elif(count==10 or count==11): #this code doesn't work
actual.append(line.split())
count+=1
elif(count==12): #this code doesnt work
actual.append(line.split())
count+=1
答案 0 :(得分:4)
你的表达:
elif(count==3,5 or count==7,9):
不符合您的想法。您没有测试count
是否具有4个可能值中的一个。 Python将此视为形成元组的3种不同表达式:
count==3
5 or count==7
9
产生输出
(False, 5, 9)
如果count
不等于3且
(True, 5, 9)
如果是的话。 5 or <some other expression
将始终返回5
,因为它是一个非零数值,所以是真的,并且or
运算符的另一边评估的内容并不重要。
具有3个元素的元组在布尔上下文中始终为true ,因为它是非空容器。因此,如果之前的elif
或if
测试失败,则elif
分支始终将匹配。
有关布尔测试和or
如何工作的详细信息,请参阅Truth Value Testing和Boolean Operations部分。
改为使用in
operator membership test:
elif count in {3, 5, 7, 9}:
如果count
的值为4个可能值的值,则测试将为真。