0

データを保存できるようにする必要があります。1 つは数字で、もう 1 つは出現回数です。辞書を返すメソッドを呼び出す for ループがあります。

for x in range(total_holidays):
    t = trial()
    y = y + "\n" + str(x+1) + "," + str(t["brown"]) + "," + str(t["rainbow"]) + "," + str(t["nothing"]) + "," + str(t["days"])
    total += t["days"]
    #print total
    if x%10000 == 0:
        y0.append(y)
        y = ""

基本的に、t['days'] が何回発生するかをカウントする必要があります。回数はほとんど毎回変わります。完全なコードが必要な場合は、次を参照してください。

https://math.stackexchange.com/questions/193846/how-many-trials-would-you-expect-to-give-you-an-accurate-answer

では、どうすればこれを行うことができ、後ですべてを印刷する必要があります。

yは csv ファイルのテキストで、total は平均を計算するために使用されます。


mgilson が提案したように、これを使用する必要がありますか?

from collections import Counter

a = []
for x in range(total_holidays):
    t = trial()
    y = y + "\n" + str(x+1) + "," + str(t["brown"]) + "," + str(t["rainbow"]) + "," + str(t["nothing"]) + "," + str(t["days"])
    total += t["days"]
    a.append(t['days'])
    #print total
    if x%10000 == 0:
        y0.append(y)
        y = ""
z = Counter(a)
print z

私はそのようなものを持っている必要がありますか?

4

2 に答える 2

2

必要なのは、この種のタスクに特化しcollections.Counterたサブタイプであるタイプです。dict

import collections
days_occurred = collections.Counter()

for ...:
    t = trial()
    days_occurred[t['days']] += 1

# total is now sum(days_occurred.itervalues())

# you print the counts by iterating over the dict

for days, count in days_occurred.iteritems():
    print "%d: %d" % (days, count)
于 2012-09-13T23:57:14.770 に答える
1

You shouldn't need to construct a CSV file manually. Python already has a built-in module for this:

import csv

writer = csv.writer(open('output.csv', 'wb'))

# ...

for x in range(total_holidays):
  t = trial()

  writer.writerow([x + 1, t['brown'], t['rainbow'], t['nothing'], t['days']])
  total += t['days']

Aside from that, what exactly is your question?

于 2012-09-13T23:50:46.263 に答える