2016-05-07 9 views
-1

Also habe ich eine Liste von Spielern für ein Videospiel-Turnier.Listenindex außerhalb des Bereichs, wenn versucht wird, die Ganzzahl der Liste in verschachtelter For-Schleife zurückzugeben

Diese sind in player_usernames enthalten.

Ich habe diesen Spielern Ränge zugeordnet, und diese Spieler selbst haben einen Powerlevel, processed_ranks (wie zuvor analysiert) und player_powerlevels geliefert. Sie können eines dieser Elemente nennen

mit
i=0 
print (player_usernames[i]+processed_ranks[i]+player_powerlevels[i]) 

Ebenso habe ich eine rank_database dieser Reihen geliefert und powerlevels für jeden dieser berechnet.

Ziel, finden Sie die true_power_level jeden Spieler so kann es in ähnlicher Weise mit ...

true_powerlevel[i] 

Dies wird der Durchschnitt des Spielers Leistungspegels und der berechnete Powerlevel für diesen Spieler Rang genannt werden.

Die aktuelle Methode, dies zu tun ist durch zwei Zeiger definieren ...

player_identifier = 0 
database_identifier = 0 

Diese in zwei für die Zuordnung des Benutzername/Rang/Powerlevel eines jeden Spielers gegen den berechneten Powerlevel für die for-Schleifen große Werke Rang. Wenn Sie jedoch versuchen, eine Ganzzahl vom powerlevel zu deklarieren, gibt dies "List Index Out Of Range" zurück. Ich kann das nicht erklären.

Beispielcode unten zeigt die Art meiner Ausgabe (drücken Sie die Eingabetaste, um Fehler aus) ...

####INPUT DATA##### 
player_usernames = ["yardhin", "eclypse", "mma"] 
processed_ranks = ["Rank 3", "Rank 1", "Rank 2"] 
player_powerlevels = [10, 8, 9] 
rank_database = ["Rank 1", "Rank 2", "Rank 3"] 
powerlevel_database = [10, 9, 8] 
###SET POINTERS### 
player_identifier = 0 
database_identifier = 0 

for processed_rank in processed_ranks: 
    print(player_identifier) 
    print("This is player "+player_usernames[player_identifier]) 
    for rank in rank_database: 
     database_identifier += 1 
     if processed_rank == rank: 
      print (processed_rank) 
      print (rank) 
      break 
     else: 
      print ("No Match") 
    player_identifier += 1 

input() 

player_identifier = 0 
database_identifier = 0 
for processed_rank in processed_ranks: 
    print(player_identifier) 
    print("This is player "+player_usernames[player_identifier]) 
    for rank in rank_database: 
     database_identifier += 1 
     if processed_rank == rank: 
      print(processed_rank) 
      print(rank) 
      input_powerlevel1 = int(player_powerlevels[player_identifier]) 
      input_powerlevel2 = int(powerlevel_database[database_identifier]) 
      true_powerlevel = (input_rank_powerlevel+true_rank_powerlevel/2) 
      print (true_powerlevel) 
      break 
     else: 
      print("No Match") 
    player_identifier += 1 

print ("Please help!") 

Stacktrace

Traceback (most recent call last): 
    true_rank_powerlevel = int(powerlevel_database[database_identifier]) 
IndexError: list index out of range 
+0

Post stacktrace – njzk2

+0

welcher Sprache ist das? Das ist nicht markiert –

+0

Dies ist Python. Stack-Trace jetzt veröffentlicht @ njzk2 – mmacheerpuppy

Antwort

0

Listen sind Null indiziert, so dass Sie festlegen müssen

database_identifier = -1 

Da die erste database_identifier += 1 würde es 0 machen, dann 1, dann 2.

Sie erhalten einen Fehler, wenn ihr Wert 3.

ist oder bewegen database_identifier += 1 zu neben dem player_identifier += 1

+0

Oh natürlich. Danke vielmals! Sollte gut funktionieren. :) – mmacheerpuppy