0

2つのクイズスコアと参加者のIDのペアを格納するこの辞書があります。構造は{(quiz1、quiz2):ID}です。

scoredict = {('83', '93'): '81937', ('88', '86'): '33576', ('96', '97'): '01084', 
('81', '95'): '48534', ('84', '72'): '11235', ('77', '80'): '01835', ('90', '83'): 
'39488', ('75', '74'): '31049', ('80', '62'): '10188', ('85', '86'): '63011', 
('66', '89'): '58272'}

このプログラムで、クイズのスコアのペアを入力してIDを検索するようにします。たとえば、ユーザーがクイズ1とクイズ2に83と93を入力すると、81937が返されます。過去48時間からこれに取り組んでいますが、どのコードも機能しませんでした...

また、両方のクイズで利用可能な最も近いスコアを見つけてIDを印刷することは可能ですか?

4

3 に答える 3

4

私はあなたのソリューションがすでにipythonで動作することを確認しました:

In [1]: scoredict = {('83', '93'): '81937', ('88', '86'): '33576', ('96', '97'): '01084', 
   ...: ('81', '95'): '48534', ('84', '72'): '11235', ('77', '80'): '01835', ('90', '83'): 
   ...: '39488', ('75', '74'): '31049', ('80', '62'): '10188', ('85', '86'): '63011', 
   ...: ('66', '89'): '58272'}

In [2]: scoredict['83','93']
Out[2]: '81937'
于 2012-04-13T23:12:43.790 に答える
1

最も近いスコアについては、これを試すことができます:

test = (83, 93)

deviation = float('inf')
best_match = None

for score1, score2 in scoredict:
  error = abs(int(score1) - test[0]) + abs(int(score2) - test[1])

  if error < deviation:
    deviation = error
    best_match = (score1, score2)

print scoredict[best_match]
于 2012-04-13T23:17:19.977 に答える
0

単に行う:

>>> scoredict[(score1,score2)]
于 2012-04-13T23:12:59.920 に答える