Серия «101 игра на python»

5

101 игра на python. Полезные функции. read_text_file

Функция для чтения текстовых файлов предоставляет возможность чтения содержимого текстовых файлов, включая возможность чтения файлов из директорий, фильтрацию по расширению и гибкий формат возвращаемых данных. Она поддерживает чтение как отдельных файлов, так и всех файлов с определенными расширениями внутри директории (включая поддиректории).

Код

101 игра на python. Полезные функции. read_text_file Python, Утилиты, Программирование, Гайд

Аргументы

  • file_path (str | Path): Путь к файлу или директории, содержимое которой нужно прочитать. Может быть представлен строкой или объектом Path из модуля pathlib.

  • as_list (bool, optional): Флаг, определяющий формат возвращаемого значения. По умолчанию False, что означает, что содержимое будет возвращено в виде единой строки. Если установлено в True, то содержимое будет возвращено в виде списка строк.

  • extensions (list[str], optional): Список расширений файлов (например, [".txt", ".log"]), которые нужно читать, если указан путь к директории. Если None (по умолчанию), то будут читаться все файлы в директории.

  • exc_info (bool, optional): Флаг, определяющий, нужно ли включать подробную информацию об ошибке (трассировку стека) в лог, если во время чтения файла возникнет ошибка. По умолчанию True.

Возвращаемое значение

  • str: Содержимое файла (или содержимое всех файлов) в виде строки, если as_list равен False.

  • list[str]: Содержимое файла (или содержимое всех файлов) в виде списка строк, если as_list равен True.

  • None: В случае ошибки при чтении или если указан некорректный путь.

Код с примерами 👉 github

UPD:

Это упрощенный пример. На больших объемах данных он сожрет всю память. Позже я покажу асинхронный пример чтения / записи и с использованием пошагового генератора

Показать полностью 1
3

101 игра на python. Музыкальный калькулятор

Для тех, кто не любит много читать 👉 код здесь

В этом примере будут использоваться термины из музыки.

Термины

Звук.
Звук — это колебание воздуха, характеризующееся частотой, измеряемой в герцах (Гц). Чем выше частота, тем выше звук. Простыми словами: Звук — это то, что мы слышим, когда что-то вибрирует (например, струна гитары или голосовые связки). Чем быстрее вибрация, тем выше звук.

Нота.
Нота — это символ, обозначающий конкретный звук определённой высоты. В музыке используются ноты с названиями: C (до), D (ре), E (ми), F (фа), G (соль), A (ля), B (си). Простыми словами: Нота — это "имя" звука. Например, нота A4 — это звук с частотой 440 Гц.

Интервал.
Интервал — это расстояние между двумя нотами, выраженное отношением их частот. Например, октава — это интервал с соотношением частот 2:1, квинта — 3:2, кварта — 4:3. Простыми словами: Интервал — это "промежуток" между двумя нотами. Например, если вы играете ноту C (до) и затем ноту G (соль), интервал между ними называется квинтой.

Полутон.
Полутон — это наименьший интервал в западной музыкальной системе. Например, расстояние между нотами C (до) и C# (до-диез) — это полутон. Простыми словами: Полутон — это "маленький шаг" между нотами. Например, на гитаре один лад — это полутон. В восточных культурах используют микротональные системы, где интервалы меньше полутона. Это когда между нотами есть ещё более мелкие шаги, которые создают уникальное звучание, непривычное для западного уха.

Тон.
Тон — это интервал, равный двум полутонам. Например, расстояние между нотами C (до) и D (ре) — это тон. Простыми словами: Тон — это "большой шаг" между нотами. Например, на гитаре два лада — это тон.

Октава.
Октава — это интервал между двумя нотами, где частота верхней ноты ровно в два раза больше частоты нижней. Например, нота A4 имеет частоту 440 Гц, а нота A5 (на октаву выше) — 880 Гц. Простыми словами: Октава — это "расстояние" между двумя нотами с одинаковыми названиями, но разной высотой. Например, если вы поете ноту C (до) низким голосом, а потом ту же ноту C, но высоким голосом, то между ними будет октава.

Гамма.
Гамма — это последовательность нот, выстроенных в восходящем или нисходящем порядке. В западной музыке наиболее распространена диатоническая гамма, состоящая из 7 нот с комбинациями целых тонов и полутонов. Простыми словами: Гамма — это "лестница" из нот, которая помогает создавать мелодии. Например, мажорная гамма звучит весело и ярко, а минорная — грустно и задумчиво. Мажорная гамма строится по интервалам: тон-тон-полутон-тон-тон-тон-полутон. Например, гамма C мажор: C, D, E, F, G, A, B, C. Минорная гамма строится по интервалам: тон-полутон-тон-тон-полутон-тон-тон. Например, гамма A минор: A, B, C, D, E, F, G, A.


Калькулятор

Функция calculate_frequency вычисляет частоту любой ноты в хроматической гамме, зная её порядковый номер относительно A4 (где A4 это 0). Она использует экспоненциальную зависимость, основанную на степени двойки, которая в музыке описывает частотные отношения нот в хроматическом строе.

101 игра на python. Музыкальный калькулятор Гайд, Программирование, Длиннопост

Функция calculate_interval_ratio вычисляет отношение частот между двумя нотами, представленными их номерами в хроматической гамме. Она всегда возвращает отношение так, чтобы в результате получается число больше 1, то есть частота более высокой ноты делится на частоту более низкой ноты, вне зависимости от порядка, в котором были переданы номера нот. Таким образом, функция определяет математическое значение интервала между двумя нотами.

101 игра на python. Музыкальный калькулятор Гайд, Программирование, Длиннопост

Функция calculate_tempo_duration вычисляет общую продолжительность музыкального фрагмента в секундах, основываясь на темпе (который здесь не используется непосредственно), длительности одного удара в секундах и общем количестве ударов. Она делает это путем простого умножения длительности удара на их количество.

101 игра на python. Музыкальный калькулятор Гайд, Программирование, Длиннопост

Функция calculate_note_duration вычисляет длительность ноты в секундах на основе темпа (в BPM) и относительной длительности ноты (например, 0.25 для четвертной ноты). Она использует темп для определения длительности одного удара, а затем умножает её на длительность ноты для получения длительности ноты в секундах.

101 игра на python. Музыкальный калькулятор Гайд, Программирование, Длиннопост

Функция calculate_rhythm_pattern вычисляет общую продолжительность ритмического паттерна, заданного списком длительностей нот и длиной такта. Она перебирает длительности нот, умножает каждую на длину такта, и суммирует их. Результат представляет собой общую длительность паттерна в единицах целых нот.

101 игра на python. Музыкальный калькулятор Гайд, Программирование, Длиннопост

Функция calculate_note_number вычисляет номер ноты в хроматической гамме на основе ее частоты. Она использует логарифм по основанию 2 для определения разницы в октавах между заданной нотой и эталонной нотой A4, а затем умножает это значение на 12, чтобы получить разницу в полутонах. Результат округляется до ближайшего целого числа, так как ноты нумеруются целыми числами.

101 игра на python. Музыкальный калькулятор Гайд, Программирование, Длиннопост

Функция generate_scale_frequencies создает список частот нот, образующих заданную гамму. Она принимает номер корневой ноты, шаблон гаммы, где каждый элемент представляет собой интервал в полутонах, и эталонную частоту ноты A4. Функция перебирает интервалы в шаблоне, вычисляет частоту каждой ноты в гамме с помощью функции calculate_frequency и добавляет её в результирующий список, который затем и возвращает.

101 игра на python. Музыкальный калькулятор Гайд, Программирование, Длиннопост

Функция calculate_tuning_deviation вычисляет отклонение фактической частоты от целевой в процентах. Она предназначена для определения того, насколько точно настроен музыкальный инструмент или звук. Она возвращает положительное значение, если фактическая частота выше целевой, и отрицательное, если ниже.

101 игра на python. Музыкальный калькулятор Гайд, Программирование, Длиннопост

Функция get_note_name преобразует номер ноты в хроматической гамме (где A4 имеет номер 0) в её строковое представление, включая название ноты (A, A#, B, C, C# и т.д.) и номер октавы. Она использует список названий нот и вычисляет октаву и индекс ноты в пределах октавы на основе номера ноты.

101 игра на python. Музыкальный калькулятор Гайд, Программирование, Длиннопост

Функция get_note_info_from_freq принимает частоту ноты в герцах и выводит информацию о ноте, включая её частоту, название и номер в хроматической гамме. Она использует функции calculate_note_number и get_note_name для получения этой информации. Она предоставляет удобный способ узнать, какой ноте соответствует заданная частота.

101 игра на python. Музыкальный калькулятор Гайд, Программирование, Длиннопост

Функция tune_instrument имитирует работу тюнера для музыкального инструмента. Она принимает целевую и фактическую частоты и, используя calculate_tuning_deviation, определяет, насколько фактическая частота отклоняется от целевой. На основе величины и знака отклонения, функция выводит пользователю сообщение с указанием, нужно ли повысить, понизить или не трогать настройку инструмента.

101 игра на python. Музыкальный калькулятор Гайд, Программирование, Длиннопост

Функция note_name_to_number преобразует строковое представление имени ноты (например, "A4", "C#5", "Bb3") в ее числовой номер в хроматической гамме, где A4 имеет номер 0. Она использует регулярное выражение для разбора строки, находит индекс ноты в списке названий нот, вычисляет разницу октав и преобразует все это в целое число. Если формат имени ноты не соответствует ожидаемому, функция возвращает None.

101 игра на python. Музыкальный калькулятор Гайд, Программирование, Длиннопост

Функция find_nearest_notes принимает частоту ноты и возвращает названия двух ближайших нот в хроматической гамме: нижней (той, у которой частота ниже заданной) и верхней (той, у которой частота выше заданной). Она использует формулу частоты ноты, а также функции math.floor, math.ceil и get_note_name для выполнения своей задачи.

101 игра на python. Музыкальный калькулятор Гайд, Программирование, Длиннопост

Все примеры можно запустить в блокноте

Удачи!

Показать полностью 13
6

101 Игра на python. HELLO

101 Игра на python. HELLO Программирование, Программа, Инструкция, Python

(us.archive.org)

Начало здесь: 👉Предисловие
Содержание

Сегодняшний репозиторий

Дисклеймер: Ссылки на статьи будут появляться по мере публикаций. Подпишись, чтобы быть в курсе

Здесь я рассматриваю код игры HELLO. Это одна из самых простых программ, которая демонстрирует базовые команды Python. Программа выводит приветствие пользователю.

К сожалению на пикабу нет редактора кода, поэтому ссылка
Как работает программа:

1. Программа выводит приветствие.
2. Запрашивает у пользователя его имя.
3. Выводит персонализированное приветствие, используя введённое имя.
4. Завершает работу с дополнительным сообщением.

Пояснения к коду

print() – Функция для вывода текста на экран. В данном случае используется для приветствия пользователя.

input() – Функция для получения данных от пользователя. В данном случае запрашивается имя.

f-строки – Используются для подстановки переменных в строку. Например, `{name}` подставляет значение переменной `name`.

Переменная `name`– Хранит имя, введённое пользователем.


Код можно запустить в google colab
Для запуска кода нажми

101 Игра на python. HELLO Программирование, Программа, Инструкция, Python

к списку игр
к началу серии

Следующий репозиторий:

Задай вопрос модели AI
Задать вопрос модели можно в Google colab

Показать полностью 1
9

101 Игра на python. Задай вопрос модели AI (gemini)

101 Игра на python. Задай вопрос модели AI (gemini) Программа, Гайд, Программирование, Инструкция, Python, Gemini, Информатика, Длиннопост

В этом посте я покажу как написать элементарный код для общения с моделью Gemini

Начало здесь: 👉Предисловие
Список игр

Сегодняшний репозиторий

Дисклеймер: Ссылки на статьи будут появляться по мере публикаций. Подпишись, чтобы быть в курсе

В прошлом посте я показал простой пример для начинающих изучать python. Как во всех учебниках программирования я начал с Hello, World!. В ней главный акцент я поставил не на коде, а на комментариях. Не ленись писать комментарии. Не надейся на свою память. С ростом сложности кода ты обязательно забудешь, что писал на прошлой неделе или месяц назад. Твой код кто-то будет читать. Хорошо задокументированный код читается как приключенческий роман. Плохо задокументированный код, с непонятными именами переменных и функций, с запутанной логикой сразу хочется выбросить в помойку.


Современный мир программирования невозможно представить без искусственного интеллекта. В этом примере я покажу, как легко можно интегрировать AI в свои проекты и использовать его для обучения.
К сожалению на пикабу нет редактора кода, поэтому ссылка.

Я использую модель gemini для интерактивного общения. Выбор остановился на Gemini, в силу того, что у него есть бесплатный лимит, что хорошо для того, чтобы просто попробовать. По своему опыту скажу, что бесплатного тарифа мне вполне хватает для ежедневной комфортной разработки. Тебе понадобится ключ API. Создать его ты можешь здесь. Если не получается, спроси меня в комментариях, а пока можешь воспользоваться этим:

AIzaSyCprZ9Tr-rB_xFau5zgWsKPM_6W-FmUntk

Я даю этот ключ для обучения коду, не перегружай его запросами.

Я не сильно заморачиваюсь с приватностью ключа. Моя цель показать простоту написания кода связанного с моделями AI. Тема хранения ключей, паролей, прав доступа — отдельный разговор, стоящий самостоятельной статьи. Здесь же я ввел понятие класса.


Как устроен код.

импортируем библиотеку `google.generativeai`, которая предоставляет интерфейс для взаимодействия с моделями Google AI.

Класс GoogleGenerativeAI. Этот класс инкапсулирует *) всю логику взаимодействия с моделью Gemini. Он принимает API-ключ и имя модели в качестве параметров. По умолчанию используется модель `gemini-2.0-flash-exp`.

Метод **) __init__ В этом методе происходит настройка модели. Мы передаем API-ключ и имя модели, а затем инициализируем объект модели.

Метод ask Этот метод отправляет текстовый запрос модели и возвращает ответ. Если что-то пойдет не так, метод вернет сообщение об ошибке.
*) — Обертка. Как фантик для конфеты. Все функции и переменные я сложил и завернул в конфету.
**) — Функции внутри класса принято называть методами, а переменные свойствами. Сути это не меняет.

Как использовать?

  1. Ввод API-ключа: Сначала программа запрашивает у пользователя API-ключ для доступа к модели Gemini. Этот ключ можно получить на сайте Google AI Studio.

  2. Создание объекта модели: Мы создаем объект класса GoogleGenerativeAI, передавая ему API-ключ.

  3. Ввод вопроса: Пользователь вводит свой вопрос, который хочет задать модели.

  4. Получение ответа: Программа отправляет вопрос модели и выводит ответ на экран.

Запустить код можно в google colab. Для запуска программы нажми SHIFT+ENTER на ячейке кода или нажми на знак ► вверху ячейки



Если ты хочешь запустить код на своей машине, потребуются зависимости:
pip install google
pip install google-generativeai
pip install google-api-python-client



Следующие посты, где я работаю с моделью gemini
Анаграмма и искусственный интеллект - создаём инструкцию для модели
gemini меняет поведение. меняем поведение модели во время исполнения программы

Показать полностью 1
7

101 игра на Python. Простой баннер

101 игра на Python. Простой баннер Python, Гайд, Программирование, Инструкция, Программа, Длиннопост

Продолжаю портировать игры из книги 101 Basic Computer Games

Начало здесь: 👉Предисловие
Список игр

Сегодняшний репозиторий

Дисклеймер: Ссылки на статьи будут появляться по мере публикаций. Подпишись, чтобы быть в курсе

Игра Banner: создание текстового баннера

101 игра на Python. Простой баннер Python, Гайд, Программирование, Инструкция, Программа, Длиннопост

Программа демонстрирует базовые принципы работы с функциями, вводом-выводом и условными операторами в Python.



Как работает программа

Программа состоит из двух основных частей:

1. Функция `create_banner(text)` – отвечает за создание и вывод текстового баннера.

2. Основная часть программы – взаимодействие с пользователем: приветствие, запрос текста и проверка ввода.

Описание работы кода

1. Функция `create_banner(text)`

  • Принимает:
    - строку `text` – текст, который нужно преобразовать в баннер.

  • Выполняет:
    - Вычисляет ширину баннера, добавляя 4 символа для рамки (`*` и пробелы).
    - Выводит верхнюю и нижнюю границы баннера с помощью символа `*`.
    - Выводит текст, окружённый рамкой.

2. Основная часть программы

- Приветствует пользователя и объясняет, что делает программа.

- Запрашивает у пользователя текст для создания баннера.

- Проверяет, что текст не пустой:

- Если пользователь ввёл пустую строку, программа сообщает об ошибке и предлагает попробовать снова.

- Если текст введён, программа выводит созданный баннер.


Пример работы программы

Если пользователь ввёл текст `"Привет"`, программа выведет:

```
************
* Привет *
************

```

Запустить код можно в Google Colab

Предыдущие игры:
HELLO
Задай вопрос модели AI (gemini)
ИИ создает анаграммы из букв

Показать полностью 1
5

101 игра на python. Анаграмма и искусственный интеллект

101 игра на python. Анаграмма и искусственный интеллект Программа, Программирование, Python, Искусственный интеллект, IT, Длиннопост

Этот пост — продолжение сборника простых программ для начинающих изучать python

Начало здесь: 👉Предисловие
Содержание

В прошлом посте я показал как подключиться к модели AI Gemini.
Сегодня я расширю функциональность и добавлю системную инструкцию модели, чтобы она понимала смысл игры.

Генератор анаграмм с использованием Google Gemini

В этой программе я создаю простую системную инструкцию для модели gemini. Модель будет играть по правилам из инструкции.
Текст инструкции:
"""

Ты — генератор анаграмм. Твоя задача — по заданному набору букв найти существующее слово русского языка, составленное из этих букв (используя все или часть из них).
Правила:
1. Игнорируй любые символы, кроме русских букв. Цифры и другие символы не учитываются.

2. Если из заданных букв можно составить несколько слов, верни одно из них.

3. Если из заданных букв невозможно составить ни одного слова русского языка, верни ответ "Нет анаграмм".

4. Не генерируй неологизмы или выдуманные слова. Используй только существующие слова русского языка.

5. Не объясняй процесс, просто возвращай слово или "Нет анаграмм".

"""


Описание

Программа принимает на вход набор русских букв и пытается найти существующее слово русского языка, составленное из этих букв (используя все или часть из них).

Правила анаграмм

  • Используются только существующие слова русского языка.

  • При поиске анаграмм учитываются только русские буквы. Цифры и другие символы игнорируются.

  • Если возможно составить несколько слов, возвращается одно из них.

  • Если из заданных букв нельзя составить ни одного слова, возвращается сообщение "Нет анаграмм".

Сегодняшний репозиторий
К сожалению на пикабу нет редактора кода, поэтому ссылка

Пояснение кода генератора анаграмм с использованием Google Gemini

1. Импорт библиотек:

  • google.generativeai: Для работы с Gemini.

  • re: Для обработки текста (очистка ввода).

2. Класс GoogleGenerativeAI:

  • __init__: Создает объект для работы с Gemini, сохраняет API-ключ и инструкцию.

  • ask: Отправляет запрос Gemini и получает ответ. try...except обрабатывает возможные ошибки.

3. system_instruction (Инструкция для Gemini):

  • Самая важная часть. Объясняет Gemini, что нужно делать:

    • Находить слова из заданных букв.

    • Игнорировать не-буквы (цифры, символы).

    • Возвращать "Нет анаграмм", если слов нет.

    • Использовать только существующие слова.

    • Не давать объяснений, только слово или "Нет анаграмм".

4. Запрос API-ключа:

  • API_KEY = input(...): Запрашивает у пользователя API-ключ.

5. Создание объекта модели:

  • model = GoogleGenerativeAI(...): Создает объект для работы с Gemini, используя API-ключ и инструкцию.

6. Основной цикл программы:

  • while True: Бесконечный цикл для ввода запросов.

  • q = input(...): Запрашивает у пользователя буквы.

  • q = re.sub(...): Очищает ввод от не-букв.

  • if not q: Проверяет, не пустой ли ввод после очистки.

  • response = model.ask(q): Отправляет запрос Gemini.

  • print(response): Выводит ответ.

Ключевые моменты:

  • system_instruction определяет поведение Gemini.

  • re.sub очищает ввод, чтобы Gemini получал корректные данные.

  • try...except обрабатывает ошибки.

Запустить код в google colab. Для запуска программы нажми SHIFT+ENTER на ячейке кода или нажми на знак ► вверху ячейки
Если ты хочешь запустить код на своей машине, потребуются зависимости:
pip install google
pip install google-generativeai
pip install google-api-python-client

Начало серии

Другие игры

Показать полностью 1
14

101 игра на python. Виселица. Игра в слова

101 игра на python. Виселица. Игра в слова Программа, Гайд, Программирование, Игра в слова, Длиннопост, Python, Яндекс Дзен (ссылка)

Статья из серии 101 игра на python. В серии я публикую разбор кода учебного репозитория для делающих первые шаги в разработке на python и просто любителей хорошего кода. В репозитории находится сборник программ игр, написанных лёгким языком, по которым ты можешь изучать код.


Игра "Виселица" - это игра в слова, где один игрок (или компьютер) загадывает слово, а другой игрок пытается его отгадать по буквам.

За каждую неправильную букву игрок получает штраф в виде части рисунка виселицы. Если рисунок завершен, игрок проигрывает.

Правила игры:
1. Компьютер выбирает случайное слово из заранее определенного списка.
2. Игрок видит слово, представленное прочерками (по одной на каждую букву).
3. Игрок пытается отгадать слово, вводя буквы.
4. Если введенная буква есть в слове, она отображается на своих местах.
5. Если введенной буквы нет в слове, игрок получает штраф.
6. Игра продолжается до тех пор, пока игрок не угадает слово или не исчерпает лимит штрафов.


Алгоритм


1. Инициализировать массив слов, которые может загадать компьютер.
2. Выбрать случайное слово из массива.
3. Создать строку `GUESS$` , состоящую из прочерков, по длине загаданного слова.
4. Инициализировать число ошибок, равное 0.
5. Начать цикл "пока слово не отгадано и количество ошибок меньше 6":
5.1 Запросить ввод буквы от игрока.
5.2 Если введенная буква есть в загаданном слове
5.2.1 Обновить строку `GUESS$` , показав букву на всех ее позициях в слове.
5.2.2 Если все буквы отгаданы, перейти к шагу 6.
5.3 Иначе
5.3.1 Увеличить число ошибок на 1.
5.3.2 Показать изображение виселицы, соответствующее текущему количеству ошибок
5.4 Если число ошибок равно 6, перейти к шагу 7.
6. Вывести сообщение "YOU GOT IT!", затем загаданное слово, и перейти к шагу 8.
7. Вывести сообщение "SORRY, YOU DIDN'T GET IT.", затем загаданное слово, и перейти к шагу 8.
8. Конец игры.

Блок-схема

101 игра на python. Виселица. Игра в слова Программа, Гайд, Программирование, Игра в слова, Длиннопост, Python, Яндекс Дзен (ссылка)

Legenda:

- Start - Начало игры.
- InitializeWords - Инициализация списка слов для выбора.
- ChooseWord - Выбор случайного слова из списка.
- CreateGuessString - Создание строки `guessString` из прочерков, соответствующей длине загаданного слова.
- InitializeErrors - Инициализация счетчика ошибок `numberOfErrors` в 0.
- LoopStart - Начало цикла, который продолжается, пока слово не угадано и количество ошибок меньше 6.
- InputLetter - Запрос у пользователя ввода буквы и сохранение ее в `userLetter`.
- CheckLetter - Проверка, есть ли введенная буква `userLetter` в загаданном слове `targetWord`.
- UpdateGuessString - Обновление строки `guessString`, показывая введенную букву на ее местах.
- CheckWin - Проверка, угадано ли слово (т.е. `guessString` равен `targetWord`).
- OutputWin - Вывод сообщения о победе "YOU GOT IT!" и загаданного слова.
- End - Конец игры.
- IncreaseErrors - Увеличение счетчика ошибок `numberOfErrors` на 1.
- DrawHangman - Отображение текущего состояния виселицы в зависимости от количества ошибок.
- CheckLose - Проверка, достигло ли количество ошибок `numberOfErrors` значения 6.
- OutputLose - Вывод сообщения о проигрыше "SORRY, YOU DIDN'T GET IT." и загаданного слова.


Код.

список слов

101 игра на python. Виселица. Игра в слова Программа, Гайд, Программирование, Игра в слова, Длиннопост, Python, Яндекс Дзен (ссылка)


список состояний виселицы

101 игра на python. Виселица. Игра в слова Программа, Гайд, Программирование, Игра в слова, Длиннопост, Python, Яндекс Дзен (ссылка)

Основная логика

101 игра на python. Виселица. Игра в слова Программа, Гайд, Программирование, Игра в слова, Длиннопост, Python, Яндекс Дзен (ссылка)

Разбор кода:

1. Импорт модуля `random`
- `import random`: Импортирует модуль random для случайного выбора слова.


2. Список слов `WORDS`: Список, содержащий слова, из которых компьютер выбирает слово для игры.


3. Функция `draw_hangman(errors)`
- Отображает состояние виселицы в зависимости от количества ошибок, используя ASCII-арт.
- `hangman_stages` - массив строк, представляющих стадии виселицы.
- `print(hangman_stages[errors])` - выводит на экран соответсвующую строку.


4. Функция `play_hangman()`:
- Выбор слова:
- `target_word = random.choice(WORDS).upper()`: Случайно выбирает слово из списка `WORDS` и переводит его в верхний регистр.


- Создание строки для отгадывания:
- `guess_string = "_" * len(target_word)`: Создает строку, состоящую из прочерков, длина которой соответствует длине загаданного слова.


- Инициализация счетчика ошибок:
- `number_of_errors = 0`: Устанавливает начальное количество ошибок в 0.


- Основной цикл игры `while number_of_errors < 6 and "_" in guess_string:
- Цикл продолжается, пока количество ошибок меньше 6 и в строке `guess_string` есть прочерки (т.е. пока слово не угадано и не исчерпан лимит ошибок).
- `print("Слово:", guess_string)`: Выводит текущее состояние слова с угаданными буквами и прочерками.
- `user_letter = input("Введите букву: ").upper()`: Запрашивает у пользователя ввод буквы и переводит ее в верхний регистр.


- Проверка наличия буквы в слове:
- `if user_letter in target_word:`: Проверяет, есть ли введенная буква в загаданном слове.


- Если буква есть:
- `new_guess_string = ""`: Создает пустую строку `new_guess_string` для сборки нового варианта отгадываемого слова.
- Цикл `for i in range(len(target_word))` перебирает все символы в загаданном слове.
- Если текущая буква в загаданном слове совпадает с введенной буквой `user_letter`, то добавляет ее в `new_guess_string`, иначе, добавляет символ с текущей позиции из `guess_string`.
- `guess_string = new_guess_string`: Обновляет `guess_string` новым вариантом с угаданными буквами.
- `if guess_string == target_word:`: Проверяет, угадано ли слово.
- `print("ПОЗДРАВЛЯЮ! Вы угадали слово:", target_word)`: Выводит поздравление и загаданное слово.
- `return`: Завершает функцию (игру).


- Если буквы нет в слове:
- `number_of_errors += 1`: Увеличивает счетчик ошибок на 1.
- `draw_hangman(number_of_errors)`: Вызывает функцию `draw_hangman` для отображения виселицы.


- Проверка на проигрыш:
- `if number_of_errors == 6:`: Проверяет, равно ли количество ошибок 6.
- `print("СОЖАЛЕЮ, вы не отгадали слово. Загаданное слово:", target_word)`: Выводит сообщение о проигрыше и загаданное слово.


5. Запуск игры:
- `if __name__ == "__main__":`: Этот блок гарантирует, что функция `play_hangman()` будет запущена, только если файл исполняется напрямую, а не импортируется как модуль.
- `play_hangman()`: Вызывает функцию для начала игры.

Репозиторий
Код
Запустить эту программу ты можешь в google colab

Посмотри и другие статьи

Удачи!

Показать полностью 5
7

101 игра на python. ACEDU - Симулятор карточной игры

101 игра на python. ACEDU - Симулятор карточной игры Программирование, Гайд, Длиннопост

Продолжаю портировать игры из книги 101 Basic Computer Games (и добавлять свои)


Этот репозиторий создан как для начинающих делать первые шаги в программировании, так и для любителей хорошего кода . Здесь я собираю программы, проверенные временем из легендарной книги «101 Basic Computer Games» и добавляю свои идеи. В частности, к большинству игр я делаю версии для работы с моделями машинного обучения. Если тебе интересно - подпишись, чтобы не пропустить что-то интересное

Серия: 👉 101 игра на python


Сегодняшний код - симуляция простой карточной игры.


Игрок делает ставки, основываясь на вероятности того, что следующая карта окажется между двумя уже открытыми.

- Начальный капитал. Игрок начинает с 100 долларов.

- Правила игры:

1. Компьютер выкладывает две карты.

2. Игрок может решить, сделать ставку или нет.

3. Если ставка сделана, открывается третья карта.

4. Если значение третьей карты лежит между первыми двумя картами, игрок выигрывает ставку. В противном случае, ставка проигрывается.

- Игра заканчивается, когда игрок теряет весь капитал или вручную завершает её.

101 игра на python. ACEDU - Симулятор карточной игры Программирование, Гайд, Длиннопост

Описание работы здесь

код здесь

Запустить можешь здесь

Удачи!

Показать полностью 2
Отличная работа, все прочитано!