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

Dim*_*tha 1 python python-3.x

代码从count=0计数 = 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
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 5

你的表情:

elif(count==3,5 or count==7,9):               
Run Code Online (Sandbox Code Playgroud)

不会做你认为它会做的事情。您不是在测试count那里是否有 4 个可能的值之一。Python 将其视为形成元组的 3 个不同表达式:

count==3
5 or count==7
9
Run Code Online (Sandbox Code Playgroud)

产生输出

(False, 5, 9)
Run Code Online (Sandbox Code Playgroud)

如果count不等于 3 并且

(True, 5, 9)
Run Code Online (Sandbox Code Playgroud)

如果是。5 or <some other expression将始终返回,5因为它是一个非零数值,如此真实,并且or运算符的另一侧评估为什么不再重要。

具有 3 个元素的元组在布尔上下文中始终为真,因为它是一个非空容器。因此,如果先前或测试失败,该elif分支将始终匹配。ifelif

有关布尔测试和工作原理的详细信息,请参阅真值测试布尔运算部分or

改用in运营商成员资格测试

elif count in {3, 5, 7, 9}:
Run Code Online (Sandbox Code Playgroud)

如果count有一个值在 4 个可能值的集合中,则测试将为真。