2017-04-09 6 views
0

私はこのエラーを取得し、このPythonコードPythonのエラー「はTypeError:型のオブジェクトは、 'NoneType'(何LENを持っていない)

def read_lines(): 
    user_entries = [] 
    contin = True 
    while contin == True: 
     user_input = input(str("Enter string or just press enter to finish: ")) 
     user_entries.append(user_input) 
     if len(user_input) == 0: 
      contin = False 
    print(user_entries) 

lines = read_lines() 
print(lines) 
ci = o 
contin = True 
while contin: 
    if ci == len(lines): 
     contin = False 
    else: 
     line = lines(ci, ci + 1) 
     ci = ci + 1 
     print(ci, line) 

からエラーを取得しています...

Traceback (most recent call last): 
    File "test.py", line 8 in <module> 
    if ci == len(lines): 
Type Error: object of type 'NoneType' has no len() 

私はこのエラーがなぜ発生するのかよく分かりません。ラインプリント(行)を実行すると、Noneが返されます。これはおそらく問題ですが、修正方法がわかりません。

+0

あなたが 'read_lines()'を定義した関数は 'lines'に何も返しませんので、** None **です。 – bhansa

+0

回答を[回答済み](https://www.google.co.in/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0ahUKEwjf__iKnpnTAhXky4MKHeloBR8QFggZMAA&url=https%3A%)にすることを忘れないでください。 2F%2Fmeta.stackexchange.com%2Fquestions%2F5234%2答えを受け入れていること&usg = AFQjCNE2e2orpogybVZU_sdJD6evWbT5Fw&bvm = bv.152174688、d.amc&cad = rja) – bhansa

答えて

1

あなたはそれがなしではありませんlinesには何も返さないread_lines()を定義した関数を動作するはずです。

この機能では、印刷後にリターンを追加します。

return user_entries 

また、あなたがそのようなline = lines(ci, ci + 1)

linesとしてあなたのコードの変更を行う必要がリストである:それは呼び出し可能ではありません。

ci = 0代わりのci = o

、タイプミスを削除し、エラーして、もう一度お試しください。うまくいくはずです。

1

read_lines何かを返す012

def read_lines(): 
    user_entries = [] 
    contin = True 
    while contin == True: 
     user_input = input(str("Enter string or just press enter to finish: ")) 
     user_entries.append(user_input) 
     if len(user_input) == 0: 
      contin = False 
    print(user_entries) # this prints user_entries but doesn't return it 
printに呼び出した後、あなたの関数に return user_entriesを追加し、あなたのコードは

0

私は、Python 2.7

を使用してこのコードを実行している - >機能read_lines()は一つのことです何も返しません。

が、whileループの内側、代わりに使用する:

user_input = input(str("Enter string or just press enter to finish: ")) 

用途:

user_input = raw_input("Enter string or just press enter to finish: ") 

だから、次のエラーを持っていません。 ;)

関連する問題