2017-11-23 2 views
0

Ich frage mich nur, ob jemand herausfinden könnte, was ich falsch gemacht habe, ich hatte den Eindruck, dass der folgende Code die maximale Zahl und den Index der maximalen Zahl finden würde. Hier ist der Code, den ich verwende.Wie finden Sie Max() in einer Liste und finden Sie seinen Index-Wert auch mit 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) 

Der Ausgang:

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

max sollte den höchsten Wert rechts wählen? und enumerate sollte den Wert und seinen Index wählen, wenn ich mich nicht irre und wenn ich sie zusammen drucke, sollte ich den höchsten Wert erhalten und wo es in der Liste ist. Nun, zumindest versuche ich das zu tun. Der Index für die Punktzahl, die als die höchste ausgewählt wurde, sollte den gleichen Index mit dem Spieler teilen, der diese Punktzahl erhalten hat, genauso wie sie aufgelistet wurden.

jede Hilfe wäre toll Dank sein

Update:

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) 

Ausgang:

#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 

jemand weiß von einer Arbeit um, und macht das max() auf seinen eigenen Zug der Index, wo die maximale Nummer liegt? Wenn nicht, gibt es einen Weg, das zu tun?

Fest !:

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

Tipp: Probieren Sie max (score) – thatrockbottomprogrammer

+0

versucht, aber ich brauche den Index der max Nummer in der Liste als auch –

+0

'Sieger = max (aufzählen (score), key = lambda x: x [1])' –

Antwort

0

Aufzählen gibt Ihnen Tupel Index und Artikel. Zum Beispiel, wenn

>>> 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)] 

Nur ein einfaches max(score) würde für Sie arbeiten.

+0

ja ich versuchte mit max() aber es gab mir einen Fehler, wie Sie in meinem Update auf meinem Beitrag sehen können, und ich brauchte auch den Index an, wo die maximale Anzahl in der Liste gefunden werden kann, max gibt nur den maximalen Wert zurück –

+0

Index erhalten mit 'score.index (max (score))' :) – Abhijeetk431

+0

IHRE EINE LEGENDE DANKE SO VIEL! Du verstehst wirklich nicht, wie viel du mir geholfen hast. Böser Ort, wie ich das Skript auf meinem Beitrag aktualisiert habe. danke nochmal, du hast diesem Noob wirklich geholfen –

3

Sie wollen max(score) verwenden; enumerate gibt eine tuple (index, element) zurück; Das Maximum eines Tupels wird am ersten Element ausgewertet, das in diesem Fall immer der letzte (größte Index) ist.

winner = max(score) 

Wenn Sie auch die Indizes möchten, können Sie tun, wie durch @ChrisRand in den Kommentaren vorgeschlagen wurde:

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

Ja, ich habe versucht mit max(), aber es gab mir einen Fehler, wie Sie in meinem Update auf meinem Post sehen können, und ich brauchte auch den Index an, wo die maximale Anzahl in der Liste gefunden werden kann, max gibt nur den maximalen Wert –

+0

Sie wollen der Index sowie der Maximalwert –