Значения и переменные
В алгебре score = score + 5 не имеет решения. В Python это обычная строка: если score было равно 10, оно станет 15.
Знак = не означает «равно»
Покажи ученику, изучающему математику, строку score = score + 5, и он скажет, что это неверно: никакое число не равно самому себе плюс пять. В алгебре он прав, и именно поэтому такая строка при первом знакомстве с программой сбивает с толку. В Python знак = не утверждает равенство двух величин. Это направленная инструкция: сначала вычисли правую часть, затем свяжи имя слева с результатом.
score = 10
score = score + 5
print(score)15Прочитай это так, как делает Python. Строка 1: справа стоит 10, поэтому имя score теперь ссылается на 10. Строка 2: справа score + 5, то есть 10 + 5, то есть 15, поэтому теперь score ссылается на 15. Прежнее значение 10 больше не используется. Строка 3 выводит то, на что score ссылается в этот момент. Такое имя, связанное со значением, называют переменной, а строку, задающую ей значение, присваиванием.
Таблица трассировки следит за каждой переменной построчно
Когда меняются несколько переменных, веди таблицу трассировки: по строке на каждую строку кода, по столбцу на переменную. Записывай значение каждой переменной после выполнения строки. Способ неторопливый, но надёжный. С такой таблицей на большинство вопросов «почему выводится именно это?» можно ответить меньше чем за минуту.
score = 10
bonus = score * 2
score = 0
print(score, bonus)0 20| Строка | score | bonus |
|---|---|---|
| score = 10 | 10 | (пока нет) |
| bonus = score * 2 | 10 | 20 |
| score = 0 | 0 | 20 |
| print(score, bonus) | 0 | 20 |
Посмотри на две последние строки. Изменение score на 0 не изменило bonus. При выполнении строки 2 Python вычислил 10 * 2 = 20 и присвоил bonus это число. В bonus хранится результат, а не способ вычисления, поэтому переменная не помнит, откуда взялось 20.
У каждого значения есть тип
Значения бывают разных видов, называемых типами. Целые числа, например 42, имеют тип int. Числа с десятичной точкой, например 3.5, имеют тип float. Текст в кавычках имеет тип str. У True и False тип bool. Встроенная функция type показывает тип значения. Тип важен: от него зависит действие операции. Так, 2 + 3 складывает числа, а "2" + "3" соединяет две строки в "23".
print(type(42))
print(type(3.5))
print(type("42"))
print(type(True))
print(2 + 3, "2" + "3")<class 'int'>
<class 'float'>
<class 'str'>
<class 'bool'>
5 23Правила имён
В имени переменной могут быть буквы, цифры и знак подчёркивания _, но оно не может начинаться с цифры или содержать пробелы. Регистр важен: Score и score являются разными переменными. Некоторые слова, например if, for и True, зарезервированы языком и не могут быть именами. Программисты на Python обычно пишут имена строчными буквами, разделяя слова подчёркиваниями, как в lunch_price, и выбирают имена по смыслу значения. Для быстрой проверки подойдёт x, а в программе, которую будут читать другие, лучше seats_left.
a = "left"
b = "right"
a, b = b, a
print(a, b)right leftВ последнем примере два значения меняются местами одной строкой. Python сначала вычисляет всю правую часть b, a, а уже потом присваивает результаты a и b. Во многих других языках для этого нужна третья переменная.
| переменная | Имя, которое ссылается на значение |
| присваивание | name = value: вычислить правую часть, затем связать с ней имя |
| int | Целые числа: 7, -3, 2026 |
| float | Числа с десятичной точкой: 3.5, 0.1 |
| str | Текст в кавычках |
| bool | True или False |
| таблица трассировки | Таблица значений всех переменных после каждой строки |
- Что выведет этот код?
x = 4 x = x + 3 print(x) - Что выведет этот код?
a = 3 b = a a = 7 print(b) - Что выведет этот код?
price = 1500 count = 3 total = price * count print(total) - Что выведет этот код?
n = 2 n = n * n n = n * n print(n)48162
- Что выведет этот код?
print(type(7.0)) - Что выведет этот код?
print("7" + "7") - Какое из этих имён переменной допустимо?
- 2nd_place
- seats left
- seats_left
- for
- Что выведет этот код?
a = "left" b = "right" a, b = b, a print(b) - Что выведет этот код?
Score = 5 score = 9 print(Score)5914An error
- Чему равно x после x = 10 и отдельной строки x + 1?
- 10
- 11
- x + 1
- Ошибка
- «5 = x и x = 5 означают одно и то же». Имя должно стоять слева. Строка 5 = x вызывает SyntaxError: cannot assign to literal here. Maybe you meant '==' instead of '='?
- «bonus = score * 2 навсегда связывает bonus со score». bonus получает число, вычисленное в этот момент. Последующие изменения score его не затрагивают, как видно по таблице трассировки.
- «Запись x + 1 прибавляет единицу к x». Само по себе выражение ничего не меняет. Нужно x = x + 1 или сокращённая форма x += 1.
- = означает «вычисли правую часть, затем дай результату это имя».
- В таблице трассировки записывают значения всех переменных после каждой строки.
- Типы: int, float, str, bool. Узнать тип можно с помощью type().
- Имена: буквы, цифры, _; цифра не может стоять первой; регистр важен.
Источники курса (6)
- Python Software Foundation, The Python Tutorial for Python 3.12 (docs.python.org/3.12/tutorial: 2 Using the Python Interpreter, 3 An Informal Introduction to Python (numbers, text, lists), 4 More Control Flow Tools (if, for, range, break and continue, defining functions, default argument values, 4.10 coding style: 4-space indentation), 5 Data Structures (list methods, 5.5 dictionaries, insertion order), 8 Errors and Exceptions (syntax errors, exceptions, reading the traceback, handling exceptions), 15 Floating-Point Arithmetic (0.1 + 0.2))
- Built-in Functions (docs.python.org/3.12/library/functions.html: print, input, len, int, float, str, type, round (round half to even: round(0.5) and round(-0.5) are 0, round(1.5) is 2), range, sum, min, max, sorted)
- Built-in Types (str methods upper, lower, replace, strip; dict.get; list.append, pop, remove, sort returning None)
- General Python FAQ (docs.python.org/3.12/faq/general.html: Guido van Rossum began Python in the 1989 Christmas holidays, posted it to USENET in February 1991, named it after Monty Python's Flying Circus)
- Curriculum for the Korean pages: 교육부 고시 제2022-33호 [별책 10] 정보과 교육과정 (PDF read 2026-10-19: 중학교 정보 [9정03-05] 리스트 등 데이터를 순차적으로 저장하는 구조, [9정03-06] 논리 연산과 중첩 제어 구조, [9정03-07] 함수 활용과 디버거로 오류 수정, [9정03-08] 실생활 문제를 프로그래밍으로 해결, 적용 시 고려 사항 「학생의 수준을 고려하여 적합한 프로그래밍 언어를 선정」; 고등학교 정보 [12정03-04] 자료형, [12정03-05] 표준입출력, [12정03-07] 제어 구조)
- Bug story only: Smithsonian National Museum of American History, Log Book With Computer Bug, 1947, Harvard Mark II, "first actual case of bug being found", probably not Hopper's log book (americanhistory.si.edu/collections/object/nmah_334663, read 2026-10-19)
Проверено: 2026-10-19