Python 中的随机掷骰子游戏
Random Dice Roll Game in Python
所以我查看了所有相关问题,但似乎无法找到特定于我的程序的答案。我必须有两个玩家掷骰子游戏,随机数并宣布获胜者。截至目前,当程序运行时它说:
获胜者是:
输入玩家 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()
我不是在寻找答案,只是在寻找走上正确道路的指导。
提前致谢。
以下是一些可以帮助和指导您的步骤:
编码
请务必正确缩进您的代码,因为这是 python 语法的一部分。所以带有 def ...():
的行不应该缩进,定义内容应该缩进一级,while
内容应该缩进两级......等等。所以你应该只让 import
和不同的 def
在左边对齐(也许它发生在你将代码粘贴到 Whosebug 上时,但只是为了确定)。
停止向您所做的每个定义传递参数。如果不需要将变量值传递给函数,请不要使用参数。例如,在 def inputNames(playerOne,playerTwo)
中,参数 playerOne,playerTwo
是无用的,因为您只是使用此函数来定义它们的值。同样的问题出现在rollDice
.
注意错别字,你在rollDice里用3"n"写了"winnnerName"
保持简单。只使用需要的东西。您的代码结构良好。但是这些功能应该只做它们打算做的事情。示例:rollDice
只掷骰子,不公布结果。因此,您可能只是 return 获胜者,甚至 return 数字并在主程序中测试获胜者。这将我们带到下一部分,即算法。
算法
如果您对自己的代码不满意,一个好的做法是写下您的算法。会清楚很多。
所以你基本上应该得到这样的结果:
main函数:启动程序时调用一次
- 欢迎用户
- 设置有用的变量:endProgram(稍后我们需要它来进入循环)
- 调用 inputNames -> 我们存储玩家姓名,仅在开始时存储一次,除非您希望玩家能够更改他们
- 然后进入只要用户不结束程序就执行的循环:
- 调用rollDice -> 我们可以存储rollDice得到的2个骰子数return,测试哪个玩家是赢家,直接输出哪个赢家赢了OR测试which player won in rollDice which return 玩家姓名,如果不平则打印它。
- 最后询问玩家是否要停止游戏,并将他的回答存储在endProgram中。
- 循环结束
inputNames : 打电话询问玩家姓名
- 输入玩家1的名字并存储
- 输入玩家2的名字并存储
- Return 存储玩家姓名
rollDice : 调用以获取随机数
- 为玩家 1 生成并存储随机数
- 为玩家 2 生成并存储随机数
- Return存储的随机数
(3bis) rollDice 备选方案 : 调用以获取获胜者的姓名。这里你需要在参数
中传递玩家名字
- 为玩家 1 生成并存储随机数
- 为玩家 2 生成并存储随机数
- 将获胜者姓名设置为 'NO NAME' 以防平局
- 测试哪个玩家赢了,如果不平则修改赢家名字
- Return获奖者姓名
现在你可以自己试试,你一定可以提升它。
这是我做的,如果卡住可以参考一下:https://repl.it/BiKd/6.
所以我查看了所有相关问题,但似乎无法找到特定于我的程序的答案。我必须有两个玩家掷骰子游戏,随机数并宣布获胜者。截至目前,当程序运行时它说: 获胜者是: 输入玩家 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()
我不是在寻找答案,只是在寻找走上正确道路的指导。 提前致谢。
以下是一些可以帮助和指导您的步骤:
编码
请务必正确缩进您的代码,因为这是 python 语法的一部分。所以带有
def ...():
的行不应该缩进,定义内容应该缩进一级,while
内容应该缩进两级......等等。所以你应该只让import
和不同的def
在左边对齐(也许它发生在你将代码粘贴到 Whosebug 上时,但只是为了确定)。停止向您所做的每个定义传递参数。如果不需要将变量值传递给函数,请不要使用参数。例如,在
def inputNames(playerOne,playerTwo)
中,参数playerOne,playerTwo
是无用的,因为您只是使用此函数来定义它们的值。同样的问题出现在rollDice
.注意错别字,你在rollDice里用3"n"写了"winnnerName"
保持简单。只使用需要的东西。您的代码结构良好。但是这些功能应该只做它们打算做的事情。示例:
rollDice
只掷骰子,不公布结果。因此,您可能只是 return 获胜者,甚至 return 数字并在主程序中测试获胜者。这将我们带到下一部分,即算法。
算法
如果您对自己的代码不满意,一个好的做法是写下您的算法。会清楚很多。 所以你基本上应该得到这样的结果:
main函数:启动程序时调用一次
- 欢迎用户
- 设置有用的变量:endProgram(稍后我们需要它来进入循环)
- 调用 inputNames -> 我们存储玩家姓名,仅在开始时存储一次,除非您希望玩家能够更改他们
- 然后进入只要用户不结束程序就执行的循环:
- 调用rollDice -> 我们可以存储rollDice得到的2个骰子数return,测试哪个玩家是赢家,直接输出哪个赢家赢了OR测试which player won in rollDice which return 玩家姓名,如果不平则打印它。
- 最后询问玩家是否要停止游戏,并将他的回答存储在endProgram中。
- 循环结束
inputNames : 打电话询问玩家姓名
- 输入玩家1的名字并存储
- 输入玩家2的名字并存储
- Return 存储玩家姓名
rollDice : 调用以获取随机数
- 为玩家 1 生成并存储随机数
- 为玩家 2 生成并存储随机数
- Return存储的随机数
(3bis) rollDice 备选方案 : 调用以获取获胜者的姓名。这里你需要在参数
中传递玩家名字- 为玩家 1 生成并存储随机数
- 为玩家 2 生成并存储随机数
- 将获胜者姓名设置为 'NO NAME' 以防平局
- 测试哪个玩家赢了,如果不平则修改赢家名字
- Return获奖者姓名
现在你可以自己试试,你一定可以提升它。 这是我做的,如果卡住可以参考一下:https://repl.it/BiKd/6.