2017-04-24 5 views
1

Ich mag das Programm jeden der fünf Spieler fragen, die sieben Fragen, das Ergebnis eines Spielers berechnen und dann eine Liste aller Spieler angezeigt punkten zB Punkte für Woche 1 player1 43 player2 26 Spieler3 38 etc etcLoop/Nested Loop-Probleme Python 2.7

fragen dann die Spieler die Fragen wieder und das gleiche für Woche 2.

Derzeit wird das Programm angezeigt werden nur die ersten Spieler der Gäste, stellen dann die Fragen zu allen fünf Spieler wieder, aber nur zeige die Punktzahl der zweiten Spieler an, sie wiederholt dies fünf Mal, während sie nur durch die Spieler läuft.

Wohin gehe ich falsch, wird jede mögliche Hilfe viel

playerList=[] 
def Playeradd(): 
    playerList.append(item) 
def Playercreate(): 
    global item 
    item = raw_input("Enter Player name: ") 

    Playeradd() 

[Playercreate()for _ in range (5)] 
print "You have selected", len(playerList), "players for your squad, Your selected squad is.." 

for item in playerList: 
    print item 

player =Playercreate 
scorecheck=[] 
x=0 
totalscore=0 
def pointsaward(): 
    global scorecheck, totalscore 
    y=1 
    player=y 
    x=0 
    while x < 5: 
     print "Please enter score for ", playerList[x] 
     for player in playerList: 
      print "Did "+player+" play in the game?" 
      play = raw_input(" Did he play the match (yes or no?) ") 
      if play == "yes": 
       play1=2 
       goalS= int(raw_input(" Did he score, if so how many?")) 
       goalS=goalS*5 
       goalA= int(raw_input(" How many assists?")) 
       goalA=goalA*3 
       motm= raw_input(" Did he win man of the match (yes or no?) ") 
       if motm == "yes": 
        motm1=5 
       else: 
        motm1=0 
       yelC=raw_input(" Did he recieve a yellow card (yes or no?) ") 
       if yelC == "yes": 
        yelC1= -1 
       else: 
        yelC1=0 
       redC=raw_input(" Did he recieve a red card (yes or no?) ") 
       if redC == "yes": 
        redC1= -5 
       else: 
        redC1=0        
       PenM=raw_input(" Did he miss a peno(yes or no?) ") 
       if PenM == "yes": 
        PenM1= -3 
       else: 
        PenM1=0 
      else: 
       play1=0 
       print player+" did not play" 
     playerpoint1= play1+goalS+goalA+yelC1+redC1+PenM1 
     PlayerandScore= [playerList[x],playerpoint1,] 
     scorecheck.append(PlayerandScore) 
     totalscore+= playerpoint1 
     x+= 1 
     y+= 1 
     print "This player has scored a total of ", PlayerandScore, " this week " 
pointsaward() 

Antwort

1

Ok klar sein, so dass ich denke, wenn Sie, wie Sie Ihren Anruf ein wenig unter Verwendung einer anderen Funktion, um die Informationen zu ändern und Sie verwenden ein Wörterbuch statt einer Liste In diesem Fall sind Sie besser in der Lage, Änderungen am Code zu verwalten und die Daten einfacher bearbeiten zu können.

Sie ist was ich bis jetzt bekommen habe.

playerList=[] 
def Playeradd(): 
    playerList.append(item) 
def Playercreate(): 
    global item 
    item = raw_input("Enter Player name: ") 

    Playeradd() 

[Playercreate()for _ in range (5)] 
print "You have selected", len(playerList), "players for your squad, Your selected squad is.." 

for item in playerList: 
    print item 

player =Playercreate 
scorecheck={} # using a dictionary rather than a list. Because you only have to values to look at this to me seams the best option for displaying data. 
x=0 
totalscore=0 
def pointsaward(): 
    global x, totalscore,scorecheck 
    scorecheck={} 
    while x < 5: 
     print "Please enter score for ", playerList[x] 
     for player in playerList: 
      print "Did "+player+" play in the game?" 
      play = raw_raw_input(" Did he play the match (yes or no?) ") 
      if play == "yes": 
       play1=2 
       goalS= int(raw_input(" Did he score, if so how many?")) 
       goalS=goalS*5 
       goalA= int(raw_input(" How many assists?")) 
       goalA=goalA*3 
       motm= raw_input(" Did he win man of the match (yes or no?) ") 
       motm1=0 
       yelC1=0 
       redC1=0 
       PenM1=0 
       if motm == "yes": 
        motm1=5 #this was missing from the math in total points 
       else: 
        motm1=0 
       yelC=raw_input(" Did he recieve a yellow card (yes or no?) ") 
       if yelC == "yes": 
        yelC1= -1 
       else: 
        yelC1=0 
       redC=raw_input(" Did he recieve a red card (yes or no?) ") 
       if redC == "yes": 
        redC1= -5 
       else: 
        redC1=0        
       PenM=raw_input(" Did he miss a peno(yes or no?) ") 
       if PenM == "yes": 
        PenM1= -3 
       else: 
        PenM1=0 
       playerpoint1= play1+goalS+goalA+yelC1+redC1+PenM1+motm1 
       scorecheck[playerList[x]] = playerpoint1 
       x+= 1 
      else: 
       play1=0 
       scorecheck[playerList[x]] = (player+" did not play") 
       x+= 1 

def printResults(): # added a simple function run the point adding function and print the results. 
    pointsaward() 
    print "This player has scored a total of ", scorecheck, " this week " 
printResults() 

Dies sollte dazu führen, dass etwas wie folgt zurückgegeben wird. Hinweis: Ich habe die Anzahl der Spieler auf 2 geändert, um das Testen zu beschleunigen. Die folgenden Informationen zeigen nur die Ergebnisse von 2 Spielern.

Enter Player name: ads 
Enter Player name: qwe 
You have selected 2 players for your squad, Your selected squad is.. 
ads 
qwe 
Please enter score for ads 
Did ads play in the game? 
Did he play the match (yes or no?) yes 
Did he score, if so how many?5 
How many assists?5 
Did he win man of the match (yes or no?) yes 
Did he recieve a yellow card (yes or no?) no 
Did he recieve a red card (yes or no?) no 
Did he miss a peno(yes or no?) no 
Did qwe play in the game? 
Did he play the match (yes or no?) no 
This player has scored a total of {'ads': 47, 'qwe': 'qwe did not play'} this week 
+0

Das funktioniert viel besser, ich bin noch neu zu pyhon, also muss ich über Wörterbücher lernen. Ich versuche, es zu bekommen, um die Fragen für die zweite Woche wieder zu stellen, aber es druckt eine leere Liste – Grimble6

+0

Ich würde sehen müssen, wie Sie die Frage für die zweite Woche stellen Sie möchten vielleicht eine andere Frage stellen: D. Und es gibt eine Menge Dinge, die Sie mit Wörterbüchern, Listen und Tupeln tun können. Es geht nur darum, herauszufinden, was am besten für die Situation funktioniert. Sie können sogar formatieren, wie Sie die Informationen ausdrucken, so dass alle unerwünschten Zeichen wie "{}:" gelöscht werden. –

+0

Ich versuche nur, die gleichen Fragen noch einmal zu stellen und dann die Spielerliste mit den kombinierten Werten aus der ersten Woche zu drucken und zwei – Grimble6