-1

私は当初、3 行を という外部テキスト ファイルに書き込むコードを書かなければなりませんでしたoutput.txt。最初の行は最初の行の最小数を示し、2 番目の行は 2 番目の行の最大数を示し、3 番目の行は 3 番目の行の平均を示します。入力された数値や長さに関係なく、最小値、最大値、平均値のすべての値が表示されます。問題は、コードが最後の平均行のみを出力テキスト ファイルに書き込んでいることです。

私の講師はフォーマットを同じままにしてほしいと思っていますが、彼は次のコメントを持っていました:

および行は出力ファイルminmax書き込まれません。report_lineこれは、出力ファイルに書き込む文字列を格納する変数に値を書き込まないためです。

report_linefor ループが始まる前に、空の文字列になるように初期化してみてください。

その後、+=演算子と改行文字を使用report_lineして、for ループを繰り返すたびに出力を変数に格納できます。

私はそれらを試しましたが、それでも同じ結果が得られます。平均ラインのみが印刷されます。

outfile = open("output.txt", "w")

with open("input.txt") as f:
    report_line = ""
    for line in f:
        operator, data =  line.lower().strip().split(":")
        line = line.split(":")
        operator = line[0].lower().strip()
        data = line[1].strip().split(",")
        newData = []
    for x in data:
        report_line+='n'
        newData.append(int(x))
        if operator == "min":
            result = min(newData)
        elif operator == "max":
            result = max(newData)
        elif operator == "avg":
            result = sum(newData) / len(newData)
            report_line = "The {} of {} is {}.\n".format(operator, newData, result)

outfile.write(report_line)

outfile.close()

入力:

min:1,2,3,4,5,6
max:1,2,3,4,5,6
avg:1,2,3,4,5,6

出力は次のようになります。

The min of [1, 2, 3, 5, 6] is 1.
The max of [1, 2, 3, 5, 6] is 6.
The avg of [1, 2, 3, 5, 6] is 3.4.
4

2 に答える 2