循环/嵌套循环问题Python 2.7

时间:2017-04-24 08:38:04

标签: python-2.7 loops variables while-loop nested

我希望程序向五个玩家中的每一个询问七个问题,计算玩家得分,然后显示每个玩家得分的列表,例如 第1周的积分 player1 43 player2 26 player3 38等等

然后再向玩家询问问题,并在第2周做同样的事情。

目前该节目只会显示第一个球员得分,然后再次向所有五个球员提问,但只显示第二个球员得分,重复这五次,同时只重复球员。

我哪里出错,任何帮助将不胜感激

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

1 个答案:

答案 0 :(得分:1)

好的,我想如果你通过使用其他功能改变你的信息调用方式,并且在这种情况下使用字典而不是列表来获取玩家/分数的信息,你将能够更好地管理对代码,也可以更轻松地操作数据。

她是我迄今为止所得到的。

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

这会导致返回如下所示的内容。注意:我将正在查看的玩家数量更改为2以使测试更快。所以下面的这些信息只会显示看到2名球员的结果。

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