Рейтинг користувача: 5 / 5

Активна зіркаАктивна зіркаАктивна зіркаАктивна зіркаАктивна зірка
 

ЦИКЛИ, РЯДКИ ТА СПИСКИ В МОВІ PYTHON

МЕТОДИЧНІ ВКАЗІВКИ

до лабораторної роботи № 2

з дисципліни “Алгоритмізація та програмування, частина 2”

для студентів спеціальності 122 «Комп’ютерні науки та інформаційні технології»

Затверджено

на засіданні кафедри інформаційних систем та мереж

Протокол №__ від _____.2017 р.

Цикли, рядки та списки в мові Python: Методичні вказівки до лабораторної роботи №2 / Укл.: В.А. Висоцька, Л.В. Чирун. – Львів: Видавництво Національного університету ”Львівська політехніка”, 2017. – 15 с.

Укладачі

                                      Висоцька В.А., канд. техн. наук, доц.

                                      Чирун Л.В., канд. техн. наук, доц.

                           

 

Відповідальний за випуск Литвин В.В., доктор техн. наук., проф.

Рецензенти     Верес О.М., канд. техн. наук, доц.

                          Берко А.Ю., доктор техн. наук., проф.


Мета роботи: ознайомитись із Python.

  1. Теоретичні відомості
  2. 1.Цикл while.

Цикли - це інструкції, що виконують одну і ту ж саму послідовність дій, поки діє задана умова.

У реальному житті ми досить часто стикаємося з циклами. Наприклад, ходьба людини - цілком циклічне явище: крок лівою, крок правою, знову лівою-правою і т.д., поки не буде досягнута певна мета (наприклад, школа чи магазин). У комп'ютерних програмах поряд з інструкціями розгалуження (тобто вибором шляху дії) також існують інструкції циклів (повторення дії). Якби інструкцій циклу не існувало, довелося б багато разів вставляти в програму один і той же код підряд стільки разів, скільки потрібно виконати однакову послідовність дій.

Універсальним організатором циклу в мові програмування Python (як і в багатьох інших мовах) є конструкція while. Слово "while" з англійської мови перекладається як "доки" ("доки логічний вираз має значення True, доти будуть виконуватись певні операції"). Конструкцію while мовою Python можна описати наступною схемою:

 

Ця схема приблизна, тому що логічний вираз в заголовку циклу while може бути більш складним, а змінюватися може змінна (або вираз) b.

Може виникнути питання: "Навіщо змінювати a або b?". Коли виконання програмного коду доходить до циклу while, виконується логічний вираз в заголовку, і, якщо було отримано True, виконуються вкладені вирази. Після потік виконання програми знову повертається в заголовок циклу while, і знову перевіряється умова. Якщо умова ніколи не буде змінюватись, то не буде причин зупинки циклу і програма зациклиться. Щоб цього не сталося, необхідно передбачити можливість виходу з циклу. Таким чином, змінюючи значення змінної в тілі циклу, можна довести логічний вираз до False і цикл завершиться.

 

Цю змінювану змінну, яка використовується в заголовку циклу while, зазвичай називають лічильником. Як і всякій змінній їй можна давати довільні імена, однак дуже часто використовують букви i та j. Найпростіший цикл на мові програмування Python може виглядати так:

str1 = "+"
i = 0
while i < 10:
    print(str1)
    i = i + 1

В останньому рядку коду відбувається збільшення значення змінної i на одиницю, тому з кожним колом циклу її значення збільшується. Коли буде досягнуте число 10, логічний вираз i < 10 дасть False, виконання тіла циклу буде припинено, а потік виконання програми перейде на наступні команди, що слідують після циклу. Результатом виконання вищевказаного скрипту є виведення на екран десяти знаків “+” в стовпчик. Якщо збільшувати лічильник в тілі циклу не на одиницю, а на 2, то буде виведено тільки п'ять знаків, так як цикл зробить лише п'ять обертів.

Більш складний приклад з використанням циклу:

fib1 = 0
fib2 = 1
print (fib1)
print (fib2)
n = 10
i = 0
while i < n:
    fib_sum = fib1 + fib2
    print(fib_sum)
    fib1 = fib2
    fib2 = fib_sum
    i = i + 1

Цей приклад виводить числа Фібоначчі - ряд чисел, в якому кожне наступне число дорівнює сумі двох попередніх: 0, 1, 1, 2, 3, 5, 8, 13 і т.д. Скрипт виводить дванадцять членів ряду: два (0 і 1) виводяться поза циклом і десять виводяться в результаті виконання циклу.

Як це відбувається? Вводяться дві змінні (fib1 та fib2), яким присвоюються початкові значення. Присвоюються значення змінній n та лічильнику i, між якими ті чи інші математичні відносини формують бажане число витків циклу. Всередині циклу створюється змінна fib_sum, якій присвоюється сума двох попередніх членів ряду, і її ж значення виводиться на екран. Далі змінюються значення fib1 та fib2 (першому присвоюється друге, а другому - сума), а також збільшується значення лічильника.

  1. 2.Введення даних з клавіатури

  Комп'ютерні програми обробляють дані, здійснюючи над ними операції, які задав програміст, і які були обумовлені поставленими завданнями. Дані в програму можна "закласти" в процесі її розробки. Однак така програма завжди буде обробляти одні й ті ж дані і повертати один і той же результат. Найчастіше потрібно зовсім інше - програма повинна обробляти різні (відносно, в певному діапазоні) дані, що надходять до неї з зовнішніх джерел. В якості останніх можуть виступати файли або клавіатура.

  Коли інформація вводиться з клавіатури, а результати виводяться на екран монітора, то можна говорити про інтерактивний режим роботи програми. Вона обмінюється інформацією із зовнішнім для неї середовищем: може виводити і отримувати дані в процесі виконання, і не є замкнутою сама на собі. З виведенням даних ми вже почасти знайомі: виведенням на екран (і не тільки) в мові програмування Python займається функція print().

  Введення даних з клавіатури в програму (починаючи з версії Python 3.0) здійснюється за допомогою функції input (). Коли дана функція виконується, то потік виконання програми зупиняється в очікуванні даних, які користувач повинен ввести за допомогою клавіатури. Після введення даних і натискання Enter, функція input () завершує своє виконання і повертає результат, який представляє собою рядок символів, введених користувачем.

>>>input()
1234
'1234'
>>>input()
Hello World!
'Hello World!'

Коли виконувана програма пропонує користувачеві що-небудь ввести, то користувач може не зрозуміти, що від нього хочуть. Треба якось повідомити, введення яких даних очікує програма. З цією метою функція input () може приймати необов'язковийаргумент-запрошення рядкового типу; при виконанні функції повідомлення буде з'являтися на екрані та інформувати людину про запитувані дані.

>>> input ("Введіть номер карти: ")
Введіть номер картки: 98765
'98765 '
>>> input('Input your name: ')
Input your name: Sasha
'Sasha'

З прикладів видно, що дані повертаються у вигляді рядка, навіть якщо було введено число. У більш ранніх версіях Python були дві вбудовані функції, що дозволяли отримувати дані з клавіатури: raw_input (), яка повертала в програму рядок та input (), яка повертала число. Починаючи з версії Python 3.0, якщо потрібно отримати число, то результат виконання функції input () змінюють за допомогою функцій int () або float ().

>>> input ('Введіть число: ')
Введіть число: 10
'10 '
>>> int(input ('Введіть число: '))
Введіть число: 10
10
>>> float(input ('Введіть число: '))
Введіть число: 10
10.0

Результат, що повертається функцією input (), зазвичай присвоюють певній змінній для подальшого використання в програмі.

>>> userName = input ('What is your name? ')
What is your name? Masha
>>> exp = input ('3*34=')
3*34=102
>>> exp = int(exp) + 21
>>> userName
'Masha'
>>>exp
123
  1. 3.Рядки як послідовності символів.

Рядки вже згадувалися про типи даних; розглянемо їх більш докладно.

Рядок (String) - це складний тип даних, що представляє собою послідовність символів.

Рядки в мові програмування Python можуть укладатися як в одиночні, так і подвійні лапки. Однак, початок і кінець рядка повинні обрамлятися однаковим типом лапок.

Існує спеціальна функція len (), яка дозволяє виміряти довжину рядка. Результатом виконання даної функції є число, що показує кількість символів в рядку.

Також для рядків існують операції конкатенації (+) і дублювання (*).

>>> len ('It is a long string')
19
>>> '!!!' + ' Hello World ' + '!!!'
'!!! Hello World !!!'
>>> '-' * 20
'--------------------'

У послідовностях важливий порядок символів, у кожного символу в рядку є унікальний порядковий номер - індекс. Можна звертатися до конкретного символу в рядку і отримувати його з допомогою оператора індексування, який представляє собою квадратні дужки з номером символу в них.

>>> 'morning, afternoon, night'[1]
'o'
>>> tday = 'morning, afternoon, night'
>>> tday[4]
'i'

У прикладі, вираз 'morning, afternoon, night'[1] призвів до витягнення другого символу. Справа в тому, що індексація починається не з одиниці, а з нуля. Тому, коли потрібно витягти перший символ, то оператор індексування повинен виглядати так: [0]. Також дозволено витягувати символи, починаючи відлік з кінця.

У цьому випадку відлік починається з -1 (останній символ).

>>> tday = 'ранок, день, ніч'
>>> tday[0]
'р'
>>> tday[-1]
'ч'
>>> tday[-3]
'н'

Очевидно, що зручніше працювати не з самими рядками, а зі змінними, які на них посилаються. Результат виконання виразу індексування можна присвоїти іншій змінній.

>>> a = "very big string"
>>> a[6]
'i'
>>> b = a[0]
>>> b
'v'

Можна витягати з рядка не один символ, а декілька, тобто отримувати зріз (підрядок). Оператор витягнення зрізу з рядка виглядає так: [X: Y]X - це індекс початку зрізу, а Y - його закінчення; причому символ з номером Y в зріз вже не входить. Якщо відсутній перший індекс, то зріз береться від початку до другого індексу; за відсутності другого індексу, зріз береться від першого індексу до кінця рядка.

>>> tday = 'morning, afternoon, night'
>>> tday[0:7]
'morning'
>>> tday[9:-7]
'afternoon'
>>> tday[-5:]
'night'
>>> tday[:3]
'mor'

Крім того, можна витягати символи не підряд, а через певну кількість символів. У такому випадку оператор індексування виглядає так: [X: Y: Z]Z - це крок, через який здійснюється вибір елементів.

>>> str4 = "Full Ball Fill Pack Ring"
>>> str4[::5]
'FBFPR'
>>> str4[0:15:2]
'Fl alFl '
  1. 4.Списки - змінювані послідовності

Списки (List) в мові програмування Python, як і рядки, є впорядкованими послідовностями. Однак, на відміну від рядків, списки складаються не з символів, а з різних об'єктів (значень, даних), і вкладаються не в лапки, а в квадратні дужки [ ]. Об'єкти відокремлюються один від одного за допомогою коми.

Списки можуть складатися з різних об'єктів: чисел, рядків і навіть інших списків. В останньому випадку, списки називають вкладеними.

[23, 656, -20, 67, -45]  # список з цілих чисел
[4.15, 5.93, 6.45, 9.3, 10.0, 11.6]  #список з дробових чисел
["Katy", "Sergiy", "Oleg", "Dasha"]  #список з рядків
["Київ", "Відень", 12, 148]  #змішаний список
[[0, 0, 0], [0, 0, 1], [0, 1, 0]]  # список, що складається зі списків

Як і над рядками, над списками можна виконувати операції з'єднання і повторення:

>>> [45, -12, 'april'] + [21, 48.5, 33]
[45, -12, 'april', 21, 48.5, 33]
>>> [[0,0], [0,1], [1,1]] * 2
[[0, 0], [0, 1], [1, 1], [0, 0], [ 0, 1], [1, 1]]

За аналогією з символами рядків, можна отримувати доступ до об'єктів списку за їх індексами, витягувати зрізи, вимірювати довжину списку:

>>> li = ['a','b','c','d','e','f']
>>> len(li)
6
>>> li[0]
'a'
>>> li[4]
'e'
>>> li[0:3]
['a', 'b', 'c']
>>> li[3:]
['d', 'e', 'f']

На відміну від рядків, списки - це змінювані послідовності. Якщо уявити рядок як об'єкт в пам'яті, то коли над ним виконуються операції конкатенації і повторення, то це рядок не змінюється, а в результаті операції створюється інший рядок в іншому місці пам'яті. У рядок не можна додати новий символ або видалити існуючий, не створивши при цьому нового рядка. Зі списком справа йде інакше. При виконанні операцій інші списки можуть не створювати, а змінюватися безпосередньо оригінал. Зі списків можна видаляти елементи, додавати нові. При цьому слід пам'ятати, багато залежить від того, як ви розпоряджаєтеся змінними. Бувають ситуації, коли списки таки копіюються. Наприклад, результат операції присвоюється іншій змінній.

Символ у рядку змінити не можна, а елемент списку - можна:

>>> mystr = 'abrakadabra'
>>> mylist = ['ab','ra','ka','da','bra']
>>> mystr[3] = '0'
Traceback (most recent call last):
File "<pyshell#11>", line 1, in <module> mystr[3] = '0'
TypeError: 'str' object does not support itemassignment
>>> mylist[1] = 'ro'
>>> mylist
['ab', 'ro', 'ka', 'da', 'bra']

Як бачимо, при спробі змінити один елемент рядка, з'являється повідомлення про помилку (виділено червоним).

У списку можна замінити цілий зріз:

>>> mylist[0:2] = [10,20]
>>> mylist
[10, 20, 'ka', 'da', 'bra']

Складніша ситуація:

>>> alist = mylist[0:2] + [100,'it is ',200] + mylist[2:] # новий список
>>> a2list = mylist # створюється друге посилання-змінна на перший список
>>> alist
[10, 20, 100, 'it is ', 200, 'ka', 'da', 'bra']
>>> a2list
[10, 20, 'ka', 'da', 'bra']
>>> a2list[0] = '!!!' # змінюємо список
>>> a2list
['!!!', 20, 'ka', 'da', 'bra']
>>> mylist # обидві змінні пов'язані з одним списком
['!!!', 20, 'ka', 'da', 'bra']

(Для ознайомлення з повним текстом статті необхідно залогінитись)