-2

基本的に、names.txt というファイルを開き、それを使用してリストを作成します。

次に、別の関数で、そのリストを引数として渡します。以下は機能です:

#prints the list to the screen 
def printList(nameList):
    for n in nameList:
        print(n)

何らかの理由で、「builtins.TypeError: 'NoneType' object is not iterable」というエラーが表示されます

私はおそらくそれがあまりにも多くの反復を試みて、空白の位置を得ていると思っていましたか? わからない。私は次のようにループをやってみました:

def printList(nameList):
    for n in range(0, namelist+1):
        print(n)

とにかくそれに近いものですが、これはリストの内容ではなく、番号付きリストのみを出力しました。

ソース全体をペーストビンに置きました: http://pastebin.com/CyyhU882

開くテキスト ファイルの内容: http://pastebin.com/HNeqw9Nv

***追加のメモとして、これをデバッグすると目的の出力が得られますが、ファイルの最後に到達すると、例外が発生します*** help?

4

2 に答える 2

1

list.sort()よくある問題があります:ソートされたリストへの参照を返すと考えていました。そうではありません。戻りますNone

14行目をjustに変更

nameList.sort()

または、本当に必要な場合は、次のようにすることができます。

nameList = sorted(nameList)

これは、コマンドとクエリが分離されているためです。

http://en.wikipedia.org/wiki/Command%E2%80%93query_separation

編集:また、この行は明らかに間違っています:

result = nameList[n].rstrip('\n')

forループはいずれかの名前に設定さnれます。上記は次のようになります。

result = n.rstrip('\n')

しかし、名前を見つけたインデックスを印刷したいとします。インデックスを取得するには、検索しenumerate()て使用する必要があります。

for i, n in enumerate(nameList):

listまた、Python の組み込みクラスであるため、変数名として使用しないでください。lstまたはを使用することをお勧めしますL

于 2013-11-07T00:44:49.160 に答える
0

name_listエラーはおそらくNone

関数に渡すパラメータをどのように初期化しているかを見てください

2 番目の例では、 と がnameListありnamelistますが、この 2 つを混同している可能性はありますか?

例えば。

nameList = None
# some other stuff
namelist = ["ann", "bob", "colin"] # this is creating a new variable 
                                   # instead of rebinding nameList
printList(nameList)

一般に、非常に似た変数名を持つことは悪い考えです

于 2013-11-07T00:24:27.840 に答える