2017-11-23 19 views
0

誰かが私が間違っていることに気づくことができるかどうか疑問に思っています。私は次のコードが最大数と最大数のインデックスを見つける印象を受けました。ここでは以下のコードを使用しています。max()を使ってリスト内のmax()を見つけ、そのインデックス値を見つける方法?

def select_winner(): 
    print('The game scores are:') 
    for i in range (4): 
     print(Players[i], ' = ', score[i]) 
    winner = max(enumerate(score)) 
    print('----------------') 
    print() 
    print('The Winner is ', Players[winner[0]], ' with ', str(winner[1]),' 
    points!') 
    print(winner) 

出力:

#The game scores are: 
#Jarrah = 86 
#Reza = 121 
#Marge = 72 
#Homer = 91 
#---------------- 
#The Winner is Homer with 91 points! 
#(3, 91) 

最大は最高値の右を選ぶべきなのでしょうか?誤っていない場合は値とインデックスを選択する必要があります。一緒に印刷すると、リストにある値が最も高くなるはずです。私は何をしようとしています。最も高いスコアとして選ばれたスコアのインデックスは、そのスコアを取得したプレイヤーと同じインデックスを共有する必要があります。

任意のヘルプは おかげ

アップデート素晴らしいことだ:独自のプルに

#The game scores are: 
#Jarrah = 91 
#Baldwin = 73 
#Kepa = 112 
#Long = 106 
#---------------- 
#in select_winner 
#print('The Winner is '+ Players[winner[0]]+ ' with '+ str(winner[1])+ ' 
#points!') 
#TypeError: 'int' object is not subscriptable 

誰もが周りの仕事を知っている、とmaxを(い):

def select_winner(): 
    print('The game scores are:') 
    for i in range (4): 
     print(Players[i], ' = ', score[i]) 
    winner =(max(score)) 
    print('----------------') 
    print() 
    print('The Winner is '+ Players[winner[0]]+ ' with '+ str(winner[1])+ ' 
    points!') 
    print(winner) 

出力最大数がどこにあるかの指標ですか?もしそうでなければ、それを行う方法はありますか?

固定!:

def select_winner(): 
    k=0 
    print('The game scores are:') 
    for i in range (4): 
    print(Players[i], ' = ', score[i]) 
    winner2=(score.index(max(score))) 
    winner=str(max(score)) 
    print('----------------') 
    print() 
    print('The Winner is '+ Players[winner2]+ ' with '+ winner + ' points!') 
+0

ヒント:最大試行回数 – thatrockbottomprogrammer

+0

が試行されましたが、リスト内で最大数のインデックスも必要です –

+0

'winner = max(列挙型、キー=ラムダx:x [1]) ' –

答えて

0

列挙はあなたのインデックスとアイテムのタプルを与えます。例えば

>>> score 
[1, 2, 4, 9, 6, 8, 3, 7, 4, 8] 
>>> [i for i in enumerate(score)] 
[(0, 1), (1, 2), (2, 4), (3, 9), (4, 6), (5, 8), (6, 3), (7, 7), (8, 4), (9, 8)] 

は単なるmax(score)があなたのために働くだろう場合。

+0

はい私はmax()を使ってみましたが、自分の投稿の更新でわかるようにエラーが出ましたし、リストに最大数が見つかったインデックスも必要でした。 maxは、最大値を返すだけです –

+0

'score.index(max(score))'を使ってインデックスを取得してください:) – Abhijeetk431

+0

あなたの伝説は大変です!あなたは本当にあなたが私をどのくらい助けてくれたのか分かりません。私のポストでスクリプトをどのように更新したのかは分かりません。もう一度おかげさまで、あなたは本当にこのnoobを助けてくれました –

3
あなたは max(score)を使用したい

enumeratetuple (index, element)を返します。タプルの最大値は最初の要素で評価され、この場合、常に最後(最大のインデックス)になります。

winner = max(score) 

あなたもインデックスをしたい場合は、コメントで@ChrisRandによって提案されたように行うことができます。

winner = max(enumerate(score), key= lambda x: x[1]) 
+0

はい私は最大()を使用してみましたが、それは私の投稿に私の更新で見ることができると私にエラーを与えたと私は最大値がリストで見つけることができるインデックスでは、最大値を返すだけでも –

+0

インデックスと最大値 –

関連する問題