0

だから私はこれを必要とする質問があります 特徴:色、サイズ、肉、クラスはスペースで区切られています. ユーザーに入力ファイル (この場合は animal.txt) と出力ファイル (任意の名前) の名前を尋ねる Python プログラムを作成します。プログラムは入力ファイルの行を読み取り、コメント行 (# で始まる行) と空白行を無視して、次の質問に対する答えを計算して出力します。動物の総数は? 危険な動物の総数は?安全な大型動物の数は?褐色で危険な動物の数は? 赤い色または硬い肉の安全な動物の数は?

プログラムを終了し、すべてが機能しているように見えますが、これまでのところ、コードを入力してプログラムを開始すると、すべてが機能し、エラーはなく、出力ファイルしか生成されません。何が間違っているのか正確にはわかりませんが、誰かが私を正しい方向に向けることができれば、それは高く評価されます.

import os.path
endofprogram = False

try:
    filename1 = input("Enter the name of input file: ")
    filename2 = input("Enter the name of output file: ")
    while os.path.isfile(filename2):
        filename2 = input("File Exists! Enter new name for output file: ")
        infile = open(filename1, 'r')
        ofile = open(filename2, "w")
except IOError:
        print("Error reading file! Program ends here")
        endofprogram = True
        if (endofprogram == False):
            alist = []
            blist = []
            clist = []
            largesafe = 0
            dangerous = 0 
            browndangerous = 0
            redhard = 0        
            for line in infile:
                line = line.strip("\n")
                if (line != " ") and (line[0] != "#"):
                    colour, size, flesh, clas = line.split('\t')
                    alist = alist.append(colour)
                    animals = alist.count()

                while clas == "dangerous":
                    dangerous = dangerous + 1

                while size == "large" and clas == "safe":
                    largesafe = largesafe + 1

                while colour == "brown" and clas == "dangerous":
                    browndangerous = browndangerous + 1

                while colour == "red" and flesh == "hard":
                    redhard = redhard + 1

                ofile.write(print("Animals = \n", animals))
                ofile.write(print("Dangerous = \n", dangerous))
                ofile.write(print("Brown and dangerous = \n", browndangerous)) 
                ofile.write(print("Large and safe = \n", largesafe))
                ofile.write(print("Safe and red color or hard flesh= \n", redhard))


            infile.close()
            ofile.close()
4

2 に答える 2

0

あなたのインデントはプログラムを完全に台無しにしました。最大の犯罪者はこのセクションです:

except IOError:
    print("Error reading file! Program ends here")
    endofprogram = True
    if (endofprogram == False):

行は行のif直後にのみ実行されendofprogram = True、その時点endofprogram == Falseで false になるため、プログラムの残りの部分ifを含むブロック内の何も実行されません。それ以降のすべてを 1 レベルだけデデントする必要があります。if

于 2013-11-08T03:24:04.757 に答える
0

print中身は外してもいいかもしれませんofile.write

ofile.write(print("Animals = \n", animals))

ofile.write("Animals = \n" + str(animals))
于 2013-11-08T03:20:19.580 に答える