2011-07-26 15 views
-7

私はこのコードを実行しよう:Pythonの構文エラー

def table(): 
    nb = 7 
    i = 0 
    while i < 20 : 
     if ((i+1)*nb)%3 == 0 : 
      print(i+1 , "*" , nb , "=" , (i+1)*nb'*') 
     else : 
      print(i+1 , "*" , nb , "=" , (i+1)*nb) 

    i += 1 

私はこの部分(最後の「)の構文エラーを取得

 print(i+1 , "*" , nb , "=" , (i+1)*nb'*') 

と私は本当に、なぜunderstantしていません、何か問題がありますか?

+8

'nb '*' 'は正確に何を期待していますか? – Mat

+1

それは非バイト文字列 'nb '*''のためのpython 4の構文かもしれません:P – JBernardo

答えて

10

私はあなたがやろうとしている疑いがある:

print(i+1 , "*" , nb , "=" , (i+1)*nb, '*') 
            ^

は、最後の引数の前にカンマを注意してください。

2

コンマがありません。これを試してみてください:

print(i+1 , "*" , nb , "=" , (i+1)*nb , '*') 
+2

これは今では昏睡状態を忘れました...ありがとう! – Elias

1

あなたの構文エラーはここにある:(i+1)*nb'*'print(i+1 , "*" , nb , "=" , (i+1)*nb'*')

....... NBと '区切られていませんが。

print(i+1 , "*" , nb , "=" , (i+1)*nb, '*') 

2

あなたはカンマが欠落している権利であるべきであり、またあなたのインデントはすべて間違っていた:

def table(): 
    nb = 7 
    i = 0 
    while i<20 : 
     if ((i+1)*nb)%3==0 : 
      print(i+1 , "*" , nb , "=" , (i+1)*nb, '*') 
     else : 
      print(i+1 , "*" , nb , "=" , (i+1)*nb) 

     i +=1 
0

あなたはnb'*'をやっている、7と同等です '*'。 int/str並置演算子はありません。私はあなたが欲しいと思います。

print(i+1 , "*" , nb , "=" , (i+1)*nb*'*') 

このプログラムでは本当に明確ではありません。それは明確な変数名を持っているとして、あなたは特定の乗数に渡すことができ、より神託ループを使用して、

def table(multiplier=7, maximum=20): 
    for i in range(1, maximum+1): 
     answer = i * multiplier 
     if (answer) % 3 == 0: 
      print("%d * %d = %s" % (i, multiplier, '*' * answer)) 
     else : 
      print("%d * %d = %d" % (i, multiplier, answer)) 

:私はおそらくのようなものを使用します。