1. ホーム
  2. python-3.x

[解決済み] シンタックスエラーと変数アノテーションのターゲットが不正であるというエラーが発生します。どうすれば直せますか?[クローズド]

2022-03-13 22:31:29

質問内容

ここでは、2つのリストの項目を比較し、与えられたインデックスでどちらが高い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: 構文が無効です。

解決方法は?

と書くのですか? x += 1 の中にあるステートメント if blockelif 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