Змінні та присвоєння
Last updated on 2025-01-24 | Edit this page
Overview
Questions
- Як я можу зберігати дані в програмах?
Objectives
- Створення програм, які присвоюють скалярні значення змінним і виконують обчислення з цими значеннями.
- Відстеження у програмах значень змінних, які використовують скалярне присвоєння.
Використовуйте змінні для зберігання значень.
Змінні - це імена значень.
-
Імена змінних
- можуть складатися тільки з букв, цифр та
підкреслення
_
(яке звичайно використовується, щоб відокремити слова у довгих назвах змінних) - не можуть починатися з цифри
-
залежать від регістру (тобто
age
,Age
таAGE
- це три різні змінні)
- можуть складатися тільки з букв, цифр та
підкреслення
Ім’я змінної має бути змістовним, щоб ви або інший програміст знали, що це таке
Імена змінних, які починаються з підкреслення, наприклад
__alistairs_real_age
, мають специфічне значення, тому ми не будемо цього робити, доки не зрозуміємо прийняті в мові Python домовленості.У Python символ
=
використовується для присвоєння значення, яке знаходиться праворуч, до його імені, яке вказано ліворуч.Змінна створена, коли їй присвоюється значення.
-
У виразі нижче Python призначає вік змінній
age
та ім’я в лапках - зміннійfirst_name
.
Використовуйте print
для виведення значень.
- Python має вбудовану функцію
print
, яка друкує щось як текст. - Щоб викликати функцію (тобто, щоб виконати її), треба вказати її ім’я.
- Щоб передати функції значення (тобто дані для друку), їх треба помістити у дужки.
- Щоб направити до друку рядок тексту, його треба помістити в одинарні або подвійні лапки.
- Значення, які передаються до функції, називаються аргументами
OUTPUT
Ahmed is 42 years old
-
print
автоматично додає пробіл між надрукованими аргументами, щоб відокремити їх. - Також
print
переходить на новий рядок після друку.
Змінні мають бути створені перед їх використанням.
- Якщо змінна ще не існує, або якщо ім’я було неправильно написано, Python повідомляє про помилку. (На відміну від деяких інших мов, які можуть “вгадати” якесь значення за замовчуванням.)
ERROR
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-1-c1fbb4e96102> in <module>()
----> 1 print(last_name)
NameError: name 'last_name' is not defined
- Останній рядок у повідомленні про помилку є найбільш інформативним.
- Ми більш детально розглянемо повідомлення про помилки пізніше.
Змінні зберігаються між комірками
Майте на увазі, що в блокноті Jupyter важливий порядок виконання комірок, а не порядок їх розташування. Python запам’ятає весь код, який було виконано раніше, у тому числі всі змінні, які ви визначили, незалежно від порядку в блокноті. Тому, якщо ви визначите змінні нижче в блокноті, а потім (повторно) запустите комірки вище, то ті комірки, що визначені нижче, все одно будуть присутні. Як приклад, створіть дві комірки наступного вмісту у такому порядку:
Якщо виконати це послідовно, то перша комірка дасть помилку. Однак,
якщо ви запустите першу комірку після другої, вона виведе на
екран 1
. Щоб уникнути плутанини, можна скористатися опцією
Kernel
-> Restart & Run All
, яка
перезавантажує інтерпретатор і запускає все з чистого аркуша, зверху
вниз.
Змінні можна використовувати для обчислень.
- Ми можемо використовувати змінні в обчисленнях так само, як би вони
були значеннями.
- Пам’ятайте, ми присвоїли значення
42
зміннійage
кількома рядками вище.
- Пам’ятайте, ми присвоїли значення
OUTPUT
Age in three years: 45
Використовуйте індекс, щоб отримати один символ із рядка.
- Символи (окремі літери, цифри тощо) у рядку є впорядкованими.
Наприклад, рядок
'AB'
не те саме, що'BA'
. Завдяки такому упорядкуванню ми можемо розглядати рядок як список символів. - Кожна позиція в рядку (перша, друга тощо) має номер. Це число називається індексом або іноді нижнім індексом.
- Індекси нумеруються від 0.
- Використовуйте індекс позиції у квадратних дужках, щоб отримати символ з тієї позиції у рядку.
OUTPUT
h
Використовуйте зріз, щоб отримати підрядок.
- Частина рядка називається підрядок. Він може складатися навіть тільки з одного символу.
- Список складається з елементів. У випадку, коли рядок розглядається як список, його елементами є окремі символи.
- Зріз - це частина рядка (в загальному випадку, частина будь-якого обʼєкту, схожого на колекцію).
- Ми беремо зріз із позначенням
[start:stop]
, деstart
— ціле число, що є індексом першого потрібного нам елементу, аstop
- ціле число, що є індексом елементу відразу після останнього потрібного нам елементу. - Проміжок між
stop
andstart
- це довжина зрізу. - Визначення зрізу не змінює вміст вихідного рядка. Натомість, визначений зріз повертає копію початкового рядка.
OUTPUT
sod
Використовуйте вбудовану функцію len
, щоб знайти
довжину рядка.
OUTPUT
6
- Вкладені функції обчислюються зсередини назовні, як у математиці: вирази, що знаходяться всередині дужок, обчислюються першими.
Python чутливий до регістру.
- Python вважає, що букви верхнього та нижнього регістру
відрізняються, отже
Name
іname
- різні змінні. - Існують домовленості про використання великих літер на початку імен змінних, тому ми будемо використовувати малі літери.
Використовуйте змістовні назви змінних.
- Ви можете використовувати будь-які комбінації символів для імен змінних, поки вони задовольняють вищевказані правила (букви, цифри та знак підкреслення).
- Використовуйте змістовні назви змінних, щоб допомогти іншим зрозуміти, що робить програма.
- Найважливіша “інша людина” — це ви в майбутньому.
OUTPUT
# Оператор # Значення x # Значення y # Значення swap #
x = 1.0 # 1.0 # не визначено # не визначено #
y = 3.0 # 1.0 # 3.0 # не визначено #
swap = x # 1.0 # 3.0 # 1.0 #
x = y # 3.0 # 3.0 # 1.0 #
y = swap # 3.0 # 1.0 # 1.0 #
Ці три рядки обмінюються значеннями в x
і y
використовуючи змінну swap
для тимчасового зберігання. Це
досить поширена ідіома програмування.
Challenge
Якщо ви присвоїли a = 123
, що станеться, якщо ви
спробуєте отримати другу цифру a
через
a[1]
?
Numbers are not strings or sequences and Python will raise an error
if you try to perform an index operation on a number. У наступному уроці про типи даних і
перетворення типів ми дізнаємось більше про типи і як конвертувати
один тип в інший. Якщо вам потрібна N-та цифра числа, ви можете
перетворити число на рядок за допомогою вбудованої функції
str
, а потім виконати операцію індексування цього
рядка.
ERROR
TypeError: 'int' object is not subscriptable
OUTPUT
2
Вибір імені
Яке ім’я для змінної є кращим: m
, min
або
minutes
? Чому? Hint: think about which code you would
rather inherit from someone who is leaving the lab:
ts = m 60 + s
tot_sec = min 60 + sec
total_seconds = minutes * 60 + seconds
minutes
is better because min
might mean
something like “minimum” (and actually is an existing built-in function
in Python that we will cover later).
OUTPUT
atom_name[1:3] is: ar
Різноманітні види зрізів
Є наступний рядок:
What would these expressions return?
species_name[2:8]
-
species_name[11:]
(без значення після двокрапки) -
species_name[:4]
(без значення до двокрапки) -
species_name[:]
(тільки двокрапка) species_name[11:-3]
species_name[-5:-3]
- What happens when you choose a
stop
value which is out of range? (тобто спробуйте виконатиspecies_name[0:20]
абоspecies_name[:103]
)
species_name[2:8]
повертає підрядок'acia b'
species_name[11:]
повертає підрядок'folia'
, з позиції 11 до кінця рядкуspecies_name[:4]
повертає підрядокAcac'
, з початку рядку до позиції 4, не включаючи цю позиціюspecies_name[:]
повертає весь рядок ‘Acacia buxifolia’`species_name[11:-3]
повертає підрядок'fo'
, з 11 позиції до третьої позиції з кінця рядку, не включаючи їїspecies_name[-5:-3]
також повертає підрядок'fo'
, з п’ятої позиції з кінця до третьої позиції з кінця, не включаючи їїЯкщо частина фрагмента виходить за межі діапазону, операція не повертає помилку.
species_name[0:20]
дає той самий результат, що іspecies_name[0:]
, таspecies_name[:103]
дає такий самий результат, якspecies_name[:]
Key Points
- Використовуйте змінні для зберігання значень.
- Використовуйте
print
для виводу значень. - Variables persist between cells.
- Змінні мають бути створені перед їх використанням.
- Змінні можна використовувати для обчислень.
- Використовуйте індекс, щоб отримати один символ із рядка.
- Використовуйте зріз, щоб отримати підрядок.
- Використовуйте вбудовану функцію
len
, щоб знайти довжину рядка. - У Python важливо, який регістр використовується.
- Використовуйте змістовні назви змінних.