0

reddit ボット用のプログラムを作成しています。このプログラムの一部では、二重投稿を防ぐためにクエリのファイルを検索する必要があります。これが私のコードです。

def search (filetosearch,query):
    with open(filetosearch, 'r') as inF:
        for line in inF:
            if len(str(line)) == 0 | query not in line:
                return False
                break
            else:
                return True
                break

実行するたびに None が返されます! returnステートメントをスキップするのはなぜですか? 検索しようとしているファイルが空です。

4

1 に答える 1

0

ファイルが空の場合、ループが繰り返さforれることはないため、ループに入ることがありません。

return Falseそのエッジケースの関数の最後にを追加するだけです。

また、行がクエリと一致しない場合はまだ戻りたくないので、代わりに次の行にループします。

def search (filetosearch, query):
    with open(filetosearch, 'r') as inF:
        for line in inF:
            if query in line:
                return True

    return False

breakステートメントは冗長であることに注意してください。returnステートメントが実行されるとすぐに関数が終了し、breakステートメントの次の行に到達することはありません。

于 2013-03-07T15:48:36.613 に答える