Что такое Python и зачем он нужен
Python — это язык программирования. Точно так же, как русский или английский нужен, чтобы люди понимали друг друга, Python нужен, чтобы человек мог понятно объяснить компьютеру, что делать.
Разница в том, что компьютер — существо очень послушное, но совершенно не умеющее догадываться. Он выполнит ровно то, что ему написали, шаг за шагом, ни на шаг не отступив от инструкции.
Python выбирают в первую очередь потому, что его код читается почти как обычные английские фразы, а не как набор загадочных символов. Именно поэтому его часто советуют как первый язык программирования — на нём пишут сайты, игры, программы для анализа данных, приложения для телефонов и даже управляют роботами.
Как установить и запустить Python
Есть два пути — выберите тот, что проще для вас прямо сейчас.
Способ 1. Установить на компьютер
- Зайдите на официальный сайт
python.orgи скачайте установщик для вашей системы. - При установке на Windows обязательно поставьте галочку «Add python.exe to PATH» — это позволит запускать Python из любого места.
- После установки на компьютере появится программа IDLE — простой редактор, где можно сразу писать и запускать код.
Способ 2. Без установки, прямо в браузере
Если не хочется ничего устанавливать — можно найти в интернете бесплатный «онлайн-интерпретатор Python». Открываете страницу в браузере, пишете код и сразу видите результат. Отлично подходит, чтобы просто попробовать.
Первая программа
Традиция всех программистов мира — первым делом заставить компьютер поздороваться. Вот как это выглядит на Python:
print("Привет, мир!")
print(...) — это команда «показать на экране». Такая команда называется функцией: у неё есть имя (print) и скобки, куда мы кладём то, что нужно показать. Текст в кавычках — это и есть то самое сообщение.
Кавычки важны: они говорят Python «это не команда, это просто текст, покажи его как есть».
Переменные
Переменная — это подписанная коробочка, в которую можно положить значение и потом им пользоваться. Вместо того чтобы каждый раз писать число или текст заново, мы один раз даём ему имя.
age = 10
name = "Аня"
print(name)
print(age)
10
Знак = здесь означает не «равно», как в математике, а «положить в коробку». Строка age = 10 читается так: «в коробку с именем age положи число 10».
Содержимое коробки можно менять в любой момент:
age = 10
print(age) # покажет 10
age = age + 1
print(age) # покажет 11
11
Как называть переменные
- Можно использовать буквы, цифры и знак подчёркивания
_. - Имя не может начинаться с цифры (
1age— нельзя,age1— можно). - Пробелы внутри имени не допускаются — вместо них используют
_, напримерmy_age. - Python различает большие и маленькие буквы:
Ageиage— это две разные коробки.
Впишите своё имя — увидите, как оно превращается в переменную и подставляется в текст.
Основные типы данных
У каждого значения в Python есть свой «тип» — вид данных, который определяет, что с ним можно делать. Пока достаточно запомнить четыре главных:
number = 5
gramm = 67.4
text = "Алиса"
valid = True
print(number, gramm, text, valid)
| Тип | Название | Пример |
|---|---|---|
int | целое число | 5, -3 |
float | дробное число | 67.4 |
str | текст (строка) | "Алиса" |
bool | логическое значение | True или False |
bool — это тип, у которого есть всего два возможных значения: True (истина) и False (ложь). Мы уже встречали их как результат сравнений и условий — и скоро увидим, что именно на них строятся if и циклы.
Числа
В Python есть два основных вида чисел: целые (int, от integer) — например, 5 или −3, и дробные (float, от «плавающая точка») — например, 3.14. Дробную часть отделяют точкой, а не запятой.
apples = 5
price = 1.5
print(apples * price)
С числами можно делать обычную математику:
| Знак | Что делает | Пример |
|---|---|---|
+ | сложение | 5 + 2 → 7 |
- | вычитание | 5 - 2 → 3 |
* | умножение | 5 * 2 → 10 |
/ | деление | 5 / 2 → 2.5 |
// | деление без остатка | 5 // 2 → 2 |
% | остаток от деления | 5 % 2 → 1 |
** | возведение в степень | 5 ** 2 → 25 |
/ в Python всегда возвращает дробное число, даже если оно делится нацело: 10 / 2 даёт 5.0, а не 5.Короткая запись: +=, -=, *=, /=
Изменение переменной «саму через себя» встречается так часто, что для этого придумали сокращение. Вместо count = count + 1 можно написать короче — count += 1, смысл при этом не меняется.
count = 0
count += 1 # то же самое, что count = count + 1
count += 1
print(count)
Так же работают -=, *= и /= — для вычитания, умножения и деления. Этот приём часто пригодится в циклах, когда нужно что-то считать или копить.
Текст (строки)
Текст в программировании называют «строкой» — это любая последовательность символов, заключённая в кавычки: одинарные '...' или двойные "...", разницы нет.
Строки можно склеивать знаком +:
first = "Приве"
second = "т!"
print(first + second)
Но гораздо удобнее подставлять переменные в текст с помощью f-строк — строк с буквой f перед кавычками, где значения вставляются прямо в фигурных скобках:
name = "Аня"
age = 10
print(f"Привет, {name}! Тебе {age} лет.")
Ещё пара полезных приёмов: len(text) считает количество символов, а text * 3 повторяет строку три раза подряд.
Ввод данных: input()
Пока что все значения мы задавали сами прямо в коде. Но программа становится куда интереснее, когда может спросить что-то у человека — для этого есть функция input().
name = input("Ваше имя: ")
age = int(input("Ваш возраст: "))
city = input("Ваш город: ")
print(f"Меня зовут {name}, мне {age} лет, я живу в {city}")
Текст в скобках input("Ваше имя: ") — это подсказка, которую увидит человек. Программа остановится и будет ждать, пока не нажмут Enter, а всё, что было напечатано, попадёт в переменную.
input() всегда возвращает текст (строку), даже если человек ввёл цифры. Поэтому input() + input() склеит два текста, а не сложит числа: "15" + "20" даст "1520", а не 35. Чтобы посчитать честную сумму, число нужно обернуть в int() (для целых) или float() (для дробных) — как мы и сделали с возрастом выше.Заполните поля так, как будто отвечаете программе — код и результат соберутся сами.
Условия: if, elif, else
Условия — это способ сказать программе: «сделай одно, если верно вот это, а иначе сделай другое». Жизнь вокруг нас полна таких развилок.
weather = "дождь"
if weather == "дождь":
print("Возьми зонт")
elif weather == "солнце":
print("Возьми очки")
else:
print("Можно выходить налегке")
Разберём по частям:
if— «если»: первая проверка. Если условие верно, выполняется код под ней.elif(сокращение от «else if», «иначе если») — дополнительная проверка, если первая оказалась неверной. Таких блоков может быть сколько угодно.else— «иначе»: сработает, если ни одно условие выше не подошло. Он необязателен и всегда идёт последним.
Знак == (два знака равенства подряд) означает «проверить на равенство», в отличие от одного =, который «кладёт в коробку». Другие операторы сравнения:
| Знак | Значение |
|---|---|
== | равно |
!= | не равно |
> / < | больше / меньше |
>= / <= | больше или равно / меньше или равно |
Логические операторы: and, or, not
Иногда нужно проверить сразу несколько условий вместе — для этого есть три специальных слова.
| Запись | Когда результат верен (True) |
|---|---|
A and B | когда верны оба условия сразу |
A or B | когда верно хотя бы одно из условий |
not A | переворачивает результат на противоположный |
age = 15
has_parent = True
if age >= 18 or has_parent:
print("Можно в кино")
else:
print("Нужен взрослый рядом")
Здесь достаточно, чтобы сработало хотя бы одно условие: либо возраст 18+, либо рядом родитель. А вот and требует, чтобы были верны сразу оба условия:
is_warm = True
has_umbrella = False
if is_warm and has_umbrella:
print("Идём гулять")
else:
print("Лучше остаться дома")
not работает иначе — он не сравнивает два условия, а просто переворачивает одно на противоположное:
is_raining = True
print(not is_raining)
Включите переключатели и выберите оператор — результат посчитается вживую, так же, как это сделал бы Python.
(warm)
(umbrella)
if, elif или else, относится к этому блоку. Сбитый отступ — самая частая ошибка у новичков.Диапазоны значений
Цепочку if / elif / else удобно использовать, чтобы разложить число по «корзинам» — например, определить возрастную категорию:
age = int(input("Ваш возраст: "))
if age >= 0 and age <= 12:
print("Ребёнок")
elif age >= 13 and age <= 17:
print("Подросток")
elif age >= 18 and age <= 50:
print("Взрослый")
elif age >= 51:
print("Пожилой")
else:
print("Такого возраста не бывает")
Тот же приём работает и для проверки на несколько конкретных значений через or — например, чтобы определить время года по номеру месяца:
month = int(input("Номер месяца: "))
if month == 12 or month == 1 or month == 2:
print("Зима")
elif month >= 3 and month <= 5:
print("Весна")
else:
print("Лето или осень")
Комбинируем and и or на практике
Часто доступ к чему-либо разрешают разными способами — например, по паролю или по связке логина и пароля администратора:
login = input("Логин: ")
password = input("Пароль: ")
if password == "1a" or password == "2b":
print("Доступ: пользователь")
elif login == "admin" and password == "3v":
print("Доступ: администратор")
else:
print("Доступ запрещён")
Вложенные условия
Внутри блока if или elif можно написать ещё один if — это называется вложенным условием: он проверяется, только когда сработало внешнее. Удобный пример — калькулятор, который не даёт делить на ноль:
a = int(input("Первое число: "))
b = int(input("Второе число: "))
op = input("Выбери +, -, *, /: ")
if op == "+":
print(f"Сумма: {a + b}")
elif op == "-":
print(f"Разность: {a - b}")
elif op == "*":
print(f"Произведение: {a * b}")
elif op == "/":
if b == 0:
print("Делить на 0 нельзя!")
else:
print(f"Деление: {a / b}")
else:
print("Такого действия нет")
Обратите внимание на отступы: строка if b == 0: стоит внутри elif op == "/":, а значит выполняется только тогда, когда пользователь выбрал именно деление.
Цикл for
Цикл — это способ заставить компьютер повторить одно и то же действие много раз, не переписывая код вручную. for используют, когда заранее известно, по какому набору предметов нужно пройтись.
fruits = ["яблоко", "груша", "банан"]
for fruit in fruits:
print(fruit)
груша
банан
Часто нужно просто повторить действие определённое число раз — для этого есть функция range(), которая создаёт последовательность чисел:
for i in range(5):
print(f"Шаг номер {i}")
Шаг номер 1
Шаг номер 2
Шаг номер 3
Шаг номер 4
range(5) даёт пять чисел: 0, 1, 2, 3, 4 — Python начинает счёт с нуля, это тоже стоит запомнить.
Нажмите кнопку — цикл пройдёт по коробке с фруктами шаг за шагом.
Ещё примеры for
Циклом можно пройтись не только по списку, но и по каждой букве строки:
word = "кот"
for letter in word:
print(letter)
о
т
А ещё в цикле часто копят результат — например, считают сумму чисел в отдельной переменной-накопителе:
numbers = [10, 20, 30]
total = 0
for n in numbers:
total = total + n
print(total)
Впишите числа через запятую и запустите — увидите, как переменная total растёт на каждом шаге цикла.
Вложенные циклы: таблица умножения
Один for можно поставить внутрь другого — это называется вложенным циклом. Внешний цикл выбирает число, а внутренний — полностью пробегает по своему набору для каждого значения внешнего:
for i in range(2, 4):
for j in range(1, 4):
print(f"{i} * {j} = {i * j}")
2 * 2 = 4
2 * 3 = 6
3 * 1 = 3
3 * 2 = 6
3 * 3 = 9
Для каждого значения i (2, потом 3) внутренний цикл заново проходит все значения j — поэтому строк получается 2 × 3 = 6. Расширив диапазоны до range(2, 10) и range(1, 10), получится полная таблица умножения.
Рисуем ёлочку
Вложенные циклы и повторение строк (" " * n) отлично подходят для несложной ASCII-графики:
size = int(input("Размер ёлки: "))
for i in range(1, size + 1):
print(" " * (size - i) + "#" * (2 * i - 1))
for j in range(2):
print(" " * (size - 2) + "//")
Задайте размер (от 3 до 12) и посмотрите, что нарисует этот код.
Считаем с условием внутри цикла
Комбинация for + if + накопитель со знаком += позволяет отбирать и считать только нужные значения:
count = 0
for i in range(1, 51):
if i % 7 == 0:
count += 1
print(f"Всего чисел: {count}")
Цикл проверяет все числа от 1 до 50, и каждый раз, когда остаток от деления на 7 равен нулю, счётчик увеличивается на единицу.
Цикл while
while используют, когда заранее неизвестно, сколько раз нужно повторить действие — цикл продолжается, пока условие остаётся верным, и останавливается, как только оно становится ложным.
count = 3
while count > 0:
print(count)
count = count - 1
print("Старт!")
2
1
Старт!
count = count - 1, условие count > 0 никогда не станет ложным — цикл будет повторяться бесконечно, и программа «зависнет». Всегда проверяйте, что внутри цикла что-то меняется в сторону завершения условия.Иногда цикл хочется прервать досрочно по особому условию — для этого есть команда break, которая немедленно останавливает цикл:
numbers = [4, 9, 15, 7]
for n in numbers:
if n == 15:
print("Нашли 15, хватит искать")
break
print(f"Проверяю {n}...")
Проверяю 9...
Нашли 15, хватит искать
Ещё один пример while
Часто while используют, чтобы копить что-то до нужной цели — например, откладывать деньги, пока не наберётся нужная сумма:
savings = 0
while savings < 100:
savings = savings + 20
print(savings)
40
60
80
100
Задайте цель и шаг накопления — посмотрите, сколько раз сработает цикл, прежде чем условие станет ложным.
Бесконечный цикл с выходом по команде
Иногда программа должна работать, пока пользователь сам не решит остановиться. Для этого пишут while True — условие, которое всегда истинно, — а выход делают через break внутри:
while True:
num = int(input("Введите число: "))
print(f"Удвоенное число: {num * 2}")
answer = input("Продолжить? (да/нет): ")
if answer == "нет":
break
Без break такой цикл не остановился бы никогда — поэтому while True всегда пишут вместе с проверкой, которая рано или поздно его прервёт.
Программа проверяет пароль в цикле — «Ошибка, введите снова», пока не угадаете. Подсказка: название языка, который мы изучаем.
Ещё несколько типичных задач
Этот же приём — while True плюс проверка внутри — лежит в основе множества похожих программ. Вот три коротких примера.
Считаем сумму чисел, пока не введут 0:
total = 0
while True:
num = int(input("Число (0 — чтобы закончить): "))
if num == 0:
break
total += num
print(f"Сумма: {total}")
Ищем первое число больше 100, которое делится на 13:
num = 100
while True:
if num % 13 == 0:
print(f"Нашли: {num}")
break
num += 1
Считаем, сколько раз число можно поделить на 2, прежде чем оно станет меньше 1:
number = 16
count = 0
while number >= 2:
number = number // 2
count += 1
print(f"Раз: {count}")
Шпаргалка на одну страницу
Коротко всё, что мы разобрали — чтобы можно было подглядывать, когда пишете свой первый код.
Переменная
age = 10
name = "Аня"
Вывод на экран
print("Привет!")
print(f"Тебе {age} лет")
Ввод данных
name = input("Имя: ")
age = int(input("Возраст: "))
Условие
if age > 18:
print("взрослый")
elif age > 0:
print("ребёнок")
else:
print("хм")
and / or / not
if age >= 18 and has_ticket:
print("можно")
if a or b:
print("хотя бы одно")
Цикл for
for x in range(5):
print(x)
Цикл while
while True:
x = input("Введи: ")
if x == "стоп":
break
Операторы сравнения
== != > < >= <=
Сокращённая запись
count += 1
total -= 5
x *= 2
Что делать дальше
Программирование учится руками, а не глазами — прочитать про циклы мало, нужно самому пару раз запутаться и распутаться. Несколько идей для практики:
Не бойтесь ошибок — в программировании это не провал, а часть процесса: компьютер честно укажет на строку, где что-то пошло не так, и это всегда можно исправить.