Project_1. Угадай число (Python)
Это очень простой проект, но его реализаций может быть множество. Весь сценарий состоит из 3-х лёгких функций.
Описание
Компьютер выбирает случайное число, а игроки должны будут по очереди угадывать его.
Код
Начнём с самого простого, а именно с импорта. Нам потребуется только метод «randint» из модуля «random».
from random import randint
Первая функция принимает строку в виде аргумента и выводит её. Игроку необходимо ввести натуральное число, равное количеству игроков. Если входное данное не будет натуральным числом, то функция возвращает саму себя, то есть создаёт рекурсию с новой строкой.
def number_of_players(launch: str) -> int: print(launch) try: number = int(input()) return number except ValueError: return number_of_players("Please enter a natural number") start = number_of_players("Enter the number of players")
Вторая функция принимает аргумент в виде натурального числа. Ролью данной функции является составление словаря с именами игроков и выводом. Чтобы облегчить код, будем использовать генератор словарей. Создаём цикл, и с его помощью выводим список игроков.
def player_names(number: int) -> dict: print("Enter player names") list_of_players = print("List of players:") for key, value in list_of_players.items(): if key == len(list_of_players): print(f". .") else: print(f". ;") return list_of_players players = player_names(start)
Последняя функция отвечает уже за саму игру. Функция в виде аргумента принимает строку, словарь игроков и «key», который является необязательным аргументом. Игроку необходимо ввести диапазон чисел для создания случайного числа. Снова создаём обработчик исключений. Это нужно для того, чтобы программа работала по условию n_1 (int) < n_2 (int)
Последняя часть нашего сценария — цикл, который работает до того момента, пока игроки не угадают число. Игрок угадал — игра завершена.
def game(correction: str, game_players: dict, key=1) -> str: print(correction) try: n_1, n_2 = int(input()), int(input()) random_number = randint(n_1, n_2) except ValueError: return game("The first number must be less than the second or the input data must be natural numbers", game_players) print(f"Your range is from to ") print("The game has begun!") while True: try: if key > len(game_players): key = 1 print(f", enter a natural number") new_number = int(input()) if new_number == random_number: return f" won, congratulations!" except ValueError: print("You're missing a move because the number is entered incorrectly") key += 1 print(game("Enter 2 numbers to indicate the range", players))
Сценарий
# Guess the number # Description: the computer will choose a random number, and the players will have to take turns guessing the number from random import randint def number_of_players(launch: str) -> int: print(launch) try: number = int(input()) return number except ValueError: return number_of_players("Please enter a natural number") start = number_of_players("Enter the number of players") def player_names(number: int) -> dict: print("Enter player names") list_of_players = print("List of players:") for key, value in list_of_players.items(): if key == len(list_of_players): print(f". .") else: print(f". ;") return list_of_players players = player_names(start) def game(correction: str, game_players: dict, key=1) -> str: print(correction) try: n_1, n_2 = int(input()), int(input()) random_number = randint(n_1, n_2) except ValueError: return game("The first number must be less than the second or the input data must be natural numbers", game_players) print(f"Your range is from to ") print("The game has begun!") while True: try: if key > len(game_players): key = 1 print(f", enter a natural number") new_number = int(input()) if new_number == random_number: return f" won, congratulations!" except ValueError: print("You're missing a move because the number is entered incorrectly") key += 1 print(game("Enter 2 numbers to indicate the range", players))
Заключение
Как я уже сказал, проект очень простой. Знания базового синтаксиса будет достаточно для того, что написать подобный проект.
Игра “Угадай число” на Python
Статьи
Введение
В ходе статьи напишем игру “Угадай число” на языке программирования Python.
Игра “Угадай число” на Python
Для того, чтобы программа загадывала число нам понадобится метод randint() из модуля random. Импортируем его:
from random import randint
Создадим переменную x, в которую добавим рандомное число от одного, до десяти. Также создадим переменную attempt равную нулю. В неё будет сохраняться количество попыток игрока:
from random import randint x = randint(1, 10) attempt = 0
Создадим бесконечный цикл, внутри которого будет выводиться надпись “Я загадал число от 1 до 10, угадай его :)”. Далее дадим пользователю возможность ввести число и сохраним его в переменную user_num. Увеличим значение в attempt на единицу:
from random import randint x = randint(1, 10) attempt = 0 while True: print("Я загадал число от 1 до 10, угадай его :)") user_num = int(input("Ваша догадка: ")) attempt += 1
Добавим условие, что если введённое игроком число равняется загаданному, то он победил. Если же введённое число больше загаданного, то выводится подсказка, что загаданное число меньше. Ну и если введённое число меньше загаданного, выводится подсказка, что загаданное число больше:
from random import randint x = randint(1, 10) attempt = 0 while True: print("Я загадал число от 1 до 10, угадай его :)") user_num = int(input("Ваша догадка: ")) attempt += 1 if user_num == x: print(f"Ты угадал число, молодец!\nКоличество твоих попыток: \nСпасибо за игру!") break elif user_num > x: print("Моё число меньше.") elif user_num < x: print("Моё число больше")
Заключение
В ходе статьи мы с Вами написали код для игры “Угадай число” на языке программирования Python. Надеюсь Вам понравилась статья, желаю удачи и успехов! 🙂
Программа для угадывания загаданного пользователем числа
Есть код рабочей программы по угадыванию чисел пользователем, загаданной этой самой программой.
Необходимо создать обратную программу.
Что бы она сама угадывала загаданное число пользователем, и можно было её куррировать по выводимым ей числам(меньше/больше).
Я не понимаю как это делается. Уже перечитал всю главу по новой.
Подскажите хотя бы .
p.s: я не прошу её писать вам, я хочу понять как это делается.
Спасибо.
Реализовать интерфейс угадывания числа, загаданного пользователем(на JS)
Требуется создать сайт, который угадывает число, загаданное пользователем. Для этого, программа.
Напишите программу угадывания пользователем числа, загаданного компьютером
Добрый вечер!Нужно написать программу.Искал,на форумах есть похожие но там компьютер угадывает.
Программа для вычисления загаданного числа
Нужно написать программу для угадывания числа. 1<число<100; Вопросы вводятся типо таких:"ваше число.
Организовать процесс угадывания пользователем числа
С помощью датчика случайных чисел сгенерировать число от 1 до 100. организовать процесс угадывания.
Сообщение было отмечено Heby как решение
Решение
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
import random play = '' while play != 'n': x = input('Загадай число от 1 до 100: ') succ = '' tmp = [1, 100] count = 0 rnd = random.randint(1, 100) while succ != 'y': succ = input(f'Может быть это ? (y/n): ') count += 1 if succ == 'n': if input('Больше или меньше (b/m): ') == 'b': tmp[0] = rnd rnd = (tmp[0]+tmp[1])//2 else: tmp[1] = rnd rnd = (tmp[0]+tmp[1])//2 print(f'Ура! Угадал с попыток!') play = input('Сыграем еще раз? (y/n): ')
Сообщение было отмечено Heby как решение
Решение
Аналогичная полноценная игра, делал сам
Можно выбирать режим игры, Комп против Игрока, Игрок против Компа.
Так же идёт тест алгоритма разгадывания (2 алгоритма)
И выбор сложности, если уровень сложности высокий, то Комп использует более эффективный алгоритм разгадывания.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187
from random import randint import sys from statistics import mean def game_body(rounds, difficulty): win_round_user = 0 win_round_comp = 0 print("Кол-во раундов: ", str(rounds)) for i in range(1, rounds + 1): print("Раунд №" + str(i)) sum_steps_user = guess_user(difficulty) sum_steps_comp = guess_comp(get_middle_number) if sum_steps_user sum_steps_comp: win_round_user += 1 else: win_round_comp += 1 if win_round_comp win_round_user: result = "Победил компьютер!\n" elif win_round_comp > win_round_user: result = "Победил Пользователь!\n" else: result = "Ничья!\n" return result def fun_exit(command): if command == "exit": sys.exit() def get_middle_number(start, end): return (start + end) // 2 def get_random_number(start, end): return randint(start, end) def guess_comp(get_number): guess = randint(1, 100) step = 1 print("============================") print("Компьютер загадывает, вы отгадываете.") while True: a = input(str(step) + '-я попытка: ') fun_exit(a) if int(a) > guess: print('Меньше') elif int(a) guess: print('Больше') else: print('Вы угадали с %d-й попытки\n' % step) break step += 1 return step def guess(get_number, number): start = 1 end = 100 steps = 0 while True: a = get_number(start, end) steps += 1 if number a: end = a - 1 elif number > a: start = a + 1 else: break print(f'Число отгадано за шагов') return steps def guess_user(get_number): start = 1 end = 100 steps = 0 print("============================") print("Вы загадываете, компьютер отгадывает.") while True: a = get_number(start, end) print(f'Вы загадали ?') steps += 1 answer = input("> ") fun_exit(answer) if answer.lower() == 'меньше': end = a - 1 elif answer.lower() == 'больше': start = a + 1 elif answer.lower() == 'да': break else: steps -= 1 print("Ответ неверный") print(f'Отгадано за шагов\n') return steps def game_vs_comp(): rounds = input("Введите кол-во раундов (по умолчанию 3).\n> ") print("Выберите уровень сложности:") print("1 - Лёгкий, компьютер использует более простой, медленный алгоритм угадывания.") difficulty_level = input("2 - Сложный, компьютер использует более быстрый, оптимальный алгоритм угадывания.\n> ") if rounds == "" or rounds == "3" and difficulty_level == "1": result = game_body(3, get_random_number) print(result) elif rounds == "" or rounds == "3" and difficulty_level == "2": result = game_body(3, get_middle_number) print(result) elif 1 int(rounds) and int(rounds) 10 and difficulty_level == "1": result = game_body(int(rounds), get_random_number) print(result) elif 1 int(rounds) and int(rounds) 10 and difficulty_level == "2": result = game_body(int(rounds), get_middle_number) print(result) else: print("Количество ранудов можно выбрать от 1 до 10") def random_numbers(col_num): nums = [] for i in range(col_num): nums.append(randint(1, 100)) return nums def test_method(method, numbers): results = [] for i in numbers: res = guess(method, i) results.append(res) return mean(results) def common_test_method(): numbers = random_numbers(int(input("Введите количество чисел:\n"))) print(f'Тестирую метод: Деление пополам') middle_avg = float(test_method(get_middle_number, numbers)) print(f'\nТестирую метод: Рандом') random_avg = float(test_method(get_random_number, numbers)) print("\nСреднее кол-во шагов методом 'Деление пополам' - " + str(round(middle_avg, 2))) print("Среднее кол-во шагов методом 'Рандом' - " + str(round(random_avg, 2))) if middle_avg random_avg: print("\nРезультат теста - Деление пополам быстрее\n") elif middle_avg > random_avg: print("\nРезультат теста - Рандом быстрее\n") else: print("\nРезультат теста - Одинаково\n") while True: print("============================") print("Выберите режим игры 1 или 2 или 3 или 4:") print("1. Режим - Компьютер отгадывает число.") print("2. Режим - Игра наоброт, пользователь отгадывает число.") print("3. Режим - Игра по очереди против компьютера.") print("4. Режим - Тестирования методов 'Рандом' и 'Деление пополам'.") choose = input(">> Введите 'exit' для выхода, в любой момент\n> ") if choose == "1": guess_user(get_middle_number) elif choose == "2": guess_comp(get_random_number) elif choose == "3": game_vs_comp() elif choose == "4": common_test_method() elif choose == "exit": break else: print("Вы ввели не правильную команду\n")