2013-04-13 171 views
-5

大家好,我是新來的python語言,我選擇了學python難學的方法來學習它,並更好地理解我......我被難倒在練習25,當我們導入代碼直接進入終端學習python的難題,練習25

>>> import ex25 
>>> sentence = "All good things come to those who wait." 
>>> words = ex25.break_words(sentence) 

然後我得到一個屬性錯誤

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
AttributeError: 'module' object has no attribute 'break_words' 

我使用 窗口Python 2.7版7,請幫助..... http://learnpythonthehardway.org/book/ex25.html

+0

那麼你在'ex25.py'中定義了什麼呢? –

+1

'進口ex25; dir(ex25)'會告訴你模塊提供了哪些功能。 –

+0

可能是ex25中的錯字,或者您可能沒有複製/粘貼網頁中的所有源代碼。 – gatto

回答

3

在我看來,練習並不指導學習者在導入之前保存文件。爲了實現這個功能,您必須使用文本編輯器將定義break_words函數的代碼保存在名爲ex25.py的文件中。然後,從同一目錄鍵入以下命令打開Python解釋:

python 

,你應該能夠導入EX25並運行該ex25.py模塊定義了break_words功能。

+0

在本書中似乎有一個常規指令,每個練習中的第一個代碼塊將被保存到'ex ?? .py'。看起來OP可能已經做到了,或者他們會得到一個'ImportError'而不是'AttributeError'。 – lvc

+0

我不得不拯救它非常感謝大衛我從來沒有保存過它-_- Facepalm ...雖然我非常感謝你的幫助.. – user2276539

+0

@lvc我是Shaw作品的粉絲,但是對於超鏈接的書的元指令看起來很麻煩,因爲每次隱含元指令時都不會引用元指令,否則失去了先前課缺席的那些隨便的讀者就會失去這種教訓。我建議對已經沉重的學習者施加額外的堆棧空間要求並不是好的教學法。 –

2

ex25.py鏈接中的代碼確實包含該功能 - 當您將代碼轉錄到文件中時,並不表示您錯過了該功能。檢查您ex25.py包括從頁面中的所有代碼,特別是包含此功能(這是最頂部的一個):

def break_words(stuff): 
    """This function will break up words for us.""" 
    words = stuff.split(' ') 
    return words 

考慮粘貼代碼爲優先編輯器,以便抄錄它避免這樣的錯誤。