0

私は、ユーザーが野球の見込み客の手紙の成績を送信し、ユーザーが送信した内容に基づいてそれらの成績を平均化できるようにするスクリプトを作成しようとしています。

  1. プロスペクトのユーザー入力グレード (プロスペクト 1 の B+)
  2. すべての入力は、平均化できるように、レターグレードから数値グレードに変換されます。
  3. プロスペクトは、グレードの高いものから低いものへと並べ替えられます。
  4. 成績は文字の成績に再変換されます。

ステップ 2 については説明したと思いますが、残りのコードを完成させる方法については確信が持てません。

簡単にするために、5 つの見込み客のリストが与えられたとします。ユーザーはそれぞれを採点します。ユーザーが追加されるたびに、各見込み客の平均成績が更新され、ランキングの順序が同時にソートされる必要があります。

prospects = ['prospect1', 'prospect2', 'prospect3', 'prospect4', 'prospect5']

grades = {'A+':98, 'A':95, 'A-':92, 'B+':88, 'B':85, 'B-':82, 'C+':78, 'C':75} #grading system where A+ = 98, A = 95 etc

def numbergrade(lettergrade):
    return grades[lettergrade] #function to convert lettergrade to numbergrade

新しいユーザー入力があるたびに要素を追加し、同時にグレードを正しい見込み客に一致させるリストをどのようにコンパイルしますか? ここで辞書を使うべきですか?

4

2 に答える 2

0

まず、新しい入力があるたびに平均を変更したい場合は、評価の数を保存する必要があります。A+ の見込み客が F 評価を受け取った場合、新しい評価は、A+ 評価が 1 か 300 かで大きく異なります。

私の知る限り、ストレージには 2 つのオプションがあります。1 つはタプルのリストを使用する方法で、それぞれが のようになり(prospect name, total rating, number of ratings)ます。これの利点は、評価によって非常に簡単に並べ替えることができることです。欠点は、特定のプレーヤーを検索するのが難しいことです。もう 1 つのオプションはディクショナリです。各キーは見込み客であり、各値は のタプルです(total rating, number of ratings)。利点: 特定のプレーヤーを簡単に検索できます。短所: 並べ替えはあまり意味がありません。

最後に、どちらの場合も、現在の評価を文字ではなく数字として保存します。これにより、平均化する際の精度が向上します。リストのステップ 4 は、「化粧」ステップとして実行する必要があります。プロスペクト データを変更しない。あなたが望む関数の例を投稿できますが、私は今電話中なので、必要がなければ投稿しません。

于 2013-01-08T05:34:56.533 に答える
0

これは、リスト内の各プロスペクトを反復処理し、評価を求めて、評価をディクショナリ 'out' に追加します。ユーザー入力の検証は行われないため、成績に含まれる値が入力されていることを確認する必要があります。

複数のユーザー入力セッションで値を平均化したい場合は、永続的なデータが必要になるため、より複雑になります。この場合、Pickle またはデータベースの使用を検討します。別のオプションは、1 つのセッションで複数のユーザー入力を取得することです。

prospects = ['prospect1', 'prospect2', 'prospect3', 'prospect4', 'prospect5']

grades = {'A+':98, 'A':95, 'A-':92, 'B+':88, 'B':85, 'B-':82, 'C+':78, 'C':75}

out = {}

for prospect in prospects:
    rating = raw_input('Rate prospect {0}'.format(prospect))
    out[prospect] = grades[rating]

print out
于 2013-01-08T05:19:00.560 に答える