在这里,我试图比较两个列表中的项目,并根据谁在给定的索引中获得更高的no来给出分数。但是我总是在前elif
中显示语法错误,并指出变量注释的非法目标。
def comparetriplets(a, b):
p = 0
q = 0
x = 0
while x < 3:
if a[x] > b[x]:
p = 1
q = 0
x += 1
elif b[x] > a[x]:
p = p+0
q = q+1
x += 1
elif a[x] == b[x]:
p = p+0
q = q+0
x += 1
return [p, q]
elif b[x] > a[x]
:SyntaxError:语法无效
答案 0 :(得分:0)
您是说要在x += 1
和if block
内编写elif block
语句,如下所示:
def comparetriplets(a, b):
p = 0
q = 0
x = 0
while x < 3:
if a[x] > b[x]:
print('Begining of if :' , x)
p = 1
q = 0
x += 1
print('End of if :', x)
elif b[x] > a[x]:
print('Begining of elif-1 :' , x)
p = p+0
q = q+1
x += 1
print('End of elif-1 : ', x)
elif a[x] == b[x]:
print('Begining of elif-2 : ' , x)
p = p+0
q = q+0
x += 1
print('End of elif-2 : ', x)
return [p, q]
请问是否能澄清您的疑问或解决语法错误。
调用函数comparetriplets
:
import numpy
import random
a = random.sample(range(1,51),4) # Generate a list of four random numbers
b = random.sample(range(1,51),4)
print(a)
print(b)
p,q = comparetriplets(a, b)
Output
:
a : [32, 3, 27, 21]
b : [20, 8, 35, 37]
Begining of if : 0
End of if : 1
Begining of elif-1 : 1
End of elif-1 : 2
Begining of elif-1 : 2
End of elif-1 : 3
答案 1 :(得分:0)
我刚刚结束了对“可变符号非法目标”的含义的漫长而徒劳的探索。但是已经意识到错误消息试图告诉我,我已经破坏了一系列的“ if”和“ elif”语句,就像发问者的原始代码一样。我在最初的“ if”后面放置了一个临时的,不缩进的打印语句,这使我脱离了应该是“ if”,“ elif”序列的位置。该错误消息标记了原本可以正常运行的'elif'语句,但真正的问题是早期打印语句的缩进。