如何在给定代码中运行if循环

时间:2015-10-24 14:36:43

标签: python python-3.x

代码从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

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 ,因为它是非空容器。因此,如果之前的elifif测试失败,则elif分支始终将匹配。

有关布尔测试和or如何工作的详细信息,请参阅Truth Value TestingBoolean Operations部分。

改为使用in operator membership test

elif count in {3, 5, 7, 9}:

如果count的值为4个可能值的值,则测试将为真。