0

このコードは、html からデータを取得し、ファイルを検索します。検索が見つかった場合は、Web ブラウザーに出力します。今、b.append() 行の後に found = False が書かれている理由について質問があります。b'coz 書かないと、ファイル内のすべてのデータが Web ブラウザに出力されます

#!/usr/bin/python
import cgi

def get_search():

    found = False

    form = cgi.FieldStorage()
    Fname = form.getvalue('firstname', '')
    Lname = form.getvalue('lastname', '')
    Age = form.getvalue('age', 0)
    Gender = form.getvalue('gender', '')


    f = open("/tmp/abcd.txt","r")
    b = []
    for line in f:
        temp = line.split()

        Fsearch = temp[0]
        Lsearch = temp[1]
        Asearch = temp[2]
        Gsearch = temp[3]

        if Fname and Fname.lower() in Fsearch.lower():
            found = True

        if Lname and Lname.lower() in Lsearch.lower():
            found = True

        if Age and Age == Asearch:
            found = True

        if Gender and Gender in Gsearch:
            found = True
        if found:
            b.append(line)
        found = False
    f.close()
    print "Content-type:text/html\n"
    if len(b) == 0:
        print "No records found"
    else:
        for each in b:
             print each

get_search()
4

1 に答える 1

2

各ループパスの最後にfound変数を更新するだけです。Falseこれは、新しい反復がfound = False(デフォルトでは各検索の開始時に) 開始される必要があるためです。それ以外の場合、一度line設定foundするTrueと常に残りますTrue(次lineの s では、これは間違っています)。

実際、私の観点からは、そのような変数は、一種の初期化部分として、ループの最初に配置する方が適切です。(しかし、それは好みの問題であり、人によって大きく異なる「良い習慣」です)

于 2013-10-29T06:36:17.937 に答える