2015-12-09 2 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

ах удивительное, спасибо так много, поняли мой код был очень неэффективен, на самом деле ценить это! –

Смежные вопросы