2010-03-24 89 views
0

爲什麼運行此代碼時出現語法錯誤?如果我刪除突出顯示的部分(返回卡片[i]),則會出現突出顯示該函數調用的錯誤。未知語法錯誤

請幫助:)

def dealcards(): 
    for i in range(len(cards)): 
     cards[i] = '' 
     for j in range(8): 
      cards[i] = cards[i].append(random.randint(0,9) 
    return cards[i] 


print (dealcards()) 
+0

請提供實際的錯誤信息。 (它會幫助你學會如何發現這些東西。) – 2010-03-24 22:04:09

回答

1

缺少關閉:

cards[i] = cards[i].append(random.randint(0,9)) 
5
cards[i] = cards[i].append(random.randint(0,9) 
              ^

缺少右括號。並且下一行的return語句不正確地縮進。

+0

愚蠢的問題 - 應該發現:P謝謝 – matt1024 2010-03-24 22:02:54

+0

據我所知,返回正確縮進。它與'我在範圍內(len(cards)):'相同。 – Javier 2010-03-24 22:09:33

+0

@Javier Badia:現在這個問題被編輯了,你是對的。 – AndiDog 2010-03-25 08:30:41

0
  • SyntaxError是由於未封閉的括號後cards[i] = cards[i].append(random.randint(0,9)
  • 當你清楚了,你會發現,當你調用這個函數,你會得到一個AttributeError。您將cards[i]設置爲str對象,然後嘗試對其調用append。字符串沒有append方法。
  • 您循環索引並更改cards中的每個位置。這通常是你做錯事的跡象;在Python中更簡單的做一個新的列表。
    • 當你確實需要非常罕見的索引時,通常最好使用enumerate
  • 更重要的是關於最後一個.....這個函數修改一個全局的,cards使用函數來改變全局狀態是一件壞事。有兩種可能性,幾乎肯定會更好:
    • 使存儲卡與一個名爲deal_cards方法,變異一些屬性self.cards或任何一個國家一類。 (可能是要走的路。)
    • 製作一個函數,接受cards作爲參數並返回一個新列表。 (可能不是要走的路,但提高了模塊化,可維護性和可測試性在當前的技術。)