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