2017-04-21 24 views
-2

我不斷收到錯誤INIT服用多個參數超過了

INIT()中定義的需要2的位置參數,但4分別給予

每當我運行下面的代碼。我用google搜索了這個問題,但它似乎像大多數人遇到這個錯誤,所以當他們嘗試傳遞一個對象時。我只是想傳遞一個字符串。有人可以幫我嗎?

class pigLatin_class(object): 
    def __init__(self,sentence): 
     self.sentence=sentence 
    def pigLatinConverter(sentence): 
     VOWELS=["a","e","i","o","u"] 
     sentence=sentence.split() 
     Pigword="" 
     for word in sentence: 
      if VOWELS[0] or VOWELS[1] or VOWELS[2] or VOWELS[3] or VOWELS[4] not in word: 
       Pigword+=word[1:] + word[0] + "way" + " " 
      elif word[0] in VOWELS: 
       Pigword+=word + "hay" + " " 
      else: 
       for i in range(len(word)): 
        if word[i] in VOWELS: 
         Pigword+=word[i:] + word[0:i] + "ay" + " " 
         break 
     return Pigword 

p=pigLatin_class("ataruk esteban") 
print(p) 

UPDATE: 修正問題,多虧了評論。現在,我得到

<__main__.pigLatin_class object at 0x7f...> 
+1

運行給定的代碼都在Python 2和Python 3裏不給我一個錯誤;我只是在'0x7f500d9bce48'處得到'<__ main __。pigLatin_class對象''。這是你的所有代碼嗎?您需要向我們展示足夠的信息,以便我們可以重現問題。 – jwodder

+0

這就是所有的代碼,當我在命令提示符下運行它時,我也可以得到它,但是spyder IDE給我提供了位置錯誤 – Doe22

+1

無法在QPython3上重現。 – Carcigenicate

回答

1

您打印的對象,這是一個Python手柄。如果你想看到轉換的結果,你現在需要

print(p.pigLatinConverter()) 

當你創建對象,您所提供的文本得到存儲在句子屬性。但是,該對象包含許多其他信息,包括對其兩種方法的引用(__init__和轉換器)。即使是這樣一個簡單的對象也有點複雜,所以我們非常小心在任何給定的點上我們如何引用我們想要的部分。

你還需要改變你的轉換器中的引用,就像這樣:

def pigLatinConverter(self): 
    VOWELS=["a","e","i","o","u"] 
    sentence=self.sentence.split() 

注意類方法應該調用對象作爲第一個參數(傳統上被稱爲在Python ;它的在一些其他語言)。現在,你已經有有句子存儲在調用對象中。

有了這兩個變化,我現在從程序獲取輸出:

> p=pigLatin_class("ataruk esteban") 
> print(p.pigLatinConverter()) 

tarukaway stebaneway 
+1

謝謝。終端響應緩慢,我沒有注意到我支持了兩個缺失的字符。 – Prune

+0

啊是的,謝謝,這是我的一個愚蠢的錯誤 – Doe22

+0

@ Doe22你應該upvote並接受答案,如果它回答你的問題。 – Carcigenicate

相關問題