2015-11-07 99 views
0

我想知道你们中的任何人是否可以看看我的代码,并告诉我我在这里失踪了什么。基本上,它需要用户输入他们的名字(playerOne和playerTwo)。它应该从随机选择中选择更大的数字,并将该用户的名称显示为赢家。它显示所选的随机数字,但不是赢家的名字。Python代码没有返回预期结果

#Add libraries needed 
import random 

#The main function 
def main(): 
    print 
    #Initialize variables 
    endProgram = 'no' 
    playerOne = 'NO NAME' 
    playerTwo = 'NO NAME' 


    #Call to inputNames 
    playerOne, playerTwo = inputNames(playerOne, playerTwo) 

    #While loop to run program again 
    while endProgram == "no": 
     winnerName ='NO NAME' 
     p1number = 0 
     p2number = 0 

     #Initialize variables 

     #Call to rollDice 
     winnerName = rollDice(p1number, p2number, playerOne, playerTwo, winnerName) 

     #Call to displayInfo 
     displayInfo(winnerName) 

     endProgram = raw_input('Do you want to end the program? (Enter yes or no): ') 

#This function gets the players names 
def inputNames(playerOne, playerTwo): 
    playerOne = raw_input('Enter P1 name: ') 
    playerTwo = raw_input('Enter P2 name: ') 
    return playerOne, playerTwo 

#This function will get the random values 
def rollDice(p1number, p2number, playerOne, playerTwo, winnerName): 
    p1number = random.randint(1,6) 
    p2number = random.randint(1,6) 
    return p1number, p2number 
    if p1number == p2number: 
     winnerName = "TIE" 
    elif p1number > p2number: 
     winnerName = playerOne 
    elif p2number > p1number: 
     winnerName = playerTwo 
     return winnerName 

#This function displays the winner 
def displayInfo(winnerName): 
    print winnerName 

#Calls main 
main() 
+0

你为什么直接在'displayInfo(winnerName)'而不是'print winnerName'中做?通过将它包装在一个函数中,你不会获得任何东西。 – TigerhawkT3

+0

这是一个班级任务,所以我必须遵循教授提出的一套指导方针。 – Matt

回答

1

出现这种情况的原因是因为你有一个return语句运行任何你的逻辑来检查的胜者在rollDice方法之前。

此外,只有在p2number > p1number时,您才会返回最后的elif语句。所以,你应该将条件返回到条件之外,这样你总能返回一个胜利者。

我评论,并调整了代码来表示你的代码应该发生什么了rolLDice方法:

#This function will get the random values 
def rollDice(p1number, p2number, playerOne, playerTwo, winnerName): 
    p1number = random.randint(1,6) 
    p2number = random.randint(1,6) 

    # You are returning too early here. Remove this return statement 
    return p1number, p2number 

    # CODE BELOW WILL NEVER RUN 
    if p1number == p2number: 
     winnerName = "TIE" 
    elif p1number > p2number: 
     winnerName = playerOne 
    elif p2number > p1number: 
     winnerName = playerTwo 
    return winnerName 

简单地删除return语句,你的输出就会显示玩家名字预期。

+0

谢谢你的洞察力。我不会想到拿出那个回报声明。 – Matt

+1

@sam你说得对。我没有明白。谢谢。 – idjaw