Нужна помощь в исправлении случайного числа - PullRequest
0 голосов
/ 27 марта 2019

Я изучаю Python и работаю над случайным броском игральных костей.Когда я запускаю его, он повторяет тот же номер, который впервые отображается после того, как его спросили, хотите ли вы играть снова.Мне нужна помощь, чтобы найти, где я ошибаюсь.

Я пытался перемещать код, а также помещал различные варианты кода.Я просто в тупик.

import sys
import random
import time


greeting = "Welcome to my Dice Game!"
roll = "Lets roll this die!"
die = random.randint(0, 6)

print(greeting)
time.sleep(2)

answer = input("Want to play?")

while answer == "yes" or answer == "y":
    print(roll)
    time.sleep(2)
    print(die)
    answer = input("Want to play again?")
print("Thanks for playing!")

Вот что я получаю:

Welcome to my Dice Game!
Want to play?yes
Lets roll this die!
5
Want to play again?yes
Lets roll this die!
5
Want to play again?y
Lets roll this die!
5

Ответы [ 2 ]

2 голосов
/ 27 марта 2019

Вам нужно пересчитывать значение кубика каждый раз в цикле, например:

import sys
import random
import time


greeting = "Welcome to my Dice Game!"
roll = "Lets roll this die!"


print(greeting)
time.sleep(2)

answer = input("Want to play?")

while answer == "yes" or answer == "y":
    print(roll)
    time.sleep(2)
    die = random.randint(0, 6) # recompute it here instead
    print(die)
    answer = input("Want to play again?")
print("Thanks for playing!")
1 голос
/ 27 марта 2019

Когда вы запускаете команду die = random.randint(0, 6), вы говорите Python: «Используйте функцию random.randint(), чтобы выбрать случайное целое число от 1 до 6, а затем установите переменную с именем die равной целому числу, котороебыл выбран ".Как только это будет сделано, остальная часть вашего кода ничего не сделает для обновления значения die.Это означает, что print(die) в цикле будет продолжать печатать то значение, которое было ему изначально присвоено.Другими словами, команда die = random.randint(0, 6) не означает «Повторно выполнить команду random.randint(0, 6) и получать другое случайное число каждый раз, когда я ссылаюсь на die».Скорее, die - это просто некоторая переменная с определенным постоянным значением.

Поскольку random.randint() - это то, что генерирует фактическое число, один из способов продолжать обновлять die - просто перемещать имеющуюся командуза пределами цикла внутрь цикла:

while answer == "yes" or answer == "y":
    print(roll)
    die = random.randint(0, 6) # Generate a new random number, then assign it to 'die'
    time.sleep(2)
    print(die)
    answer = input("Want to play again?")

На самом деле, если вы ничего не делаете с числом, отличным от его печати, вы можете вообще забыть использовать переменную и просто вставитьrandom.randint() команда внутри вашей print команды:

while answer == "yes" or answer == "y":
    print(roll)
    time.sleep(2)
    print(random.randint(0, 6))
    answer = input("Want to play again?")
...