我收到语法错误,并显示一条错误消息,指出变量注释的非法目标。我如何解决它?

时间:2019-07-10 09:41:57

标签: python-3.x syntax-error

在这里,我试图比较两个列表中的项目,并根据谁在给定的索引中获得更高的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:语法无效

2 个答案:

答案 0 :(得分:0)

您是说要在x += 1if 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'语句,但真正的问题是早期打印语句的缩进。