Dice Simulator проект в Python 3 - PullRequest
       40

Dice Simulator проект в Python 3

0 голосов
/ 19 февраля 2020

Мой код работает для выхода из программы для моих операторов 'elif' и 'else', но когда я ввожу 'yes', я застреваю в этом вводе l oop, где все, что я ввожу, все еще бросает кости. Как выйти из программы, введя «нет», после того как я уже ввел «да» и ввел l oop?


import random

min = 1
max = 6

prompt = "Roll dice? Type yes or no. "
roll_dice = input(prompt)

while roll_dice:

    if roll_dice == "yes":
        print ("you rolled", random.randint(min, max), random.randint(min, max))
        input(prompt)

    elif roll_dice == "no":
        print ("see you later!")
        break

    else:
        print ("invalid answer")
        break

Ответы [ 2 ]

0 голосов
/ 19 февраля 2020

Вы можете изменить код следующим образом:

while roll_dice =="yes":
      print ("you rolled", random.randint(min, max), random.randint(min, max))
      roll_dice = input(prompt)

Вы должны включить roll_dice для получения возвращаемого значения из функции ввода и проверки, если ответ - да, нет или недействителен.

В вашем коде input возвращает значение, но это значение никогда не проверяется после выполнения оператора if один раз.

while roll_dice =="yes":
      print ("you rolled", random.randint(min, max), random.randint(min, max))
      input(prompt)
0 голосов
/ 19 февраля 2020

Вместо того, чтобы просто делать:

input(prompt)

Что ничего не делает с заданным вводом, что означает, что roll_dice всегда будет равно да , и вы застрянете в бесконечной л oop.

Вы должны использовать:

roll_dice = input(prompt)

, который устанавливает roll_dice в новое значение и, следовательно, позволяет вам выйти из l oop.

...