プロが教える店舗&オフィスのセキュリティ対策術

Pythonについて


a = [[a, [1,2,3,4,5],3], ....(50人ほど続く)]
と言った形の 会場の記号a.b.c、選択肢が1-5までの5つの回答、受験者の講習受講回数からなるデータがあるとします。
模範解答は[1.2.3.4.5] 1つ20点
採点した後全体の平均点を出す関数、各会場の平均点を出す関数
を作りたいのですが、上手く行きません。
どなたかこの問題に対する模範回答的な物を教えて頂けませんでしょうか。
自分のと照らし合わせて勉強したいのです、、

A 回答 (3件)

はい。


多分、Pyton の特徴であるインデントはなくなっているはずなので、そこはよろしく。

---------

def avePoint(a):
rightAns = [1, 2, 3, 4, 5]
scoreList = {}
persons = {}

for aPoint in a:
s = 0
ans = aPoint[1]
for i in range(0, 4):
if (ans[i] == rightAns[i]):
s += 20
place = aPoint[0];
score = s

if place in scoreList:
scoreList[place] += score
persons[place] += 1
else:
scoreList[place] = score
persons[place] = 1

for key in list(scoreList):
scoreList[key] /= persons[key] * 1.0

return scoreList

aList = [
['a', [1, 2, 3, 3, 1], 2],
['b', [3, 2, 3, 4, 5], 5],
['a', [1, 2, 4, 3, 1], 2],
['b', [1, 2, 3, 4, 5], 5],
['a', [2, 2, 3, 4, 1], 2],
['b', [4, 2, 2, 4, 1], 5],
['a', [5, 2, 3, 3, 1], 2],
['b', [2, 2, 1, 4, 1], 5],
['b', [1, 2, 3, 4, 1], 5],
]

print(avePoint(aList))
    • good
    • 0

こんばんは



Pythonは知りませんけれど・・

>自分のと照らし合わせて勉強したいのです、
照らし合わせるのが目的なら、ロジックのみでもよいと思いましたので・・
(コードを比べたところで、ほとんど意味はないでしょうから)

 { 会場:[人数、合計点], ・・・ } のような集計をイメージして、
会場が、a,b,cのように既知で固定でよいのなら、最初に0人、0点のものを会場分用意しておくのが簡単。
会場が不定(不明)なら、新しく出現する毎に追加してゆく方式で。

1)データを人数分ループして、上記の集計に振り分け加算。
2)会場ごとに、人数>0なら 合計点/人数 で平均点を算出。

※ 採点は、問題に対して均一で20点が確定なら、正解数×20で算出できます。
※ 個別の結果が必要なのか否か不明なので、採点結果の保存については省略。
    • good
    • 0

未経験者ですけど。


3人ほどのデータで取得したい結果を表したものがあれば尚良かったのかもと感じます。
aさんは模範解答と自身の選択が完全一致なので100点と言えるのかな?とか気になったので。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!