2016-08-15 2 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() 

私はエラーが私がnullの配列を呼んでいる示唆していることを理解します。しかし、これはまさに教師がビデオでやっていることなので、どこかでタイプミスを犯したと仮定しているため、エラーが発生しました。そして、これは私の学習Pythonの1日目なので、私はそれを見つけていません。

助けてください。ありがとう

+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

多くのありがとう。テキストのブロックは、チュートリアル中にすぐに関数に変換され、私は気付かないうちに 'return'行に入った。それが原因です。解決済み。ありがとう – 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 
関連する問題