2015-12-09 104 views
2

我沿着Yahtzee的骰子滚动游戏创造线。我必须给用户5个掷骰子,并询问他们想要重掷哪个骰子的5位数字。对于实施例冷冻骰子滚动?

Your roll is: 5 1 5 5 1 
Which dice should I roll again?: 234 
Your new roll is: 5 7 2 4 1 

3个中间号码改变,因为这些都是切块轧制。 我不知道如何有效地做到这一点,我可以创建240条if语句,但似乎并不像这样做的正确方法。

这是我的代码迄今

import random 

def yahtzee(): 
    dice1 = random.randrange(1,6) 
    dice2 = random.randrange(1,6) 
    dice3 = random.randrange(1,6) 
    dice4 = random.randrange(1,6) 
    dice5 = random.randrange(1,6) 
    print('Your roll is: ' + ' ' + str(dice1) + ' ' + str(dice2) + ' ' + str(dice3) + ' ' + str(dice4) + ' ' + str(dice5)) 
    reroll = input('Which dice should I roll again?: ') 

这使我的结果:

yahtzee() 
Your roll is: 4 3 2 1 5 
Which dice should I roll again?: 

不知道如何去这样做骰子rerolled,任何帮助,将不胜感激!谢谢!

回答

2

在一般情况下,它更容易管理存储在列表中的结果:

def yahtzee(): 
    dice = [random.randrange(1, 6) for _ in range(5)] 
    print('Your roll is: ', *dice) 
    reroll = input('Which dice should I roll again?: ') 
    for i in reroll: 
     dice[int(i) - 1] = random.randrange(1, 6) 
    print('Your roll is: ', *dice) 

输出示例:

Your roll is: 5 3 2 5 3 
Which dice should I roll again?: 12 
Your roll is: 1 2 2 5 3 
+0

啊真棒,太感谢你了,算了我的代码是非常低效的,真的欣赏它! –