2016-10-23 2 views
0

Я пытаюсь сделать кубик для моего племянника, чтобы он мог играть в настольные игры без кубиков. я застрял в цикле while, даже если я ввожу условие, которое истинно. Я пытаюсь заставить его выбрать, какие кости он хочет использовать, но если он выбирает неправильные кости, он просит его снова ввести его. мой код ...Застрял в петле

dice_select = input('Enter the amount of sides are on the dice you want to throw, either 4, 6, or 12: ') 
while dice_select != 4 or dice_select != 6 or dice_select != 12: 
    dice_select = int(input('Sorry thats not quite right. Enter the amount of sides are on the dice you want to throw, either 4, 6, or 12: ')) 

если я ввести 4, 6 или 12, то он по-прежнему ставит меня в петлю, когда предполагается продолжить.

+0

Единственный способ, которым это условие может быть ложным, было бы, если бы 'dice_select' было равно 4, 6 и 12 в одно и то же время. –

+0

перечитайте ваше состояние. оцените его за ценности, которые вы ищете. Что происходит, когда 'dice_select' является' 4'? – njzk2

ответ

2

Попробуйте:

dice_select = int(input('Enter the amount of sides are on the dice you want to throw, either 4, 6, or 12: ')) 
    while not (dice_select == 4 or dice_select == 6 or dice_select == 12): 
     dice_select = int(input('Sorry thats not quite right. Enter the amount of sides are on the dice you want to throw, either 4, 6, or 12: ')) 

Это означает, что цикл, пока dice_select не равен 4, 6 или 12.

С вашей программе, ваше состояние во время цикла всегда верно, потому что, когда она равна 4, ваша программа проверяет false или true или true, который всегда будет правдой.

Иными словами, ваша программа ищет, когда dice_select равно 4,6 и 12 одновременно. Это невозможно.

+0

привет спасибо за ответ. Я получаю это – Lomore

+0

Введите количество бонусов на кости, которые вы хотите бросить, либо 4, 6, либо 12: 12 Простите, что не совсем правильно. Введите количество сторон на кости, которые вы хотите бросить, либо 4, 6, либо 12: 12 Вы выбрали бросок 12-сторонних кубиков, и результат 1 – Lomore

+0

Так как в вашем первом заявлении вы не конвертируете свой вход в целое число, вы должны были бы сравнить строку и целое число, которое всегда будет ложным в python. Я отредактирую свой код выше, чтобы это отразить. – creeperdomain

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