Python 如何根据掷骰子的分数对名字进行排序
我正在开发一个程序,它可以生成三个不同的整数,并将它们分配给各个值,这样就可以决定第一个、第二个和第三个。在这种情况下,我假设三个不同的玩家,每个人掷一个“十面骰”。最高的应该得到第一个回合,第二个最高的应该去第二,第三个应该去最后。一切似乎都进展顺利,但现在我有了自己的价值观,我不知道如何安排这些价值观,这样我就可以开始让球员轮流比赛了。如果您有任何意见,我将不胜感激 以下是我到目前为止编写的代码:Python 如何根据掷骰子的分数对名字进行排序,python,Python,我正在开发一个程序,它可以生成三个不同的整数,并将它们分配给各个值,这样就可以决定第一个、第二个和第三个。在这种情况下,我假设三个不同的玩家,每个人掷一个“十面骰”。最高的应该得到第一个回合,第二个最高的应该去第二,第三个应该去最后。一切似乎都进展顺利,但现在我有了自己的价值观,我不知道如何安排这些价值观,这样我就可以开始让球员轮流比赛了。如果您有任何意见,我将不胜感激 以下是我到目前为止编写的代码: import sys import os import random import time
import sys
import os
import random
import time
os.system('clear')
print ('Welcome! Please type Player 1\'s name!: ')
playerOne = input()
print ('Okay! Please type Player 2\'s name!: ')
playerTwo = input()
print ('Fantastic! Finally, please type Player 3\'s name!: ')
playerThree = input()
os.system('clear')
print()
time.sleep(2)
def startFightRoll():
playerOneRoll = random.randint(1,10)
time.sleep(.5)
print('Okay, let\'s roll a ten-sided die to see who gets to go first!')
print()
time.sleep(2)
print ('<Ten-sided dice roll> ')
print ('---------------------------------')
print (playerOne + ' rolls ' + str(playerOneRoll))
print()
print()
playerTwoRoll = random.randint(1,10)
time.sleep(2)
print ('<Ten-sided dice roll> ')
print ('---------------------------------')
print (playerTwo + ' rolls ' + str(playerTwoRoll))
print()
print()
playerThreeRoll = random.randint(1,10)
time.sleep(2)
print ('<Ten-sided dice roll> ')
print ('---------------------------------')
print (playerThree + ' rolls ' + str(playerThreeRoll))
startFightRoll()
导入系统
导入操作系统
随机输入
导入时间
操作系统(“清除”)
打印('欢迎!请键入玩家1的姓名!:')
playerOne=input()
打印('好的!请键入玩家2的名字!:')
playerTwo=输入()
打印('太棒了!最后,请键入玩家3的名字!:')
playerThree=输入()
操作系统(“清除”)
打印()
时间。睡眠(2)
def STARTFIGHTTROLL():
playerRoll=random.randint(1,10)
时间。睡眠(.5)
打印(‘好吧,让我们掷一个十面骰子,看看谁先去!’
打印()
时间。睡眠(2)
打印(“”)
打印(“---------------------------------------”)
打印(播放者+滚动+str(播放者滚动))
打印()
打印()
playerTwoRoll=random.randint(1,10)
时间。睡眠(2)
打印(“”)
打印(“---------------------------------------”)
打印(playerTwo+‘rolls’+str(playerTwoRoll))
打印()
打印()
playerThreeRoll=random.randint(1,10)
时间。睡眠(2)
打印(“”)
打印(“---------------------------------------”)
打印(playerThree+‘rolls’+str(playerThreeRoll))
startFightRoll()
响应下面的线程
好吧,我是新手,所以请原谅我的代码——它效率不高,我还在适应。我在其中添加了一些部分,以解决1)玩家在名称字段中不输入任何内容,以及2)掷骰子时生成的平局。我还创建了一个按降序排列的掷骰子列表,但现在我需要找到一种方法将掷骰子关联回生成它的用户。任何关于如何正确地做到这一点的建议都是非常值得赞赏的
import sys
import os
import random
import time
os.system('clear')
def playerOneName():
global playerOne
playerOne = input()
if len(playerOne) < 1:
print('Please enter your name, Player 1!')
playerOneName()
def playerTwoName():
global playerTwo
playerTwo = input()
if len(playerTwo) < 1:
print('Please enter your name, Player 2!')
playerTwoName()
def playerThreeName():
global playerThree
playerThree = input()
if len(playerThree) < 1:
print('Please enter your name, Player 3!')
playerThreeName()
os.system('clear')
print()
time.sleep(2)
def startFightRoll():
global playerOneRoll
global playerTwoRoll
global playerThreeRoll
playerOneRoll = random.randint(1,10)
time.sleep(.5)
print('Okay, let\'s roll a ten-sided die to see who gets to go first!')
print()
time.sleep(2)
print ('<Ten-sided dice roll> ')
print ('---------------------------------')
print (playerOne + ' rolls ' + str(playerOneRoll))
print()
print()
playerTwoRoll = random.randint(1,10)
time.sleep(2)
print ('<Ten-sided dice roll> ')
print ('---------------------------------')
print (playerTwo + ' rolls ' + str(playerTwoRoll))
print()
print()
playerThreeRoll = random.randint(1,10)
time.sleep(2)
print ('<Ten-sided dice roll> ')
print ('---------------------------------')
print (playerThree + ' rolls ' + str(playerThreeRoll))
if playerOneRoll == playerTwoRoll:
print ('There\'s a tie, rolling again!')
time.sleep(3)
os.system('clear')
startFightRoll()
if playerOneRoll == playerThreeRoll:
print ('There\'s a tie, rolling again!')
time.sleep(3)
os.system('clear')
startFightRoll()
if playerTwoRoll == playerThreeRoll:
print ('There\'s a tie, rolling again!')
os.system('clear')
time.sleep(3)
startFightRoll()
O = [playerOneRoll, playerTwoRoll, playerThreeRoll]
O = sorted(O, reverse = True)
print (O)
print ('Welcome! Please type Player 1\'s name!: ')
playerOneName()
print ('Okay! Please type Player 2\'s name!: ')
playerTwoName()
print ('Fantastic! Finally, please type Player 3\'s name!: ')
playerThreeName()
os.system('clear')
startFightRoll()
导入系统
导入操作系统
随机输入
导入时间
操作系统(“清除”)
def PlayName():
全球玩家指南
playerOne=input()
如果len(playerOne)<1:
打印('请输入您的姓名,玩家1!')
游戏名称()
def playerTwoName():
全球玩家2
playerTwo=输入()
如果len(playerTwo)<1:
打印('请输入您的姓名,玩家2!')
playerWoName()
def playerThreeName():
全球玩家三
playerThree=输入()
如果len(playerThree)<1:
打印('请输入您的姓名,玩家3!')
playerThreeName()
操作系统(“清除”)
打印()
时间。睡眠(2)
def STARTFIGHTTROLL():
全球球员名单
全球球员
全球玩家三人行
playerRoll=random.randint(1,10)
时间。睡眠(.5)
打印(‘好吧,让我们掷一个十面骰子,看看谁先去!’
打印()
时间。睡眠(2)
打印(“”)
打印(“---------------------------------------”)
打印(播放者+滚动+str(播放者滚动))
打印()
打印()
playerTwoRoll=random.randint(1,10)
时间。睡眠(2)
打印(“”)
打印(“---------------------------------------”)
打印(playerTwo+‘rolls’+str(playerTwoRoll))
打印()
打印()
playerThreeRoll=random.randint(1,10)
时间。睡眠(2)
打印(“”)
打印(“---------------------------------------”)
打印(playerThree+‘rolls’+str(playerThreeRoll))
如果playerRoll==playerToRoll:
打印('有一条领带,又开始打滚!')
时间。睡眠(3)
操作系统(“清除”)
startFightRoll()
如果playerRoll==playerThreeRoll:
打印('有一条领带,又开始打滚!')
时间。睡眠(3)
操作系统(“清除”)
startFightRoll()
如果playerTwoRoll==playerThreeRoll:
打印('有一条领带,又开始打滚!')
操作系统(“清除”)
时间。睡眠(3)
startFightRoll()
O=[playerRoll,playerWoroll,playerThreeRoll]
O=已排序(O,反向=真)
打印(O)
打印('欢迎!请键入玩家1的姓名!:')
游戏名称()
打印('好的!请键入玩家2的名字!:')
playerWoName()
打印('太棒了!最后,请键入玩家3的名字!:')
playerThreeName()
操作系统(“清除”)
startFightRoll()
将您的值添加到列表中(假设列表是x
):
你想用字典
将每个玩家姓名及其随机卷添加到字典中:
players = {'player1': randint(1, 10), 'player2': randint(1, 10), 'player3': randint(1, 10)}
但是,出于您的目的,您需要与此字典相反的名称(滚动,然后是玩家名称),因为您希望遍历滚动。如果任何一个卷相同,这将导致混乱,因此您可以创建更大的范围(randint(1100)
),例如:
这里有一个可能的选择,创建一个字典并对其键进行排序(我承认这有点奇怪)。请注意三个“重复”块,因此请进一步执行Lattyware的评论建议,在每个玩家上循环
import sys
import os
import random
import time
os.system('clear')
print ('Welcome! Please type Player 1\'s name!: ')
playerOne = raw_input()
print ('Okay! Please type Player 2\'s name!: ')
playerTwo = raw_input()
print ('Fantastic! Finally, please type Player 3\'s name!: ')
playerThree = raw_input()
os.system('clear')
print()
time.sleep(2)
def startFightRoll():
time.sleep(.5)
print('Okay, let\'s roll a ten-sided die to see who gets to go first!')
print
rolls = {}
playerOneRoll = random.randint(1,10)
rolls[playerOneRoll] = 'Player One'
time.sleep(1)
print ('<Ten-sided dice roll> ')
print ('---------------------------------')
print (playerOne + ' rolls ' + str(playerOneRoll))
print
print
playerTwoRoll = random.randint(1,10)
rolls[playerTwoRoll] = 'Player Two'
time.sleep(1)
print ('<Ten-sided dice roll> ')
print ('---------------------------------')
print (playerTwo + ' rolls ' + str(playerTwoRoll))
print
print
playerThreeRoll = random.randint(1,10)
rolls[playerThreeRoll] = "Player Three"
time.sleep(1)
print ('<Ten-sided dice roll> ')
print ('---------------------------------')
print (playerThree + ' rolls ' + str(playerThreeRoll))
print
print
print "The winner is %s" % rolls[max(rolls.keys())]
startFightRoll()
导入系统
导入操作系统
随机输入
导入时间
操作系统(“清除”)
打印('欢迎!请键入玩家1的姓名!:')
playerOne=原始输入()
打印('好的!请键入玩家2的名字!:')
playerTwo=原始输入()
打印('太棒了!最后,请键入玩家3的名字!:')
playerThree=原始输入()
操作系统(“清除”)
打印()
时间。睡眠(2)
def STARTFIGHTTROLL():
时间。睡眠(.5)
打印(‘好吧,让我们掷一个十面骰子,看看谁先去!’
打印
滚动={}
playerRoll=random.randint(1,10)
掷骰子[玩家掷骰子]=“玩家一”
时间。睡眠(1)
打印(“”)
打印(“---------------------------------------”)
打印(播放者+滚动+str(播放者滚动))
打印
打印
playerTwoRoll=random.randin
players = {randint(1, 1000): 'player1', randint(1, 1000): 'player2', randint(1, 1000): 'player3'}
rolls = sorted(players.keys())
player_sequence = [players[n] for n in rolls]
import sys
import os
import random
import time
os.system('clear')
print ('Welcome! Please type Player 1\'s name!: ')
playerOne = raw_input()
print ('Okay! Please type Player 2\'s name!: ')
playerTwo = raw_input()
print ('Fantastic! Finally, please type Player 3\'s name!: ')
playerThree = raw_input()
os.system('clear')
print()
time.sleep(2)
def startFightRoll():
time.sleep(.5)
print('Okay, let\'s roll a ten-sided die to see who gets to go first!')
print
rolls = {}
playerOneRoll = random.randint(1,10)
rolls[playerOneRoll] = 'Player One'
time.sleep(1)
print ('<Ten-sided dice roll> ')
print ('---------------------------------')
print (playerOne + ' rolls ' + str(playerOneRoll))
print
print
playerTwoRoll = random.randint(1,10)
rolls[playerTwoRoll] = 'Player Two'
time.sleep(1)
print ('<Ten-sided dice roll> ')
print ('---------------------------------')
print (playerTwo + ' rolls ' + str(playerTwoRoll))
print
print
playerThreeRoll = random.randint(1,10)
rolls[playerThreeRoll] = "Player Three"
time.sleep(1)
print ('<Ten-sided dice roll> ')
print ('---------------------------------')
print (playerThree + ' rolls ' + str(playerThreeRoll))
print
print
print "The winner is %s" % rolls[max(rolls.keys())]
startFightRoll()
import os
import random
import time
os.system('clear')
print ('Welcome! Please type Player 1\'s name!: ')
playerOne = input()
print ('Okay! Please type Player 2\'s name!: ')
playerTwo = input()
print ('Fantastic! Finally, please type Player 3\'s name!: ')
playerThree = input()
os.system('clear')
print()
time.sleep(2)
def initialRoll(player):
"""Roll the dice for the given player"""
playerRoll = random.randint(1, 10)
print ('<Ten-sided dice roll> ')
print ('---------------------------------')
print (player + ' rolls ' + str(playerRoll))
print()
return playerRoll
def startFightRoll():
"""Determine the order of the players."""
time.sleep(.5)
print('Okay, let\'s roll a ten-sided die to see who gets to go first!')
print()
// Temporarily store the rolls. The key is the roll number and the value is the
// player who rolled it
order = {}
for player in [playerOne, playerTwo, playerThree]:
playerRoll = initialRoll(player)
# Let's make sure that two players didn't roll the same number, if they did
# then let's roll a new number
while playerRoll in order:
print ('OH No! That number has already been rolled. Let\'s roll again')
playerRoll = initialRoll(player)
order[playerRoll] = player
time.sleep(2)
# Sort the keys (which are the numbers rolled), then create a new list with order
# of who should go first
return [order[roll] for roll in sorted(order.keys(), reverse=True)]
rollOrder = startFightRoll()
print ('The order of the players are: ' + ', '.join(rollOrder))