所以我查看了所有相关问题,似乎无法找到特定于我的程序的答案。我必须有两个玩家骰子游戏滚动一个随机数并宣布获胜者。截至目前,程序运行时说: 获胜者是: 输入玩家1的名字: 输入选手2名称:
这是我的代码:
import random
def main():
print "You are now playing Dice Roll!!"
endProgram = 'no'
playerOne = 'NO NAME'
playerTwo = 'NO NAME'
playerOne, playerTwo = inputNames(playerOne, playerTwo)
while endProgram == 'no':
winnnerName = 'NO NAME'
p1number = '0'
p2number = '0'
playerOne,playerTwo = inputNames(playerOne,playerTwo)
winnerName =()
winnerName = rollDice(p1number, p2number, playerOne, playerTwo, winnerName)
displayInfo = winnerName
endProgram = raw_input('Do you want to end program? (Enter yes or no): ')
def inputNames(playerOne,playerTwo):
playerOne = raw_input('Enter player one name:')
playerTwo = raw_input('Enter player two name:')
return playerOne, playerTwo
def rollDice(p1number, p2number, playerOne, playerTwo, winnerName):
p1number = random.randint(1,6)
p2number = random.randint(1,6)
if p1number == p2number:
print "TIE!!!!"
elif p1number > p2number:
print winnnerName
else:
p1number < p2number
print winnnerName
return winnerName
print "The winner is:",winnerName
main()
我没有找到答案只是指导你走正确的道路。 提前谢谢。
答案 0 :(得分:2)
以下是一些有助于指导您的步骤:
请确保正确缩进代码,因为这是python语法的一部分。因此,def ...():
的行不应缩进,定义内容应缩进一个级别,while
内容应缩进两个级别......依此类推。因此,您应该只在左侧对齐import
并且不同的def
对齐(可能是您在stackoverflow上粘贴代码时发生的,但只是为了确定)。
停止向您所做的每个定义传递参数。如果您不需要将变量值传递给函数,请不要使用参数。例如,在def inputNames(playerOne,playerTwo)
中,参数playerOne,playerTwo
是无用的,因为您只是使用此函数来定义它们的值。同样的问题出现在rollDice
。
小心拼写错误,你在rollDice中用3“n”写了“winnnerName”。
保持简单。仅使用需要的东西。您的代码结构良好。但是这些功能应该只做他们想要做的事情。示例:rollDice
应仅滚动骰子,而不是宣布结果。因此,您可以只返回获胜者,甚至返回数字并在主程序中测试获胜者。这将我们带到下一部分算法。
如果您对代码不满意,这是一个很好的做法,就是记下您的算法。它会更加清晰。 所以你基本上应该得到这样的东西:
主要功能:启动程序时调用一次
inputNames:调用以询问玩家姓名
rollDice:调用以获取随机数
(3bis) rollDice替代方案:被调用以获得获胜者的名字。在这里你需要在参数
中传递玩家名字现在你可以尝试自己,你当然可以增强它。 这是我制作的一个,如果你遇到困难,可以用它作为参考:https://repl.it/BiKd/6。