Форум сайта python.su
Вот код , где нужно угадать рандомное число от 1 до 100:
from random import* n = randint(1, 100) print(n) print('Добро пожаловать в числовую угадайку') def is_valid(num): return num.isdigit() and 1 <= int(num) <= 100 m = input('Введите число от 1 до 100:') while is_valid(m)==False: if is_valid(m)==False: m = input('А может быть все-таки введем целое число от 1 до 100:') else: m = int(m) if m < n: print('Ваше число меньше загаданного, попробуйте еще разок') elif m > n: print('Ваше число больше загаданного, попробуйте еще разок') else: print('Вы угадали, поздравляем!')
Офлайн
dmitry1959Если ты сразу правильно ввёл, то как она зайдёт в цикл?
Не могу понять, почему в цикле while после else - m = int(m), m остается строкой.
Отредактировано py.user.next (Май 21, 2023 23:56:18)
Офлайн
import random # получаем случайное число def get_random_num(num_range): return random.randint(*num_range) # получаем число от пользователя def get_user_num(num_range): while True: data = input('>') if input_is_valid(data, num_range): return int(data) # проверяем корректность данных def input_is_valid(input_data, num_range): if not input_data.isdigit(): display_error_not_digit() elif int(input_data) > num_range[1] or int(input_data) < num_range[0]: display_error_out_of_range() else: return True # сравниваем два числа def compare(user_num, rand_num): if user_num > rand_num: return 1 elif user_num < rand_num: return -1 else: return 0 # выводим сообщение на экран def dispalay_message(result): messages = { 1: 'ваше число больше', -1: 'ваше число меньше', 0: 'правильно' } print(messages[result]) def display_error_not_digit(): print('в строке должны быть только цифры') def display_error_out_of_range(): print('число вне диапазона') def display_start_message(num_range): print(f'загадано число от {num_range[0]} до {num_range[1]} включительно, как думаете какое') def game_continue(): while True: data = input('чтобы сыграть еще раз нажимте enter\nдля выхода "quit"\n>') if data == '': return True elif data == 'quit': return False def game(num_range): rand_num = get_random_num(num_range) display_start_message(num_range) while True: user_num = get_user_num(num_range) result = compare(user_num, rand_num) dispalay_message(result) if user_num == rand_num: break def main(): for i in range(1, 21): game((0, i)) if not game_continue(): return if __name__ == '__main__': main()
Офлайн