2013-04-13 176 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 

考虑粘贴代码为优先编辑器,以便抄录它避免这样的错误。