@mcmikey

Как убрать бесконечный цикл в простой игре?

Я решил первый раз написать прогу без гайда. Смысл в том что рандомно генерируется число а затем игрок его угадывает. Если число меньше игроку предлагает выбрать число поменьше и на оборот. Но при вводе первого числа начинает бесконечно писать реплику. Как это исправить и сделать так что бы вопрос снова задавался после неудачной попытки?
Вот код -
import random

play = input("Press enter to play: ")
num = str(random.randint(0, 20))
guess = input("Guess number from 0 to 20: ")

while True:
	if guess > num:
		print("Try a smaller number.")
	elif guess < num:
		print("Try a bigger number.")
	if guess == num:
		print("damn you lucky guy!")
		break
  • Вопрос задан
  • 82 просмотра
Решения вопроса 1
DispooL
@DispooL
Просто Сашка999
Спрашивай ответ каждую итерацию цикла. И раз ты вызываешь randint, то то что ввёл пользователь нужно конвертировать в int, чтобы условия работали верно, иначе ты просто сравниваешь строки, а не числа
import random

play = input("Press enter to play: ")
num = random.randint(0, 20)

while True:
  guess = int(input("Guess number from 0 to 20: "))
  if guess > num:
    print("Try a smaller number.")
  elif guess < num:
    print("Try a bigger number.")
  if guess == num:
    print("damn you lucky guy!")
    break
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
SoreMix
@SoreMix Куратор тега Python
yellow
Логично, что нужно каждый раз спрашивать число

while True:
  guess = input("Guess number from 0 to 20: ")
  if guess > num:
    print("Try a smaller number.")
  elif guess < num:
    print("Try a bigger number.")
  if guess == num:
    print("damn you lucky guy!")
    break
Ответ написан
Комментировать
Wispik
@Wispik
1. Число надо спрашивать в цикле while
2. Не надо конвертировать загаданное число в string
3. Введеное число пользователя нужно конвертировать в int и в цикле соответственно сравнивать числа (а не строки, как сейчас)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы