Как писать код с ChatGPT бесплатно: пример на Python

В этой статье

Начните с небольшой задачи, задайте входные данные и ожидаемый результат, попросите код и проверьте его локально. Для такого диалога можно использовать бесплатный ChatGPT. Ниже — полный пример: программа складывает длительности 1:30 и 0:45, получает 135 минут и проходит проверки пустого ввода, пробелов и неверного формата.

Что нужно для бесплатного старта

Откройте ChatGPT и создайте обычный чат. Платная подписка не является условием для первого запроса с кодом: у ChatGPT есть бесплатный тариф. Инструменты могут иметь отдельные ограничения, поэтому при сообщении о лимите ориентируйтесь на уведомление в своём аккаунте. Условия Free.

В этом примере нужны браузер, текстовый редактор и Python на компьютере. Код не обращается к API и не требует ключа, банковской карты или сторонних библиотек. Используем синтаксис Python 3.10+, фактическая локальная проверка выполнена в Python 3.13.0. Свою версию посмотрите командой:

python --version

Если команда не найдена, сначала установите Python с официального сайта и снова откройте терминал. Если у вас интерпретатор вызывается как python3, используйте это имя во всех командах ниже.

ChatGPT может показывать кодовые блоки с копированием, редактированием и запуском поддерживаемого Python. Набор действий зависит от устройства, плана, настроек рабочей области и доступности функции в аккаунте. Для нашей проверки достаточно скопировать код в файлы: кнопка Run в чате не нужна. Справка о кодовых блоках.

Сформулируйте задачу до генерации

Просьба «напиши программу учёта времени» оставляет слишком много решений модели. Начните с одной функции и определите, как она обрабатывает пустые и неверные данные. Для этого примера вход — список строк с длительностями, а выход — целое число минут. Это именно длительности: 25:00 разрешено, потому что работа может занять больше суток.

Скопируйте запрос:

Помоги написать небольшую программу на Python 3.10+ без сторонних библиотек.
Нужна функция total_minutes(values: list[str]) -> int.
Вход: список длительностей в формате H:MM. Часы — одна или больше
цифр 0–9, без знака; минуты — ровно две цифры от 00 до 59.
Пробелы по краям строки разрешены, внутри — нет.
Пустой список даёт 0. Неверная строка вызывает ValueError.
Пример: ["1:30", "0:45"] должен дать 135, а ["25:00"] — 1500.
Сначала объясни алгоритм. Затем выдай два полных файла:
durations.py и test_durations.py с unittest.
Проверь обычную сумму, пустой список, ноль, внешние пробелы,
длительность больше суток и неверные строки.
В конце дай команды запуска из папки с этими файлами.

Ясные условия и уточнения по результату соответствуют рекомендациям OpenAI по запросам. Критерии правильности выбираете вы: если в ваших данных часы ограничены восемью, добавьте это в задание. Рекомендации по промптам.

Сохраните и выполните код

Ниже — авторский вариант решения для сравнения с ответом ChatGPT. Он проверен локально; это не запись ответа из пользовательского аккаунта. Создайте отдельную папку и сохраните в ней файл durations.py:

import re


def total_minutes(values: list[str]) -> int:
    total = 0
    for value in values:
        match = re.fullmatch(r"([0-9]+):([0-5][0-9])", value.strip())
        if match is None:
            raise ValueError(f"Invalid duration: {value!r}")
        hours, minutes = map(int, match.groups())
        total += hours * 60 + minutes
    return total


if __name__ == "__main__":
    print(total_minutes(["1:30", "0:45"]))

Функция убирает внешние пробелы и проверяет всю оставшуюся строку. Первая группа содержит часы, вторая — минуты от 00 до 59. Затем каждый результат переводится в минуты и прибавляется к сумме. Если формат нарушен, выполнение прекращается с ValueError, а испорченная строка видна в сообщении.

Откройте терминал в папке с файлом и выполните:

python durations.py

Ожидаемый вывод:

135

Проверьте его вручную: 1 час 30 минут — это 90 минут; ещё 45 дают 135. Ответ 2.15 здесь неверен: десятичные часы и запись часов с минутами нельзя складывать одинаково.

Проверьте границы отдельными тестами

Один удачный пример ещё не проверяет договорённости о неверных строках. Рядом сохраните test_durations.py:

import unittest
from durations import total_minutes


class DurationTests(unittest.TestCase):
    def test_sum(self):
        self.assertEqual(total_minutes(["1:30", "0:45"]), 135)

    def test_empty(self):
        self.assertEqual(total_minutes([]), 0)

    def test_zero(self):
        self.assertEqual(total_minutes(["0:00"]), 0)

    def test_outer_spaces(self):
        self.assertEqual(total_minutes([" 2:05 "]), 125)

    def test_over_24_hours(self):
        self.assertEqual(total_minutes(["25:00"]), 1500)

    def test_invalid(self):
        for value in ["1:60", "-1:30", "1:5", "1.30", "", "1: 30"]:
            with self.subTest(value=value):
                with self.assertRaises(ValueError):
                    total_minutes([value])


if __name__ == "__main__":
    unittest.main()

Запустите:

python -m unittest -v test_durations

В локальной проверке на Python 3.13.0 прошли все шесть тестов; итог — Ran 6 tests и OK. В тесте test_invalid дополнительно перебираются шесть неверных строк. assertEqual сравнивает результат с ожидаемым, а assertRaises проверяет исключение. Эти механизмы и запуск через python -m unittest описаны в документации Python.

Функция рассчитана на список строк. Если на вход могут приходить числа, None или объект вместо списка, отдельно задайте правила для таких значений и добавьте тесты. Не считайте проверенным поведение, которого в договорённости и тестах нет.

Верните в чат точное расхождение

Если предложенный ChatGPT вариант принял 1:60 или упал на разрешённом 25:00, отправьте саму функцию, вход и сообщение ошибки. Полезный запрос на доработку:

В текущем варианте total_minutes(["1:60"]) возвращает 120,
но по заданию минуты 60 запрещены и должен возникнуть ValueError.
Вот мой текущий код: [вставьте функцию].
Объясни причину и дай минимальное исправление функции.
Сохрани поддержку часов больше 24 и внешних пробелов.
Добавь проверку этого случая, не меняй ожидаемый результат на 120.

Это учебный пример сообщения о возможном дефекте. В коде выше неверная строка уже отклоняется. После любого исправления снова запускайте все тесты: изменение проверки минут не должно сломать разрешённые часы или пустой список.

Если ошибка звучит как No module named durations, сначала проверьте, что оба файла лежат рядом, первый называется именно durations.py, а терминал открыт в этой папке. Для обсуждения сложной ошибки скопируйте полный traceback и версию Python; секреты и чужие данные замените безопасными примерами.

Как перенести процесс на свою программу

Для другой задачи замените вход, результат и ограничения, сохранив порядок работы: маленькая функция → понятный пример → локальный запуск → граничные тесты → исправление. Например, для обработки CSV заранее решите, что делать с пустой ячейкой, повторной строкой и неверной датой. Для JavaScript дополнительно укажите среду — браузер или Node.js — и её версию.

Просите объяснять незнакомый участок кода на конкретном входе. Если не можете понять, почему результат правильный, уменьшите задачу и проверьте промежуточные значения. Рабочий файл и тесты сохраняйте у себя: следующий запрос должен опираться на ту версию, которую вы действительно запустили.

Проверить детали

Источники материала

Функции и условия сервисов меняются. Дата сверки указана в начале статьи. Как подготовлен материал

Есть следующая задача?Ещё по теме «Программирование» →