代码从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)
你的表情:
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 个可能值的集合中,则测试将为真。
| 归档时间: |
|
| 查看次数: |
45 次 |
| 最近记录: |