Переход от Basic к Python проще делать через сопоставление конструкций: PRINT становится print(), INPUT заменяется input() с явным преобразованием типа, THEN и END IF исчезают, а блоки задаются двоеточием и отступами. Главные новые привычки: нулевая индексация списков, range с невключённой верхней границей и явное различие строк и чисел.
Basic существует в разных диалектах, поэтому точный синтаксис QBasic, VBA и Visual Basic различается. Сначала назовите свой диалект и версию Python. Эта статья сравнивает общие учебные конструкции, а не переводит формы, COM или библиотеки Visual Basic. Алгоритм обычно переносится, платформенный API переписывается под другую среду.
Python использует значимые отступы вместо END IF и NEXT.
range(start, stop) не включает stop.
Первый элемент списка имеет индекс 0.

От Basic к Python на примере среднего значения
Обе программы читают количество оценок, затем значения и выводят среднее. В Python input всегда возвращает строку, поэтому нужен int или float. range(count) выдаёт 0, 1, 2 и так далее до count - 1. Переменная цикла не используется в теле, поэтому принято имя с подчёркиванием.
' BASIC
INPUT "Count"; count
total = 0
FOR i = 1 TO count
INPUT value
total = total + value
NEXT i
PRINT total / count
# Python
count = int(input("Count: "))
total = 0.0
for _ in range(count):
value = float(input())
total += value
print(total / count)- Для трёх значений 4, 5 и 3 обе версии выводят 4
- Python явно преобразует строки ввода в числа
Добавьте проверку count > 0, иначе появится деление на ноль. Следом соберите значения в список и используйте sum(values) / len(values). Не заменяйте весь алгоритм библиотечными вызовами до понимания цикла. Задача перевода полезна именно сравнением состояния total после каждого шага. Для денег и точных десятичных правил обычный float может быть неподходящим, изучите Decimal.
Сопоставление конструкций
| Элемент | Что означает | Что делать |
|---|---|---|
| PRINT x | print(x) | Функция и скобки |
| INPUT | input() плюс int или float | Ввод сначала строка |
| IF ... THEN | if ...: | Блок задаёт отступ |
| FOR i = 1 TO n | for i in range(1, n + 1) | Верхняя граница не включена |
| DIM a(n) | list и append или размер | Индекс обычно начинается с 0 |
Функция в Python объявляется через def и возвращает значение оператором return. Несколько результатов удобно вернуть tuple. Строки имеют методы lower, strip и split. Файлы открывайте через with, чтобы ресурс закрылся даже при ошибке. Исключения не заменяют каждое условие, но позволяют обработать неверное преобразование или отсутствие файла на подходящем уровне.

Практика: перенесите подсчёт среднего из Basic в Python
Соберите файл average.py: он читает количество оценок, затем сами оценки и печатает среднее. Прогоните его на трёх значениях 4, 5 и 3. Успех: на экране 4.0, а при вводе 0 вместо количества программа не падает с делением на ноль.
- Файл average.py. Создайте average.py и перепишите строку INPUT "Count"; count как count = int(input("Count: ")). Запустите файл: программа ждёт число, а введённая строка сразу превращается в int.
- Цикл вместо FOR и NEXT. Замените FOR i = 1 TO count ... NEXT i на for _ in range(count): с отступом в четыре пробела, внутри value = float(input()) и total += value. Строки NEXT нет: блок закончился там, где отступ вернулся назад.
- Прогон на 4, 5 и 3. Запустите python average.py, введите 3, затем 4, 5 и 3. Печатается 4.0, потому что total объявлен как 0.0 и деление даёт число с плавающей точкой.
- Защита count > 0. Перед циклом добавьте проверку count > 0, а иначе печатайте сообщение и выходите. Введите 0 и убедитесь, что вместо трейсбека ZeroDivisionError появляется ваш текст.
- Список values вместо total. Соберите введённые числа в список values через append и посчитайте sum(values) / len(values). Результат тот же 4.0, а len(values) показывает, что элементов ровно три и нумерация идёт с values[0].
Теперь сломайте перевод намеренно: уберите float у строки value = float(input()) и запустите снова. На втором вводе появится TypeError с текстом про 'float' и 'str': input вернул строку, а total хранит число, и оператор += их не складывает. Ровно эта ошибка прячется в Basic-версии, где INPUT сам определял тип. Верните float и повторите прогон на 4, 5 и 3.
Следующий шаг: перенесите программу с IF ... THEN и ELSEIF, заменив их на if, elif и else с одинаковым отступом. Затем вынесите подсчёт в функцию def average(values) с return и вызовите её из main. Если считаете деньги, замените float на Decimal: округление копеек в этом случае ведёт себя предсказуемее. Проверяйте обе версии, старую и новую, на одинаковых обычных и граничных входах.
Частые ошибки и почему они появляются
Механический перевод строка в строку сохраняет старые ограничения и часто делает код непохожим на Python. Вторая ошибка: забыть int(input()) и получить конкатенацию строк вместо сложения чисел. Третья: написать range(1, n) и потерять последнее значение, потому что stop не включается.
Используйте единый отступ в четыре пробела.
Разделите код на функции, условия и циклы.
Запустите обе версии на одинаковых обычных и граничных входах.
Самопроверка
Что возвращает input в Python?
input() всегда возвращает строку, даже если пользователь набрал цифры. Для арифметики оберните вызов в int() или float(), иначе сложение склеит символы: при вводе 4 и 5 получится "45", а не 9.
Включает ли range верхнюю границу?
range(start, stop) не включает stop: range(1, 5) даёт 1, 2, 3 и 4. Чтобы повторить FOR i = 1 TO n из Basic, пишите for i in range(1, n + 1), иначе потеряете последнее значение.
С какого индекса начинается список в Python?
Список в Python нумеруется с нуля: первый элемент это values[0], последний values[len(values) - 1]. В Basic массив из DIM a(n) часто читали с единицы, поэтому при переносе цикла индексы сдвигаются на один.
Почему в Python нет END IF и NEXT?
Границы блока в Python задают двоеточие и отступ, поэтому закрывающие END IF и NEXT не нужны. Конец блока это возврат отступа влево, и один и тот же отступ должен быть везде: держите четыре пробела и не смешивайте их с табуляцией.
Почему числа из input складываются в одну строку?
Склейка получается, когда преобразование типа забыто: total = total + value работает со строками как конкатенация. Оберните ввод в int(input()) или float(input()), и знак плюс снова станет сложением.
Можно ли перенести программу Visual Basic на Python построчно?
Построчный перевод годится только для учебного алгоритма с циклами, условиями и переменными. Формы, COM и библиотеки Visual Basic на Python не переезжают: платформенную часть переписывают под другую среду, а совпадение проверяют по одинаковым входам и выходам.
Что делать дальше
Возьмите три свои программы Basic и перенесите их через тесты входа и выхода, а не построчно. Современный Python изучается на курсе Python-разработчика. Практические задачи есть в подготовке к ОГЭ, а выбор языка в сравнении Python и JavaScript.
