2

2.7.x

 rate = raw_input('Rating: ')

各数値を保存し、最後に平均を取得するにはどうすればよいでしょうか? そのコード行の前は、次のとおりです。

for i in range(n):

とても有難い。

編集:

コードを微調整した後、次のようになりました。

  L = []

for i in range(n):

    line = raw_input('Next Track: ')
    m = L.append(raw_input('Rating: '))
    overall = sum(map(int, L)) / len(L)

    f.write("Track Name: " + line + " - Rating: " + str(m) + "\n")
f.close()

f = open('music.txt','a')



print "Overall Rating: ", overall


f = open("music.txt", 'a')
f.write("Overall Rating: " + str(overall) + "\n")
f.write("---------------------------\n")
f.close

問題は、評価の数値を入力するたびに、ファイルに「なし」として戻ってくることです。なんで?

4

2 に答える 2

2

値をリストに追加します。

L = []
for i in range(n):
    L.append(raw_input('Rating: '))

次に、リストの平均を取得できます。

sum(map(int, L)) / len(l)

または、リスト内包表記を使用できます。

L = [int(raw_input('Rating: ')) for _ in range(n)]
sum(L) / len(L)

ただし、フロートを扱っている場合は、これを使用して平均を取得します。

from __future__ import division
sum(L) / len(L)

from __future__ import division/を真の除算演算子に変更します。True Division は Python 3 で有効ですが、Python 2.7 を使用しているため、直接インポートできます。


コードには、いくつかの問題があります。

L.append(raw_input('Rating: '))戻りますNone。変数に割り当てる必要はないので、m =.

mただし、ファイルに書き込むことができるように、の値を保持したいようです。次に、次のようなことができます。

m = raw_input("Rating: ")
L.append(m)

str(m)文字列をraw_input()返すので、も必要ありません。


最後に、withファイルを開くときにステートメントを使用する必要があります。これにより、次の呼び出しが節約されclose()ます。

with open('music.txt','a') as f:
    for i in range(n):
        line = raw_input('Next Track: ')
        m = raw_input("Rating: ")
        L.append(m)
        overall = sum(map(int, L)) / len(L)
        f.write("Track Name: " + line + " - Rating: " + m + "\n")
于 2013-06-22T02:56:10.573 に答える