{}const=>[]async()letfn</>var
PythonОсновы

От Basic к Python: перевод синтаксиса и привычек на 10 примерах

Переходим с QBasic, Visual Basic или школьного Basic на Python: ввод, вывод, условия, циклы, списки, индексы, функции, строки, файлы и типичные ошибки.

К

Кодик

Автор

6 мин чтения

Переход от Basic к Python проще делать через сопоставление конструкций: PRINT становится print(), INPUT заменяется input() с явным преобразованием типа, THEN и END IF исчезают, а блоки задаются двоеточием и отступами. Главные новые привычки: нулевая индексация списков, range с невключённой верхней границей и явное различие строк и чисел.

Basic существует в разных диалектах, поэтому точный синтаксис QBasic, VBA и Visual Basic различается. Сначала назовите свой диалект и версию Python. Эта статья сравнивает общие учебные конструкции, а не переводит формы, COM или библиотеки Visual Basic. Алгоритм обычно переносится, платформенный API переписывается под другую среду.

1Блоки

Python использует значимые отступы вместо END IF и NEXT.

2Диапазоны

range(start, stop) не включает stop.

3Коллекции

Первый элемент списка имеет индекс 0.

Соответствие PRINT, INPUT и FOR конструкциям Python
Порядок перевода: PRINT становится print(), INPUT превращается в input() с int или float, а END IF и NEXT заменяются двоеточием и отступом в четыре пробела.

От 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.

🔥 100 000+ учеников уже с нами

Устал читать теорию?
Пора кодить!

Кодик — приложение, где ты учишься программировать через практику. AI-наставник, интерактивные уроки, реальные проекты.

🤖 AI 24/7
🎓 Сертификаты
💰 Бесплатно
🚀 Начать учиться
Присоединились сегодня

Сопоставление конструкций

ЭлементЧто означаетЧто делать
PRINT xprint(x)Функция и скобки
INPUTinput() плюс int или floatВвод сначала строка
IF ... THENif ...:Блок задаёт отступ
FOR i = 1 TO nfor i in range(1, n + 1)Верхняя граница не включена
DIM a(n)list и append или размерИндекс обычно начинается с 0

Функция в Python объявляется через def и возвращает значение оператором return. Несколько результатов удобно вернуть tuple. Строки имеют методы lower, strip и split. Файлы открывайте через with, чтобы ресурс закрылся даже при ошибке. Исключения не заменяют каждое условие, но позволяют обработать неверное преобразование или отсутствие файла на подходящем уровне.

Что переносится из Basic, а что пишется заново под Python
Граница переноса: алгоритм с циклом и накоплением total переезжает почти дословно, а формы, COM и библиотеки Visual Basic пишутся заново под другую среду.

Практика: перенесите подсчёт среднего из Basic в Python

Соберите файл average.py: он читает количество оценок, затем сами оценки и печатает среднее. Прогоните его на трёх значениях 4, 5 и 3. Успех: на экране 4.0, а при вводе 0 вместо количества программа не падает с делением на ноль.

  1. Файл average.py. Создайте average.py и перепишите строку INPUT "Count"; count как count = int(input("Count: ")). Запустите файл: программа ждёт число, а введённая строка сразу превращается в int.
  2. Цикл вместо FOR и NEXT. Замените FOR i = 1 TO count ... NEXT i на for _ in range(count): с отступом в четыре пробела, внутри value = float(input()) и total += value. Строки NEXT нет: блок закончился там, где отступ вернулся назад.
  3. Прогон на 4, 5 и 3. Запустите python average.py, введите 3, затем 4, 5 и 3. Печатается 4.0, потому что total объявлен как 0.0 и деление даёт число с плавающей точкой.
  4. Защита count > 0. Перед циклом добавьте проверку count > 0, а иначе печатайте сообщение и выходите. Введите 0 и убедитесь, что вместо трейсбека ZeroDivisionError появляется ваш текст.
  5. Список 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.

Критерий готовности. Вы можете объяснить три вещи: почему input всегда отдаёт строку, чем заканчивается тело цикла в Python и почему range(count) выдаёт значения от 0 до count - 1. Подтверждение: два сохранённых прогона, обычный на 4, 5 и 3 с выводом 4.0 и граничный с вводом 0, где вместо трейсбека печатается ваше сообщение.

Следующий шаг: перенесите программу с IF ... THEN и ELSEIF, заменив их на if, elif и else с одинаковым отступом. Затем вынесите подсчёт в функцию def average(values) с return и вызовите её из main. Если считаете деньги, замените float на Decimal: округление копеек в этом случае ведёт себя предсказуемее. Проверяйте обе версии, старую и новую, на одинаковых обычных и граничных входах.

Частые ошибки и почему они появляются

Механический перевод строка в строку сохраняет старые ограничения и часто делает код непохожим на Python. Вторая ошибка: забыть int(input()) и получить конкатенацию строк вместо сложения чисел. Третья: написать range(1, n) и потерять последнее значение, потому что stop не включается.

Смешивать tabs и spaces

Используйте единый отступ в четыре пробела.

Переносить GOTO

Разделите код на функции, условия и циклы.

Игнорировать тест результата

Запустите обе версии на одинаковых обычных и граничных входах.

Самопроверка

Что возвращает 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.

🎯Хватит откладывать

Понравилась статья?
Пора применять на практике!

В Кодик ты не просто читаешь — ты сразу пишешь код. Теория + практика = реальный скилл.

Мгновенная практика
🧠AI объяснит код
🏆Сертификат

Без регистрации • Без карты