Как и на каком языке можно написать программу, которая автоматизирует ручное заполнение информации в окне браузера
Вопрос: можно ли написать программу, которая автоматизирует этот процесс — чтобы она сама заполняла формы по стандартизированному название (между автором и книгой всегда могут стоять «пробел дефис пробел); чтобы копировала и заносила информацию в эксель; чтобы, перемещала загруженные файлы из одной папки в другую.
Из навыков программирования только VBA excel. Хочется также понять, что конкретно и в каких языках программирования стоит изучить, чтобы суметь сделать подобную программу. Предпочтительно на Python. И был бы очень признателен за ответы на то, как решить последовательные кусочки этой довольной большой задачи и где можно прочитать ответы, чтобы эти кусочки работали: как заполнять формы в браузере, используя имя файла «Автор — Книга.doc» над этими формами? Как выбирать логин из списка? и др.
Отслеживать
34.5k 15 15 золотых знаков 65 65 серебряных знаков 94 94 бронзовых знака
задан 29 апр 2016 в 13:50
Kertanov Viktor Kertanov Viktor
61 4 4 бронзовых знака
UI Automation вполне справится. C#. ru.stackoverflow.com/a/509694/10105
29 апр 2016 в 13:55
похожий вопрос: Interact with other programs using Python
29 апр 2016 в 16:55
Если вам дан исчерпывающий ответ, отметьте его как верный (галка напротив выбранного ответа).
30 апр 2016 в 3:32
Есть множество систем автоматизации тестирования ПО. Они не очень распространены в миру в силу того, что специфичны для профессии QA-engineer, но с такими задачами они справляются на раз. Есть системы которые лучше работают с web, с мобильными, с десктопными. Примеры — Uppium, Selenium
3 фев 2018 в 8:28
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
Вместо того, чтобы пытаться повторить действия пользователя с GUI буквально, можно взглянуть на задачу глазами программиста:
- вместо открытия браузера, заполнения и отправки формы, можно выполнить http POST запрос напрямую ( request.post() )
- вместо выбора файлов в графическом диалоге, можно использовать API, которое возвращает список файлов по шаблону ( Path().glob(«*.doc») )
- вместо копирования руками метаданных книги из названия файла Author — Title.doc в элементы формы, выставляются требуемые параметры запроса напрямую (author, title в примере). Сами метаданные из имени файла можно получить, манипулируя строку с именем напрямую: fn.split(‘-‘) или с помощью регулярных выражений: r’^([^-]+?)\s*-\s*(.+)\.doc$’
- вместо копирования результатов загрузки из окна в Excel, ответ сервера напрямую печатается в csv формате в стандартный вывод ( csv.writer(sys.stdout) ) Что легко в файл скопировать ( | tee -a books.csv )
Конечный скрипт, который загружает файлы с книгами, может выглядеть так:
#!/usr/bin/env python3 '''Upload " - .doc" books from the given directory. Usage: upload-books | tee -a books.csv ''' import csv import re import sys from pathlib import Path import requests # $ pip install requests if len(sys.argv) < 2: sys.exit(__doc__) src_dir = sys.argv[1] with requests.Session() as sess: writer = csv.writer(sys.stdout) for path in Path(src_dir).glob('*.doc'): # for each book metadata = re.findall(r'^([^-]+?)\s*-\s*(.+)\.doc$', path.name) if not metadata: print("warning: can't find author, title in path:", path, file=sys.stderr) continue # don't upload # upload book author, title = metadata[0] book = r = sess.post('https://example.com/api/v1/books', files=book, auth=('user', 'passwd')) if not r.ok: print("warning: can't upload book from path:", path, file=sys.stderr) continue # don't save book info # save uploaded book info data = r.json()['response'] writer.writerow([str(path), author, title, data['url']])
Это в хорошем случае, когда у сайта есть явное API или спонтанно сформировавшийся набор http запросов/ответов, не требует выполнения динамического кода в браузере (или когда результаты этого выполнения могут быть легко смоделированы).
В менее удачном случае, когда, например, за загрузку книг ответчает Silverlight control, который использует какой-нибудь свой протокол для общения с сервером, то может быть проще использовать инструменты GUI автоматизации такие как pywinauto, pyautogui или AutoIt (упомянутый в ответе на схожий вопрос на Stack Overflow).
В промежуточном случае, интерфейс реализован в браузере на javascript и работу с ним можно автоматизировать, используя что-нибудь вроде Selenium WebDriver (+ headless chrome).
Как написать программу работающую с сайтом?
Здравствуйте! Не могу определиться с чего начать. В общем необходимо написать программу (.exe, прям вот на компьютере что бы!, под windows'ом!) с примитивным интерфейсом (кнопочки, поля для ввода и т.д.) и что бы она могла взаимодействовать с сайтом. К примеру: в программке я ввожу логин и пароль, нажимаю "вход" и она на сайте входит в аккаунт. После от неё требуется, к примеру, если значение на сайте "удалить", то программка автоматически удаляет определённый комментарий. В интернете по этой части ничего найти не смог. Помогите пожалуйста! Что для этого потребуется? Какие языки мне для этого понадобятся?
- Вопрос задан более трёх лет назад
- 6034 просмотра
Комментировать
Решения вопроса 1

Пока ты спишь - твой конкурент совершенствуется
зачем целый интерфейс админки переносить в оконное приложение? но если прям уж очень хочется чтобы
.exe, прям вот на компьютере что бы!, под windows'ом!
тогда берешь delphi или VisualStudio игуглишь в сторону интеграции webkit browser. ну и в конечном итоге ты получишь че то типа браузера в оконном приложении, где уже сможешь работать с своим сайтом.
Ответ написан более трёх лет назад
Нравится 4 1 комментарий
xmoonlight @xmoonlight
Delphi 7 - оптимально и быстро.
Ответы на вопрос 4
Любой подходящий язык - хоть Delphi. Но под каждый сайт придётся писать своё и в случае изменений переписывать.
Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
На счет языков. Тут подойдет любой, так как GUI("кнопочки, поля ввода. ") уже даже для PHP есть, хоть это и высшая степень извращениях.
Я бы рассматривал два варианта WPF или Swing/JavaFX. Для первого нужно знать C#, для второго/третьего Java.
Дальше все просто, приложение посылает запрос и распахивает данные по элементам графического интерфейса.
Но судя по вопросу, когда Вы дойдете в обучении до того, что сможете это сделать, поймёте, на сколько задача не правильна и как это все нужно делать.
P.S. Если есть доступ к БД, то лучше работать с БД, а не с сайтом.
P.P.S. Если доступа к БД нету, то такая программа давно есть, называется браузер!
Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать

Это либо headless-браузеры (WebBrowser - IE's Trident, WebKit, Phantom.js и т.п.), либо сети (HTTP), подходит любой язык, удобнее всего на C# и Delphi.
Но помимо языка, потребуются навыки реверс-инжиниринга и отладки. По нарастающей:
просмотр кода страницы и текущего кода DOM в браузере;
деобфускация JavaScript;
сниффинг сетевых HTTP-запросов с помощью средств разработчика в браузере и других снифферов, например Fiddler, Wireshark, Charles и т.п. (в основном для сайтов с AJAX, их сейчас все больше);
отладка JavaScript с помощью средств разработчика в браузере.
ИМХО, эта задача довольно простая для программиста, правда требуется аналитическое мышление, но оно должно быть априори, гораздо сложнее строить свою архитектуру, а для изучения достаточно просто не полениться освоить средства отладки и средства для повторения действий - браузеры и HTTP.
Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
Алексей Алексин @leroyleroy
Я бы в VisualStudio на C# сделал бы приложение. Быстро и просто, плюс для тех у кого проблемы с запросами, там присутствует конструктор запросов и автоматом создаются функции delete/alter.
Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
Ваш ответ на вопрос
Войдите, чтобы написать ответ

- Веб-разработка
Как называют «сервисный сбор» в корзине?
- 1 подписчик
- 7 часов назад
- 36 просмотров

- Telegram
- +3 ещё
Пишу телеграм бота на aiogram. Как правильно подключить прокси socks5?
- 1 подписчик
- 9 часов назад
- 52 просмотра
Как написать программу самому
Писать программы — важное умение для каждого. Программы используются в любых целях: повседневные находят себе место в автоматизации ежедневных процессов, бизнес используются для упрощения работы начальства и сотрудников компаний.
Новичков часто интересует вопрос — с чего начать. Ведь задача написать программу представляет собой не простой процесс, к которому нужно отнестись ответственно и потратить на него немало сил.
Определение идеи
Чтобы написать программу, которая работает, нужно хорошо продумать, что она должна делать и как. Для этого следует разобраться с целями, которые она должна решать, а затем разобраться с будущим функционалом. Для этого лучше записать ответы на следующие вопросы:
- Что должна делать написанная программа.
- Чем будет полезна.
- Как может помочь пользователям, чем упростит работу.
- Чем отличается от конкурентов, похожих программ.
- Где можно написать программу.
- На какой платформе написать прогу.
После ответа на эти вопросы должна сформироваться чёткая картинка того, как будет выглядеть продукт и что он будет делать.
Выбор языка программирования
В первую очередь решается, где можно написать программу. Языков огромное множество, и каждый из них индивидуален, отвечает разным запросам пользователей. Какой-то — полегче, другой — сложнее, третий — функциональнее. Среди профессиональных программистов уже давно гуляют разговоры о том, где лучше писать программы, перечисляя преимущества и недостатки каждого из возможных вариантов.
C (Си)
Си — это классика, которую должен знать каждый программист, но подходит он для написания далеко не каждой программы. Как правило, его используют, чтобы написать низкоуровневые программы. Если изучить Си, можно свободно начать писать на Си++.
Новым пользователям, которые хотят заняться написанием одной программы и бросить программирование, Си совсем не подойдёт. Его сложно изучить из-за того, как мало по нему материалов в сети и учебниках, а пользователей, которые пишут на нём — немного, поэтому знатоков в языке ещё нужно поискать. Но если мир программирования затянет пользователей — его изучение рекомендуется.
C++
Один из популярных языков среди программистов. Написать на нём можно всё — от простой программки до сложного продукта со множеством функций. Материалов по изучению языка предостаточно в свободном доступе — в интернете, учебниках по программированию, на форумах многие обсуждают куски кода и рассказывают о том, что придумали. Несмотря на то, что сначала он может показаться сложным, в дальнейшем, когда пользователь научится полностью им управлять, это принесёт немало преимуществ.
Python
Классика, которая навсегда останется любимой среди программистов. Язык — основа, которую изучают как любители, так и профессионалы. Как и Си++, Python подойдёт для того, чтобы писать программы на простом уровне, отвечающие за базовые функции или для более сложных продуктов.
Python, сколько бы ни спорили пользователи интернета, остаётся первым в списке рекомендаций, когда спрашивают: «С какого языка начать программировать». Он — прост в использовании, а обучающих курсов, учебников, материалов — более, чем достаточно, чтобы каждый нашёл то, что поможет ему изучить язык лучше.
Java
Такая же классика, как и Python, рекомендуемая к изучению. Это — улучшенная версия C++, с большим функционалом. С помощью Java происходит написание программ для игр, бизнеса, менее масштабных целей. Запускается на Операционных системах любого типа, что делает его любимым, помогает использовать и проверять везде.
Для каждого понадобится установить специальный текстовый редактор, желательно — вместе с компилятором. В отличие от написания в блокноте, специальные редакторы выделяют функции цветами и выделяют их по уровням, чтобы было удобнее ориентироваться.
Изучение языка
После выбора, на каком языке писать, необходимо потратить время на его обучение. И здесь речь не о паре дней, а о неделях за учебниками и обучающими ресурсами. Для обучения также лучше использовать куски кода от людей, которые делятся ими на форумах. Чем больше пользователь изучит и потратит времени, тем лучше будет понимать принципы работы и сможет реализовать любую идею.
Для изучения могут быть использованы:
- Учебники.
- Курсы.
- Открытые Интернет-ресурсы.
- Форумы для программистов.
Написание программы
После долгого изучения стоит приступить к работе над самим продуктом. Первым делом, стоит написать мини-программу, которая будет показывать функционал, интерфейс продукта, который создатель видит в финале. В дальнейшем эта программа — прототип, изменится ещё не один раз, из-за невозможности реализации некоторых функций.
Для того, чтобы упростить написание, также необходимо использовать немаловажную функцию комментирования. По умолчанию комментарий начинается с символов «//», но может отличаться в зависимости от выбранного языка. Комментарии — строчки, которые не учитываются при компиляции кода, программисты используют их, чтобы отметить, что делает функция или строка. Комментарии упростят работу, когда строчек будет более 500 или 1 000, и поиск чего-то станет сложнее.
Стоит приготовиться к тому, что написание кода — нелёгкое дело. Для него понадобится много нервов, удаления лишних строчек, исправления того, в чём пользователь был уверен с самого начала. Если дело идёт слишком сложно, а принципы программирования — непонятны даже после десяти учебников, стоит обратиться к специалистам, которые знают, что делать. Обращение к профессионалам актуально для тех, кто хочет написать бизнес-программы — иногда для их написания новичкам нужна помощь.
Пишем программу на Python с помощью ChatGPT
Представим ситуацию: мы не умеем программировать на Python, но знаем, что ChatGPT умеет. Наша задача — не написав самим ни одной строчки кода, создать код, который будет делать что-то полезное. Всё, что мы можем делать — это отправлять запросы в чат, брать оттуда код и смотреть на результат. Заодно узнаем, получится ли так программировать или нет.
Что делаем
Мы попросим ChatGPT написать код, который угадает число от 1 до 100 за 7 попыток. В «Коде» мы уже писали про эту задачу и про алгоритм её решения, поэтому будем сверяться с ним.
Для решения используем сервис Chad — внутри ChatGPT 3.5 и 4 на выбор, работает в России без ВПН и понимает русский язык.

Первый подход: код есть, но не работает
Открываем Chad и выбираем режим для разработчиков, который посередине:

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

import random def guess_number(start, end, max_attempts): print(f"Загадайте число от до . Я попытаюсь его угадать за попыток или меньше.") low = start high = end for attempt in range(1, max_attempts + 1): guess = random.randint(low, high) print(f"Попытка #: Я думаю, это число .") if guess == user_number: print("Ура! Я угадал число!") return elif guess < user_number: print("Мое число слишком маленькое.") low = guess + 1 else: print("Мое число слишком большое.") high = guess - 1 print("К сожалению, я не смог угадать число за заданное количество попыток.") user_number = random.randint(1, 100) # Пользователь загадывает число от 1 до 100 guess_number(1, 100, 7)
Но при запуске этого кода мы получаем странный результат — программа моментально проходит 7 попыток и сообщает, что ничего не угадала:

Второй подход: исправляем ошибку
Раз компьютер не отгадал число за 7 попыток, значит, с алгоритмом явно что-то не так. Просим объяснить, что происходит в программе:
Прокомментируй в этом коде каждую строку
Это код на языке Python, который представляет собой простую игру "угадай число". Давай разберем его построчно:
1. `import random` - импорт модуля random, который позволяет нам генерировать случайные числа.
2. `def guess_number(start, end, max_attempts):` - определение функции с именем `guess_number`, которая принимает три аргумента: `start` (начальное значение диапазона чисел), `end` (конечное значение диапазона чисел) и `max_attempts` (максимальное количество попыток).
3. `print(f"Загадайте число от до . Я попытаюсь его угадать за попыток или меньше.")` - выводит сообщение с использованием значений `start`, `end` и `max_attempts` для подсказки пользователю о правилах игры.
4. `low = start` - присваивает переменной `low` значение `start`. Переменная `low` будет использоваться для хранения текущего нижнего значения диапазона.
5. `high = end` - присваивает переменной `high` значение `end`. Переменная `high` будет использоваться для хранения текущего верхнего значения диапазона.
6. `for attempt in range(1, max_attempts + 1):` - начинает цикл, который будет выполняться `max_attempts` раз. Переменная `attempt` будет принимать значения от 1 до `max_attempts`.
7. `guess = random.randint(low, high)` - генерирует случайное число в диапазоне от `low` до `high` и присваивает его переменной `guess`. Это предполагаемое число, которое попытается угадать компьютер
8. `print(f"Попытка #: Я думаю, это число .")` - выводит сообщение с использованием текущего значения `attempt` и `guess` для показа предполагаемого числа компьютера.
9. `if guess == user_number:` - проверяет, равно ли предполагаемое число `guess` загаданному пользователем числу `user_number`.
10. `print("Ура! Я угадал число!")` - выводит сообщение, если компьютер угадал число пользователя.
11. `return` - прерывает выполнение функции и возвращает управление обратно в основную программу.
13. `print("Мое число слишком маленькое.")` - выводит сообщение, если предполагаемое число `guess` слишком маленькое.
14. `low = guess + 1` - присваивает переменной `low` значение `guess + 1`, чтобы ограничить будущие предполагаемые числа в большем диапазоне.
15. `else:` - выполняется, если ни одно из предыдущих условий не выполнилось, что означает, что `guess` больше, чем `user_number`.
16. `print("Мое число слишком большое.")` - выводит сообщение, если предполагаемое число `guess` слишком большое.
17. `high = guess - 1` - присваивает переменной `high` значение `guess - 1`, чтобы ограничить будущие предполагаемые числа в меньшем диапазоне.
18. `print("К сожалению, я не смог угадать число за заданное количество попыток.")` - выводит сообщение, если компьютер не смог угадать число в заданное количество попыток.
19. `user_number = random.randint(1, 100)` - генерирует случайное число от 1 до 100 и присваивает его переменной `user_number`. Это число, которое пользователь должен загадать.
20. `guess_number(1, 100, 7)` - вызывает функцию `guess_number` с аргументами `1`, `100` и `7`. Это начинает игру, где пользователь должен загадать число от 1 до 100, а компьютер будет пытаться угадать за 7 попыток или меньше.
Ага, значит, значение переменной guess, которая отвечает за очередную попытку угадать число, выбирается случайным образом (точно так же, как это делает user_number ). Но в теоретическом решении написано, что нужно взять диапазон и поделить его пополам. Значит, нам нужно попросить исправить код, чтобы диапазон делился пополам:
У тебя в коде ошибка — он угадывает число случайным образом вместо того, чтобы находить границы диапазона и делить его пополам, предлагая это как новую попытку. Исправь это и дай новый код.
Вот что получили в ответ:
Понимаю, извините за путаницу. Вот исправленный код, который выполняет угадывание числа путем деления диапазона пополам.
В этом обновленном коде используется метод деления диапазона пополам для каждой попытки. Вместо случайного числа, программе необходимо определить середину текущего диапазона (guess = (low + high) // 2).
После предложения числа пользователь проверяет ответ и сообщает программе, является ли загаданное число больше или меньше предложенного числа. Затем диапазон обновляется путем изменения нижней или верхней границы в зависимости от ответа пользователя.
def guess_number(start, end, max_attempts): print(f"Загадайте число от до . Я попытаюсь его угадать за попыток или меньше.") low = start high = end for attempt in range(1, max_attempts + 1): guess = (low + high) // 2 print(f"Попытка #: Я думаю, это число .") if guess == user_number: print("Ура! Я угадал число!") return elif guess < user_number: print("Мое число слишком маленькое.") low = guess + 1 else: print("Мое число слишком большое.") high = guess - 1 print("К сожалению, я не смог угадать число за заданное количество попыток.") user_number = random.randint(1, 100) # Пользователь загадывает число от 1 до 100 guess_number(1, 100, 7)
Копируем, вставляем в редактор кода, запускаем — и получаем ошибку NameError: name 'random' is not defined . Спрашиваем, что с ней делать:
Что означает ошибка NameError: name 'random' is not defined и как её исправить
Вот что предлагает ChatGPT:
Ошибка NameError: name 'random' is not defined возникает, когда пытаемся использовать имя, которое не было определено или импортировано в текущей области видимости.
В приведенном коде, ошибка может возникнуть, если модуль random не был импортирован в вашей программе.
Чтобы исправить эту проблему, в начале программы добавьте строку import random. Это позволит использовать функции и классы из модуля random.
Оказывается, сервис забыл добавить команду import random, чтобы можно было пользоваться генератором случайных чисел. Берём её из первой версии кода и запускаем:

Теперь код угадывает любое число до 100 за 7 попыток или меньше, но есть проблема — здесь нет взаимодействия с пользователем, в эту игру неинтересно играть, когда компьютер сам загадывает и сам угадывает числа.
Третий подход: добавляем интерактив
Чтобы пользователь тоже поучаствовал в игре, просим ChatGPT добавить интерактив:
Сейчас у тебя в коде загаданное число задаётся случайным образом. Сделай так, чтобы пользователь сам вводил число, которое он загадал.
Вот что получаем в ответ:
В этой версии кода после предложения ввести число пользователь будет приглашен ввести загаданное число, с которым программа будет пытаться угадать. Загаданное число сохраняется в переменную user_number в виде целого числа с помощью функции int(input()).
После этого программа продолжает работу и пытается угадать число, используя метод деления диапазона пополам, как было описано выше.
def guess_number(start, end, max_attempts): print(f"Загадайте число от до . Я попытаюсь его угадать за попыток или меньше.") low = start high = end user_number = int(input("Введите загаданное число: ")) for attempt in range(1, max_attempts + 1): guess = (low + high) // 2 print(f"Попытка #: Я думаю, это число .") if guess == user_number: print("Ура! Я угадал число!") return elif guess < user_number: print("Мое число слишком маленькое.") low = guess + 1 else: print("Мое число слишком большое.") high = guess - 1 print("К сожалению, я не смог угадать число за заданное количество попыток.") guess_number(1, 100, 7)

Уже интереснее, но всё равно игра проходит слишком быстро. Надо поменять компьютер и игрока местами, чтобы игрок сам отвечал на вопросы, давая подсказки компьютеру.
Четвёртый подход: добавляем ответы игрока
Улучшаем код и пишем такой запрос:
Теперь поменяй код так, чтобы программа предлагала свои варианты, а пользователь отвечал, его число больше, меньше или равно предложенному.
Сервис сразу меняет код и даёт большое пояснение, как что внутри работает:
В этой версии кода программа использует бесконечный цикл while True, чтобы предлагать свои варианты и ждать от пользователя ответа о том, больше, меньше или равно его число предложенному.
На каждой итерации цикла программа предлагает свой вариант с помощью переменной guess, затем ожидает ввода пользователя с помощью input(). Ввод пользователя сохраняется в переменную user_input.
Затем, в зависимости от ответа пользователя, программе сообщается об изменении диапазона для следующей попытки. Если число пользователя больше предложенного, мы обновляем нижнюю границу, увеличивая ее на 1 (low = guess + 1). Если число пользователя меньше предложенного, обновляем верхнюю границу, уменьшая ее на 1 (high = guess - 1). Если число пользователя равно предложенному, программа завершается.
def guess_number(start, end): print(f"Загадайте число от до . Я попытаюсь его угадать.") low = start high = end while True: guess = (low + high) // 2 print(f"Я думаю, это число .") user_input = input("Ваше число больше (>), меньше (<) или равно (=) предложенному? ") if user_input == '>': low = guess + 1 elif user_input == '

Пятый подход: счётчик попыток
Всё работает, но мы теперь не видим номера попыток, а без этого нам непонятно, получилось угадать число за 7 подходов или нет. Просим компьютер добавить это:
Теперь добавь сюда счётчик попыток, чтобы в конце добавить, за сколько попыток было угадано это число
Получаем новый код и комментарий:
В этой версии кода мы добавляем переменную attempts, которая будет отслеживать количество попыток, сделанных программой для угадывания числа.
На каждой итерации цикла while, когда программа делает новую попытку, мы увеличиваем attempts на 1 (attempts += 1).
При угадывании числа, вместе с сообщением об успехе, теперь выводится и количество попыток, затраченных на угадывание: print(f"Ура! Я угадал число за попыток!").
def guess_number(start, end): print(f"Загадайте число от до . Я попытаюсь его угадать.") low = start high = end attempts = 0 while True: guess = (low + high) // 2 attempts += 1 print(f"Попытка #: Я думаю, это число .") user_input = input("Ваше число больше (>), меньше (<) или равно (=) предложенному? ") if user_input == '>': low = guess + 1 elif user_input == ' <': high = guess - 1 elif user_input == '=': print(f"Ура! Я угадал число за попыток!") return else: print("Некорректный ввод. Попробуйте снова.") print("К сожалению, я не смог угадать число.") guess_number(1, 100)

Шестой подход: делаем красивое оформление
Технически мы решили задачу, но хочется сделать результат визуально лучше. Для этого попросим так:
Теперь сделай так, чтобы каждая попытка угадывания числа выводилась зелёным шрифтом
На этот раз сервис нам скажет, что для этого нужна отдельная библиотека, и даже скажет, как её установить:
Хорошо. Чтобы каждая попытка угадывания числа выделялась зеленым цветом, мы можем использовать модуль termcolor из сторонней библиотеки.
Перед использованием модуля termcolor удостоверьтесь, что у вас установлена эта библиотека. Если она не установлена, можете установить ее с помощью команды pip install termcolor в командной строке.
В этой версии кода мы импортируем функцию colored из модуля termcolor. Эта функция позволяет нам изменять цвет текста в консоли.
Теперь мы применяем функцию colored() к сообщению с попыткой угадывания числа, чтобы выделить его зеленым цветом: print(colored(f"Попытка #: Я думаю, это число .", 'green')).
Кроме того, при успешном угадывании числа мы используем функцию colored() для выделения сообщения с количеством попыток синим цветом: print(colored(f"Ура! Я угадал число за попыток!", 'blue')).
Устанавливаем библиотеку и запускаем код:
from termcolor import colored def guess_number(start, end): print(f"Загадайте число от до . Я попытаюсь его угадать.") low = start high = end attempts = 0 while True: guess = (low + high) // 2 attempts += 1 print(colored(f"Попытка #: Я думаю, это число .", 'green')) user_input = input("Ваше число больше (>), меньше (<) или равно (=) предложенному? ") if user_input == '>': low = guess + 1 elif user_input == ' <': high = guess - 1 elif user_input == '=': print(colored(f"Ура! Я угадал число за попыток!", 'blue')) return else: print("Некорректный ввод. Попробуйте снова.") print("К сожалению, я не смог угадать число.") guess_number(1, 100)

Что в итоге
Вот что мы выяснили:
- Написать код с ChatGPT на Python без сильных знаний в программировании — вполне реально.
- ChatGPT понимает контекст, может исправлять свой код и объяснять, что он делает.
- С русскоязычными запросами всё работает нормально, сервис понимает, что мы от него хотим.
- Так можно написать простые программы, а сложные — неизвестно, надо проверять. Этим и займёмся в следующий раз.