Теоретичні відомості#
Лінійний алгоритм — алгоритм, в якому обчислення виконуються строго послідовно. Такий алгоритм реалізується простими інструкціями. Прості інструкції (simple statements) є базовим елементом більшості мов програмування і Python не виняток.
Прості інструкції розташовуються в одному рядку. Кілька простих інструкцій теж можна розташовувати в одному рядку, для цього вони повинні бути розділені крапкою з комою. Однак, зловживати не варто, так як це погано позначається на читання коду.
Типова блок-схема лінійного алгоритму показана на рис. 1.1.
Цілі числа (int
)#
Числа в Python 3 нічим не відрізняються від звичайних чисел. Вони підтримують набір звичайних математичних операцій:
Запис |
Операція |
---|---|
|
додавання |
|
віднімання |
|
множення |
|
ділення |
|
отримання цілої частини від ділення |
|
залишок від ділення |
|
зміна знака числа |
|
модуль числа |
|
Частка і залишок від ділення |
|
зведення в ступінь |
|
x^y по модулю (якщо модуль заданий) |
Також потрібно відзначити, що цілі числа в Python 3, на відміну від багатьох інших мов, підтримують довгу арифметику (проте, це вимагає більше пам’яті).
Приклади операцій:
255 + 34
289
5 * 2
10
20/3
6.666666666666667
20//3
6
20%3
2
3**4
81
pow(3,4)
81
pow(3,4,27)
0
3**150
369988485035126972924700782451696644186473100389722973815184405301748249
Бітові операції#
Над цілими числами також можна виконувати бітові операції.
Запис |
Операція |
---|---|
|
побітове АБО |
|
побітове виключення АБО |
|
побітове І |
|
бітовий зсув вліво |
|
бітовий зсув вправо |
|
інверсія бітів |
Системи числення#
Для переведення числа з однієї системи числення в іншу Python надає кілька функцій:
int ([object], [основа системи числення])
— перетворення до цілого числа в десятковій системі числення. За замовчуванням система числення десяткова, але можна задати будь-яку основу від 2 до 36 включно.bin (x)
— перетворення цілого числа в двійковий рядок.hex (х)
— перетворення цілого числа в шістнадцятковий рядок.oct (х)
— перетворення цілого числа в вісімковий рядок.
Дійсні числа (float
)#
Дійсні числа підтримують ті ж операції, що і цілі. Більш докладно про можливі операції див. Додаток 4.
Прості приклади роботи з числами:
c = 150
d = 12.9
c + d
162.9
p = abs(d - c) # Модуль числа
print(p)
137.1
round(p) # Заокруглення
137
Крім стандартних виразів для роботи з числами (а в Python їх не так вже й багато), в складі Python є кілька корисних модулів.
Модуль math
надає більш складні математичні функції.
import math
math.pi
3.141592653589793
math.sqrt(85)
9.219544457292887
Модуль random
реалізує генератор випадкових чисел і функції випадкового вибору.
import random
random.random()
0.01686419308383258
Більш докладно операції з різними типами змінних описано в Додатку 4.
Функції print
і input
#
Для обміну даними із зовнішнім для програми середовищем в Python застосовуються функції print
і input
.
Функція print
виводить на монітор те, що вказано в дужках при виклику цієї функції. У дужках можуть бути будь-які типи даних. Крім того, кількість даних може бути різним:
print(1032)
1032
print(2.34)
2.34
print("Hello")
Hello
print("a:", 1)
a: 1
one = 1
two = 2
three = 3
print(one, two, three)
1 2 3
Аргументи функції (те, що в дужках), поділяються між собою комами. У виводі замість ком значення розділені пробілом. Якщо в дужках стоїть вираз, то спочатку він виконується, після чого print()
вже виводить результат цього виразу:
print("hello" + " " + "world")
hello world
print(10 - 2.5/2)
8.75
У print
передбачені додаткові параметри. Наприклад, через параметр sep
можна вказати відмінний від пробілу роздільник рядків:
print("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun", sep="-")
Mon-Tue-Wed-Thu-Fri-Sat-Sun
print(1, 2, 3, sep="//")
1//2//3
Форматування виведення може виконуватися в так званому старому стилі або за допомогою строкового методу format
. Старий стиль також називають С-стилем, так як він схожий з тим, як відбувається вивід на екран в мові C. Приклад:
pupil = "Ben"
old = 16
grade = 9.2
print("It's %s, %d. Level: %f" % (pupil, old, grade))
It's Ben, 16. Level: 9.200000
Тут замість трьох комбінацій символів %s
, %d
, %f
підставляються значення змінних pupil
, old
, grade
. Букви s
, d
, f
позначають типи даних - рядок, ціле число, дійсне число. Якби було потрібно підставити три рядки, то у всіх випадках використовувалося б сполучення %s
.
Хоча в якості значення змінної grade
було зазначено число 9.2
, на екран воно вивелося з додатковими нулями. Однак, можна вказати, скільки потрібно знаків після коми, записавши перед буквою f
точку з бажаним числом знаків в дробовій частині:
print("It's %s, %d. Level: %.1f" % (pupil, old, grade))
It's Ben, 16. Level: 9.2
Тепер розглянемо метод format
:
print("This is a {0}. It's {1}.".format("ball", "red"))
This is a ball. It's red.
print("This is a {0}. It's {1}.".format("cat", "white"))
This is a cat. It's white.
print("This is a {0}. It's {1} {2}.".format(1, "a", "number"))
This is a 1. It's a number.
У рядку в фігурних дужках вказані номери даних, які будуть сюди під-ставлені. Далі до рядка застосовується метод format
. У його дужках вказуються самі дані (можна використовувати змінні). На нульове місце підставиться перший аргумент методу format
, на місце з номером 1 - другий і т. д.
За введення у програму даних з клавіатури в Python відповідає функція input
. Коли викликається ця функція, програма зупиняє своє виконання і чекає, коли користувач введе текст. Після цього, коли він натисне Enter, функція input
забере введений текст і передасть його програмі, яка вже буде обробляти його відповідно до своїх алгоритмів.
Якщо у інтерактивному режимі ввести команду input
, то комп’ютер буде чекати, коли ви введете щось і натиснете Enter або просто натиснете Enter. Якщо ви щось ввели, це відразу ж відобразитися на екрані:
input()
'Yes!'
Функція input
передає введені дані у програму. Їх можна присвоїти змінній. В цьому випадку інтерпретатор не виводить рядок відразу ж:
answer = input()
No, it is not.
В даному випадку рядок зберігається в змінній answer, і при бажанні можно вивести її значення на екран:
answer
'No, it is not.'
При використанні функції print
лапки опускаються.
За замовчуванням функція іnput
вводить інформацію як рядок, тобто як символи.
Приклад:
x = input()
y = input()
print (x+y) # до першого рядку приєднується другий
512
Щоб працювати з числовою інформацією треба для функції input
вказати тип числа, що вводиться (наприклад, int або float).
Приклад:
x = int(input())
y = int(input())
print(x+y) # перше число складається з другим
12
5
17
Перед викликом функції треба передбачити спеціальне запрошення, тому що користувач може не зрозуміти, що від нього чекає програма.
Приклад:
UserName = input()
print(UserName)
Natalia
Natalia
Поняття розгалуження#
Розгалужений обчислювальний процес передбачає кілька можливих напрямків обчислення, але тільки одиніз них повинен виконуватися при реалізації алгоритму. Тому розгалуження включає перевірку одного або декількох умов, в залежності від якої і буде вибиратися напрямок (гілка) обчислення.
Таким чином, алгоритм розгалуження складається з перевірки умови (умов) і всіх можливих гілок обчислення, при цьому бажано, щоб дії, загальні для всіх гілок, описувалися один раз (до або після розгалуження).
Найбільш відома інструкція, що дозволяє реалізувати логічне розгалуження, складається з трьох частин: if
, elif
, else
.
Керуючі конструкції. Оператори if ... elif ... else
#
Структура керуючої конструкції (або “прийняття рішення”) вимагає, щоб програміст поставив одне або більше умов, які будуть виконані і перевірені програмою і однієї або декількох дій, які будуть виконані, якщо умова буде визначено як істина (true
) і, опціонально, інші вирази, які будуть виконані, якщо умова буде визначено як хибність (false
).
Нижче наведено форму типової структури форми керуючої конструкції, яка схожа в більшості мов програмування (рис.1.2):
Рисунок 1.2. − Приклад розгалуженого алгоритму програми.
Мова програмування Python передбачає будь-яке не рівне нулю або не порожнє значення як істину (true
), і навпаки - якщо значення буде порожнім або дорівнювати нулю — то воно буде вважатися хибним (false
).
Оператор if
#
Оператор if
в Python подібний цьому оператору в інших мовах. Утвердження з використанням оператора if
містить в собі логічну умову, в який проводиться порівняння даних і по результату вибирається подальша дія.
Синтаксис#
Синтаксис оператора if
в Python такий:
if <умова>:
<дія(ї)>
Якщо логічна умова є істиною (true
), тоді блок дій в виразі буде виконаний. Якщо умова є хибною (false
) — тоді буде виконаний наступний блок коду після цього виразу.
Приклад:
var1 = 100
if var1:
print("1 - Got a true expression value")
print(var1)
var2 = 0
if var2:
print("2 - Got a true expression value")
print(var2)
print("Good bye!")
1 - Got a true expression value
100
Good bye!
Оператори if .. elif .. else
#
Оператор else
може використовуватися разом з оператором if
. Оператор else
містить блок коду, який буде виконаний, якщо результат виразу дорівнює нулю або вважається хибним. Це опціональний оператор, і він може бути тільки один у всьому виразі після if
.
Синтаксис#
if <умова>:
<дія(ї)>
else:
<дія(ї)>
Приклад:
var1 = 100
if var1:
print("1 - Got a true expression value")
print(var1)
else:
print("1 - Got a false expression value")
print(var1)
var2 = 0
if var2:
print("2 - Got a true expression value")
print(var2)
else:
print("2 - Got a false expression value")
print(var2)
print("Good bye!")
1 - Got a true expression value
100
2 - Got a false expression value
0
Good bye!
Оператор elif
#
Оператор elif
дозволяє виконувати множинну перевірку виразу і виконувати блок коду, як тільки результат буде вважатися істиною.
Як і оператор else
, elif
опціональний, однак, на відміну від else
, він може використовуватися багаторазово.
Синтаксис#
if <умова>:
<дія(ї)>
elif <умова2>:
<дія(ї)>
elif <умова3>:
<дія(ї)>
else:
<дія(ї)>
В Python немає таких операторів як switch
або case
, але можна використовувати оператори if..elif ...
замість них.
Приклад:
var = 100
if var == 200:
print("1 - Got a true expression value")
print(var)
elif var == 150:
print("2 - Got a true expression value")
print(var)
elif var == 100:
print("3 - Got a true expression value")
print(var)
else:
print("4 - Got a false expression value")
print(var)
print("Good bye!")
3 - Got a true expression value
100
Good bye!
Вкладені конструкції if
#
Бувають випадки, коли ви хочете провести ще одну перевірку після того, як результат виразу прийнятий як істина. В такому випадку - можна використовувати вкладені керуючі конструкції if
(або інакше каскадні).
У вкладеної конструкції, ви можете додавати if .. elif .. else
всередині іншої такої ж конструкції.
Синтаксис#
if <умова1>:
<дія(ї)>
if <умова2>:
<дія(ї)>
elif <умова3>:
<дія(ї)>
else:
<дія(ї)>
elif <умова4>:
<дія(ї)>
else:
<дія(ї)>
Приклад:
var = 100
if var < 200:
print("Expression value is less than 200")
if var == 150:
print("Which is 150")
elif var == 100:
print("Which is 100")
elif var == 50:
print("Which is 50")
elif var < 50:
print("Expression value is less than 50")
else:
print("Could not find true expression")
print("Good bye!")
Expression value is less than 200
Which is 100
Good bye!
Як правило, в якості умови, що перевіряється використовується результат обчислення одного з наступних операторів порівняння:
Оператор |
Значення |
---|---|
|
Менше — умова вірна, якщо перший операнд менше другого. |
|
Більше — умова вірна, якщо перший операнд більше другого. |
|
Менше або дорівнює. |
|
Більше або дорівнює. |
|
Рівність — Умова вірна, якщо два операнда рівні. |
|
Нерівність — Умова вірна, якщо два операнда нерівні. |
Оператори порівняння в Python можна об’єднувати в ланцюжки (на відміну від більшості інших мов програмування, де для цього потрібно використовувати логічні зв’язки), наприклад, a == b == c
або 1 <= x <= 10
.
Оператори порівняння повертають значення спеціального логічного типу bool
. Значення логічного типу можуть приймати одне з двох значень: True
(істина) або False
(хибність). Якщо перетворити логічне True до типу int
, то вийде 1, а перетворення False дасть 0. При зворотному перетворенні число 0 перетворюється в False
, а будь-яке ненульове число в True
. При перетворенні str
в bool
порожній рядок перетворюється в False
, а будь-який непорожній рядок в True
.