2016-08-15 57 views
0

正如标题所示,我正在做一个教程。不过我也碰到过这样的错误:学习Python - 语法错误阻止我在教程中继续

>>> from words import (fetch_words, print_words) 
>>> print_words(fetch_words()) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "C:\Users\jjosey\Documents\pyfund\words.py", line 12, in print_words 
    for word in story_words: 
TypeError: 'NoneType' object is not iterable 

当调用这个文件(words.py):

from urllib.request import urlopen 

def fetch_words(): 
    with urlopen('http://sixty-north.com/c/t.txt') as story: 
     story_words = [] 
     for line in story: 
      line_words = line.decode('utf-8').split() 
      for word in line_words: 
       story_words.append(word) 

def print_words(story_words):    
    for word in story_words: 
     print(word) 

def main(): 
    words = fetch_words() 
    print_words(words)   

if __name__ == '__main__': 
    main() 

我的理解是错误表明我打电话空数组。但这正是导师在视频中所做的,所以我假设我在某处导致了错误,导致我的错误。这是我学习Python的第一天,所以我没有发现它。

任何帮助表示赞赏。谢谢

+0

'fetch_words'不返回任何东西。 –

+1

这不是一个语法错误。 –

回答

4

尝试在fetch_words的末尾放置return声明。没有它,words = fetch_words()将导致wordsNone

def fetch_words(): 
    with urlopen('http://sixty-north.com/c/t.txt') as story: 
     story_words = [] 
     for line in story: 
      line_words = line.decode('utf-8').split() 
      for word in line_words: 
       story_words.append(word) 
    return story_words 
+0

非常感谢。在教程中,文本块被迅速转换为函数,并且他没有注意到就滑入“返回”行。这是罪魁祸首。解决了。谢谢 – jpjosey

0
def fetch_words(): 
    with urlopen('http://sixty-north.com/c/t.txt') as story: 
     story_words = [] 
     for line in story: 
      line_words = line.decode('utf-8').split() 
      for word in line_words: 
       story_words.append(word) 

这个功能有一个错误......它不return值,虽然你稍后尝试使用返回值。试试这个......

def fetch_words(): 
    story_words = [] 
    with urlopen('http://sixty-north.com/c/t.txt') as story: 
     for line in story: 
      line_words = line.decode('utf-8').split() 
      for word in line_words: 
       story_words.append(word) 
    return story_words