Как вернуться к циклу while True, который стоит сразу после импорта библиотек?
import random
import time
attempts = 0
print('Привет! В данной игре тебе предстоит угадать число в диапазоне, который ты введёшь сам.')
time.sleep(0.5)
print('Теперь тебе предстоит ввести диапазон, из которого будут случайным образом выбираться числа.')
time.sleep(0.5)
print('Приступим!')
time.sleep(0.5)
while True:
first_number = input('Введите начало диапазона: ')
second_number = input('Введите конец диапазона: ')
if first_number == second_number:
print('Числа должны быть разными!')
else:
break
first_number = int(first_number)
second_number = int(second_number)
number = random.randint(first_number, second_number)
while True:
user_number = int(input('Введи число: '.format(first_number, second_number)))
if user_number < number:
print('Загаданное число больше введённого ')
attempts += 1
elif user_number > number:
print('Загаданное число меньше введённого ')
attempts += 1
else:
if attempts == 0:
print('''Вы угадали число! Это было число {}
Вы угадали с первого раза ;)'''.format(number, attempts))
time.sleep(1)
else:
print('''Вы угадали число! Это было число {}
Было потраченно {} попыток'''.format(number, attempts))
time.sleep(2)
break
answer = input('Хотите повторить игру? Да/Нет: ')
if answer == 'Да':
print('Подождите секунду!')
else:
print('До скорой встречи')
time.sleep(1)
break
Ответы (2 шт):
Автор решения: Corrygan
→ Ссылка
Вы можете использовать оператор return, но для этого нужно поместить весь цикл в функцию, я затестил код, он работал.
def started():
while True:
first_number = input('Введите начало диапазона: ')
second_number = input('Введите конец диапазона: ')
if first_number == second_number:
print('Числа должны быть разными!')
else:
return
started()
Автор решения: Namerek
→ Ссылка
Немного пофантазировал на тему
import sys
from random import randrange
print('Для выхода из игры вместо ввода значения нажмите Enter.\n')
def get_value(prompt: str, separate_block: bool = False):
if (val := input(f'{prompt}: ')) == '':
print('Выполнение прервано')
sys.exit(0)
if separate_block:
print()
sign = ''
if val.startswith(('-', '+')):
sign, *l_val = val
val = ''.join(l_val)
if val.isnumeric():
return int(sign + val)
print('Введено неверное значение')
while True:
lower_bound = upper_bound = 0
while lower_bound >= upper_bound:
while (lower_bound := get_value('Определите нижнюю '
'границу диапазона')) is None:
pass
while (upper_bound := get_value('Определите верхнюю '
'границу диапазона', separate_block=True)) is None:
pass
if lower_bound >= upper_bound:
print(
f'Нижняя граница диапазона не может быть больше или равна верхней .\nПопробуйте еще раз.\n'
)
hidden_num = randrange(lower_bound, upper_bound + 1)
try_count = 1
while (test_num := get_value(f'Попытка № {try_count}. '
f'Ваше число')) != hidden_num:
try_count += 1
if test_num not in range(lower_bound, upper_bound + 1):
print(f'Введенное число вне диапазона '
f'{lower_bound}..{upper_bound}\n')
elif test_num < hidden_num:
print(f'Число {test_num} меньше загаданного\n')
elif test_num > hidden_num:
print(f'Число {test_num} больше загаданного\n')
else:
print(f'Поздравляем! Вы угадали число {hidden_num} '
f'из диапазона {lower_bound}..{upper_bound} за {try_count} попыток')
break
Для выхода из игры вместо ввода значения нажмите Enter.
Определите нижнюю границу диапазона: 300
Определите верхнюю границу диапазона: 1000
Попытка № 1. Ваше число: 650
Число 650 меньше загаданного
Попытка № 2. Ваше число: 825
Число 825 меньше загаданного
Попытка № 3. Ваше число: 912
Число 912 меньше загаданного
Попытка № 4. Ваше число: 956
Число 956 больше загаданного
Попытка № 5. Ваше число: 934
Число 934 больше загаданного
Попытка № 6. Ваше число: 923
Число 923 больше загаданного
Попытка № 7. Ваше число: 917
Число 917 меньше загаданного
Попытка № 8. Ваше число: 920
Число 920 больше загаданного
Попытка № 9. Ваше число: 918
Число 918 меньше загаданного
Попытка № 10. Ваше число: 919
Поздравляем! Вы угадали число 919 из диапазона 300..1000 за 10 попыток