2016-11-14 47 views
0

我正在學習python 3,並且正在嘗試學習類。這段代碼給我帶來麻煩。它應該是一個非常基本的虛擬寵物:此代碼不斷給我錯誤,我是新來的類

class Critter(object): 
def __init__(self, name): 
    print("I am born") 
    self.name = name 
def talk (self, speech): 
    pass 

這是代碼的開始,似乎沒有錯誤。然後,我有:

crit1 = Critter(input("Choose a name for me ")) 
crit2 = Critter(input("Choose a name for me ")) 
crit1.talk(speech = input("Hello. I am ", self.name, ". What shall I say? ") 
     print("\n", speech)) 
crit2.talk(speech = input("Hello. I am ", self.name, ". What shall I say? ") 
     print("\n", speech,)) 

這給出了一個錯誤:

line 13 
print("\n", speech)) 
SyntaxError: invalid syntax 
+1

我覺得你intendation可能出現故障。記住intendation在Python中是非常重要的 – Aidin

+2

另外你還需要計算你的圓括號...... – jonrsharpe

+0

[這裏是文檔](https://docs.python.org/3/tutorial/classes.html)。他們會比我們更有幫助。具體來說,[本部分](https://docs.python.org/3/tutorial/classes.html#class-and-instance-variables)對你的使用非常有用。 – erip

回答

0

除了對方的回答,此外,您intendation似乎是錯誤的。 嘗試改變

class Critter(object): 
def __init__(self, name): 
    print("I am born") 
    self.name = name 
def talk (self, speech): 
    pass 

class Critter(object): 
    def __init__(self, name): 
     print("I am born") 
     self.name = name 
    def talk (self, speech): 
     pass 
+0

我認爲,通過設置代碼的方式,關閉「talk」方法調用的括號實際上就是您提議將其刪除的那個。他們只需要將它移動到'print'語句之前。編輯:啊nvm你得到它 –

+0

@ElliotRoberts哦,對。正確的你是。 – Aidin

+0

請記住,如果我作出答案,或者你想偷走榮耀? :P –

0

當你在這裏呼籲talk

crit1.talk(speech = input("Hello. I am ", self.name, ". What shall I say? ") 
     print("\n", speech)) 

您打開input另一個括號爲好。正因爲如此,Python認爲你仍然試圖將參數傳遞給talk。在傳遞參數時,不能只是換行,然後再關閉它,這樣就會出現語法錯誤。

我建議你關閉你的電話,像這樣:

crit1.talk(speech = input("Hello. I am ", self.name, ". What shall I say? ")) 

,然後讓打印語句,沒有額外的括號:

print("\n", speech) 
+0

沒有做太多的python,但是print(「\ n」,speech,)'是真的嗎?我正在考慮兩個逗號',' – Aidin

+0

Nvm,似乎是一種串聯的方式。 – Aidin

+1

@Aidin'print'需要可變數目的位置參數,如果您已經看到它,請考慮'* args'。它會打印一個新行,然後是默認分隔符'''的語音。 –

相關問題