2011-07-26 171 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'*')

.......鈮和「不分隔。

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)) 

因爲它有明確的變量名,可以讓你在特定的乘數通過,並採用了更Python循環。