Урок 13. Списки

В Python виділяють наступні типи колекцій:

  • Список – це колекція, яка є впорядкованою та змінною. Дозволяє дублювати елементи.
  • Кортеж – це впорядкована та незмінна колекція. Дозволяє дублювати елементи.
  • Набір – це невпорядкована, незмінна та неіндексована колекція. Не дозволяє дублювати елементи.
  • Словник – збірка, яка є впорядкованою та змінною. Не дозволяє дублювати елементи.

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

Приклад з відео:

#Списки використовуються для зберігання кількох елементів в одній змінній
#Елементи списку впорядковані, змінні та допускають дублювання значень
#Елементи списку проіндексовано, перший елемент має індекс [0]
carList1 = ["Dodge", "Ford", "Toyota"]
print(carList1)
print(carList1[0])
print(carList1[1])
print(carList1[2])

Дублікати та довжина списку

В Python списки можуть містити дублікати значень, тобто однакові елементи можуть з’являтися кілька разів.

У Python для отримання довжини списку використовують вбудовану функцію len(). Ця функція повертає кількість елементів у списку.

Приклад з відео:

#Списки можуть містити елементи з однаковим значенням
#Функцію len можна використовувати для визначення довжини списку
varCarList1 = ["Dodge", "Ford", "Toyota", "Dodge", "Ford"]
print(varCarList1)
varCarList1Length = len(varCarList1)
print("Length of varCarList1 equals ", varCarList1Length)

Типи даних у списках

У Python списки можуть містити елементи будь-якого типу даних, і навіть комбінації різних типів. Це робить списки дуже гнучкими для зберігання та обробки різних видів даних.

#Елементи списку можуть мати будь-який тип даних
#Список може містити різні типи даних
varCarList1 = ["Dodge", "Ford", "Toyota"]
varNumbersList1 = [1,2,3,4,5]
varBoolList1 = [True, False]
varBusketList1 = [1, "Text", True, 27]
print(varCarList1)
print(varNumbersList1)
print(varBoolList1)
print(varBusketList1)

type та list

У Python для перевірки типу змінної, включаючи списки, використовують функцію type(). Якщо вам потрібно перевірити, чи є змінна списком, ви можете порівняти результат type() з типом list.

У Python конструктор list використовується для створення нових списків.

Приклад з відео:

#списки визначаються як об'єкти з типом даних "list"
varCarList1 = ["Dodge", "Ford", "Toyota"]
print(varCarList1)
print(type(varCarList1))
#Використання конструктора list() для створення списку
varCarList2 = list(("Dodge","Ford","Toyota", "BMW"))
print(varCarList2)

Доступ до елементів списку

В Python індексація є основним способом доступу до елементів списку. Індексація дозволяє отримувати окремі елементи списку за допомогою індекса, який вказує на позицію елемента в списку.

Приклад з відео:

#ви можете отримати доступ до елементів списку, 
#посилаючись на номер індексу
#перший елемент має індекс 0
varCarList1 = ["Dodge", "Ford", "Toyota", "BMW", "Nissan"]
print(varCarList1[0])
print(varCarList1[1])
print(varCarList1[2])
#негативна індексація
#-1 відноситься до останнього елемента, 
#-2 відноситься до передостаннього елемента
print(varCarList1[-1])
print(varCarList1[-2])
print(varCarList1[-3])
#діапазон індексів [1:4] [:3] [-3:-1]
print(varCarList1[1:4])
print(varCarList1[:3])
print(varCarList1[-3:-1])
print(varCarList1[2:])

Пошук і зміна елементів

У Python перевірити наявність елемента у списку можна за допомогою ключового слова in.

Приклад з відео:

# Щоб визначити, чи присутній певний елемент у списку
#використовуйте ключове слово 'in'
varCarList1 = ["Dodge", "Ford", "Toyota"]
checkForItem1 = "Dodge" in varCarList1
checkForAbsenceItem1 = "Dodge" not in varCarList1
print(varCarList1)
print(checkForItem1)
print(checkForAbsenceItem1)
#Щоб змінити значення певного елемента,
#посилайтеся на індекс
varCarList1[2] = "Honda"
print(varCarList1) #['Dodge', 'Ford', 'Honda']
varCarList1[0:2]=["Chrysler", "Lincoln"]
print(varCarList1) #['Chrysler', 'Lincoln', 'Honda']
varCarList1[0:2] = ["Dodge", "Ford", "Nissan"]
print(varCarList1) #['Dodge', 'Ford', 'Nissan', 'Honda']
varCarList1[0:2] = ["Chrysler"] #['Chrysler', 'Nissan', 'Honda']
print(varCarList1)

Метод insert

Метод insert у Python використовується для вставки елемента в конкретну позицію в списку. Цей метод дозволяє вказати індекс, на якому потрібно вставити новий елемент, а також сам елемент.

Приклад з відео:

#insert() метод вставляє елемент за вказаним індексом
varCarList1 = ["Dodge", "Ford", "Toyota"]
print(varCarList1)
varCarList1.insert(2, "Lincoln")
print(varCarList1)

Метод append

Метод append у Python використовується для додавання одного елемента в кінець списку. Це один з найбільш часто використовуваних методів для роботи зі списками, оскільки він дозволяє ефективно розширювати список, додаючи нові елементи.

Приклад з відео:

#Використання методу append() для додавання елемента
varCarList1 = ["Dodge", "Ford", "Toyota"]
print(varCarList1)
varCarList1.append("Chrysler")
print(varCarList1)

Метод extend

Метод extend у Python використовується для додавання всіх елементів з ітерабельного об’єкта (наприклад, списку, множини, рядка) в кінець існуючого списку. Це відрізняється від методу append, який додає ітерабельний об’єкт як один елемент.

Приклад з відео:

#Для додавання елементів з іншого ітерабельного об’єкта
#до поточного списку,
#використовуйте метод extend().
varCarList1 = ["Dodge", "Ford", "Toyota"]
varCarList2 = ["Chrysler", "Lincoln"]
print(varCarList1)
varCarList1.extend(varCarList2)
print(varCarList1)
print(varCarList2)

Метод remove

Метод remove у Python використовується для видалення першого входження вказаного елемента зі списку. Якщо елемент не існує у списку, метод викличе помилку ValueError. Метод remove працює тільки для видалення значень, а не за індексом.

Приклад з відео:

#Метод remove() видаляє перший вказаний елемент
varCarList1 = ["Dodge", "Ford", "Toyota", "Ford"]
print(varCarList1)
varCarList1.remove("Ford")
print(varCarList1)

Метод pop

Метод pop у Python використовується для видалення і повернення елемента зі списку за вказаним індексом. Якщо індекс не вказаний, метод pop видалить і поверне останній елемент списку. Метод pop змінює список на місці, і він може бути корисним, коли потрібно отримати видалений елемент, а не просто видалити його.

Приклад з відео:

#pop() метод видаляє вказаний індекс
varCarList1 = ["Dodge", "Ford", "Toyota"]
print(varCarList1)
varCarList1.pop(1)
print(varCarList1)
#Якщо не вказати індекс,
#Метод pop() видаляє останній елемент
varCarList1.pop()
print(varCarList1)
#Ключове слово del також видаляє вказаний індекс
varCarList2 = ["Chrysler", "Honda", "Lincoln"]
print(varCarList2)
del varCarList2[0]
print(varCarList2)
del varCarList2
#print(varCarList2)
# varCarList2 = ["Chrysler", "Honda", "Lincoln"]
# print(varCarList2)

Метод clear

Метод clear у Python використовується для видалення всіх елементів зі списку, очищаючи його. Це простий і ефективний спосіб скинути список до порожнього стану.

Приклад з відео:

#Метод clear() очищає список
#Список все ще залишається, але в ньому немає змісту
varCarList1 = ["Car1", "Car2", "Car3"]
print(varCarList1)
varCarList1.clear()
print(varCarList1)

Цикл for та списки

Цикл for у Python є потужним інструментом для ітерації через елементи списку. Використання циклу for дозволяє легко обробляти всі елементи списку один за одним. Це особливо корисно для виконання операцій над кожним елементом списку, таких як обчислення, модифікації або просто друк значень.

Приклад з відео:

#Ви можете пройтися черз елементи списку 
#за допомогою циклу for
varCarList1 = ["Dodge", "Ford", "Toyota"]

for car in varCarList1:
    print(car)

Також можливо комбінувати використання циклу for з функціями range() та len(), що по суті надає можливість звертатися до елементів списку за індексом.

Приклад з відео:

#Ви також можете переглядати елементи списку, посилаючись
#до відповідного номера індексу за допомогою функцій range() і len().
varCarList1 = ["Dodge", "Ford", "Toyota"]
for i in range(len(varCarList1)):
    print(varCarList1[i])

Цикл while та списки

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

Приклад з відео:

#Ви можете пройти через елементи списку за допомогою циклу while
#Використовуйте функцію len(), щоб визначити довжину списку,
#тоді почніть з 0 і пройдіть по елементам списку,
#посилаючись на їхні індекси
varCarList1 = ["Dodge", "Ford", "Toyota"]
counter = 0
while counter<len(varCarList1):
    print(varCarList1[counter])
    counter = counter+1

Спрощений синтаксис

Існує спрощений синтаксис, який можна використовувати при створенні спсиків. Приклад з відео:

#newlist = [вираз для елемента в iterable if condition == True]
#Поверненим значенням є новий список, який залишає старий список без змін.
varCarList1 = ["Dodge", "Ford", "Toyota"]
varCarList2 = []
for car in varCarList1:
    varCarList2.append(car)    
print("varCarList 1 {}".format(varCarList1))
print("varCarList 2 {}".format(varCarList2))
varCarList3 = [car for car in varCarList1]
print("varCarList 3 {}".format(varCarList3))
#print elements of the list with comprehension syntax
[print(car) for car in varCarList3]

Метод sort

Метод sort у Python використовується для сортування елементів списку в порядку зростання або спадання. Метод sort змінює порядок елементів у списку на місці, тобто він не повертає нового списку, а змінює оригінальний.

Приклади з відео:

#Об’єкти List мають метод sort(), який сортує
#список у алфавітно-цифровому порядку, за замовчуванням
varCarList1 = ["Dodge", "Ford", "Toyota", "BMW", "Honda"]
varCarList1.sort()
print(varCarList1)
numList1 = [5,7,3,9,1]
numList1.sort()
print(numList1)
#Щоб відсортувати за спаданням, 
#використовуйте аргумент ключового слова reverse = True
varCarList1 = ["Dodge","Ford","Toyota","BMW","Honda"]
varCarList1.sort(reverse=True)
print(varCarList1)
numList1 = [1,3,5,7,9]
numList1.sort(reverse=True)
print(numList1)
#За замовчуванням метод sort() чутливий до регістру, що призводить до
#того, що усі великі літери сортуються перед малими
itemsList1= ["notebook", "Pencil", "flash drive", "Scissors"]
itemsList1.sort()
print(itemsList1)

itemsList1.sort(key=str.lower)
print(itemsList1)
#Метод reverse() змінює поточний порядок сортування
#елементів
itemsList1.reverse()
print(itemsList1)

Метод copy

Метод copy у Python використовується для створення поверхневої копії списку. Це означає, що метод copy створює новий список, який має ті ж елементи, що й оригінальний, але сам список і його елементи в пам’яті є окремими. Це корисно, коли потрібно створити копію списку, щоб уникнути змін в оригінальному списку під час маніпуляцій з його копією.

Приклад з відео:

#Ви не можете скопіювати список, просто ввівши list2 = list1,
#бо: list2 буде лише посиланням на list1, і
#зміни, зроблені в списку1, автоматично також будуть внесені в список2.
#використовуйте вбудований метод copy()
varCarList1=["Dodge", "Ford", "Toyota"]
varCarList2=varCarList1.copy()
print(varCarList1)
print(varCarList2)
varCarList1.append("Honda")
varCarList2.append("BMW")
print(varCarList1)
print(varCarList2)

varCarList3=list(varCarList1)
print(varCarList3)
varCarList3.append("Alfa Romeo")
print(varCarList3)

Об’єднання списків

Існує кілька варіантів об’єднання списків, зокрем можна використати оператор + чи метод extend або комбінацію циклу for та методу append.

Приклад з відео:

#використовуйте оператор + для об'єнання списків
varCarList1=["Dodge", "Ford", "Toyota"]
varCarList2=["Honda","BMW"]
varCarList3=["Alfa Romeo", "Chevrolet"]
varCarList4 = varCarList1+varCarList2
print(varCarList4)
#метод extend
varCarList1.extend(varCarList3)
print(varCarList1)
#цикл for для додавання елементів
for car in varCarList3:
    varCarList2.append(car)
    
print(varCarList2)
Урок 13. Списки у Python

В цьому відео поговоримо про:
00:00:19 Python Collections – Колекції
00:03:01 Python Lists – Списки
00:04:52 Duplicates and List Length – Дуплікати і розмір (довжина) списку
00:07:07 List Data Types – Типи даних у списках
00:09:06 функція type and конструктор list
00:11:21 Indexing (access list items) – Індекси елементів списку
00:19:56 Check for and change – Перевірка і зміна
00:29:02 Insert items – Введення елементів
00:30:44 Append items – Додавання елементів
00:32:21 Extend list – Розширення списку
00:34:56 Remove item – Видалення елементу
00:36:51 Remove specified index – Видалення елементу по індексу
00:44:17 Clear method – Метод очистити
00:45:46 For Loop and List – Цикл For і список
00:48:14 For Loop with index numbers – Цикл For з номерами індексів
00:51:59 While Loop and List – Цикл while і список
00:54:35 List Comprehension – Спрощення списку
00:58:59 Sort ascending – Сортування за зростанням
01:00:38 Sort descending – Сортування за зменшенням
01:02:21 Case Insensitive Sort – Сортування нечутливе до регістру
01:06:24 Copy List – Копіювання списку
01:10:50 Join Lists – Об’єднання списку

Урок 12. Функції у Python

У Python функції є засобом організації коду, який дозволяє групувати і повторно використовувати блоки коду для виконання певних завдань. Функції використовуються для виконання конкретних операцій або обчислень при виклику з інших частин програми.

Приклад з відео:

#Функція — це блок коду, який виконується лише тоді, коли його викликають.
#Ви можете передавати дані, відомі як параметри, у функцію.
#Функція може повертати дані як результат.
#У Python функція визначається за допомогою ключового слова def
def greeting_function():
    print("Hello buddy!")
    
greeting_function()

Аргументи функції

Аргументи функції у Python — це значення, які передаються у функцію під час її виклику. Ці значення використовуються в тілі функції для виконання певних операцій або обчислень. Вони дозволяють функціям приймати зовнішні дані і оперувати ними всередині свого тіла.

Приклад з відео:

#Інформацію можна передати у функції як аргументи.
#Аргументи вказуються після імені функції,
#в дужках.
#Ви можете додати скільки завгодно аргументів,
#просто розділіть їх комою.
def greeting_function(nameVar):
    print("Hello",nameVar)
    
greeting_function("Walter")
greeting_function("Skyler")

Відмінність між параметрами та аргументами

Параметри функції — це іменовані змінні, оголошені в заголовку функції, які визначають дані, які функція очікує отримати при своєму виклику. Вони вказуються в круглих дужках після імені функції і визначають, які дані можна передати у функцію.

Аргументи функції — це конкретні значення, які передаються у функцію під час її виклику. Це дані або значення, які ви передаєте у функцію для обробки або виконання операцій, що вона виконує.

Приклад з відео:

#Параметр — це змінна, вказана в дужках
#у визначенні функції.
#Аргумент — це значення, яке надсилається функції
#коли її викликають.
def add_two_numbers(num1, num2):
    print(num1+num2)
    
add_two_numbers(5,10)

Кількість аргументів

У Python функції можуть приймати різну кількість аргументів залежно від потреб програми. Це дозволяє створювати більш гнучкі та універсальні функції.

Приклад з відео:

#функцію потрібно викликати з правильною кількістю аргументів.
#Це означає, що якщо ваша функція очікує 2 аргументи,
#ви повинні викликати функцію з 2 аргументами,
#не більше і не менше.
def greeting_function(nameVar, surnameVar):
    print("Hello", nameVar, surnameVar)
    
greeting_function("Walter", "White")

*args

У Python параметр *args використовується для передачі довільної кількості позиційних аргументів у функцію. Цей параметр дозволяє функції приймати будь-яку кількість аргументів, які передаються у вигляді кортежу.

Приклад з відео:

#Якщо ви не знаєте, скільки аргументів буде передано
#у свою функцію додайте * перед назвою параметра
#у визначенні функції
#Таким чином функція отримає кортеж аргументів,
#і може отримати доступ до елементів відповідно
def greeting_function(*namesVar):
    print("Hello {}, {}".format(namesVar[0], namesVar[1]))
    
greeting_function("Walter", "Skyler")

Синтаксис ключ-значення

У Python синтаксис ключ-значення при використанні аргументів функцій використовується для передачі іменованих аргументів у вигляді пари “ключ=значення”. Цей підхід дозволяє передавати аргументи у будь-якому порядку, не обов’язково використовувати порядок, вказаний у визначенні функції, і також задавати значення за замовчуванням для параметрів.

Приклад з відео:

#Ви також можете надсилати аргументи 
#за допомогою синтаксису ключ = значення.
def greeting_function(name1, name2, name3):
    print("Hello {}, {}, {}!".format(name1, name2, name3))
    
greeting_function(name3="Walter", name2="Skyler", name1="Hank")

**kwargs

У Python параметр **kwargs використовується для передачі довільної кількості іменованих (ключованих) аргументів у функцію. Цей параметр дозволяє функції приймати будь-яку кількість іменованих аргументів, які не є обов’язковими, і збирає їх у словник.

Приклад з відео:

#Якщо ви не знаєте, скільки аргументів ключових слів
#буде передано у вашу функцію, додайте
#дві зірочки: ** перед назвою параметра при
#визначенні функції.
#Таким чином функція отримає словник аргументів,
#і може отримати доступ до елементів відповідно
def greeting_function(**names):
    print("Hello {}, {}!".format(names["name1"], names["name2"]))
    
greeting_function(name1 = "Skyler", name2 = "Walter")

Значення параметру за помовчанням

У Python значення параметру за замовчуванням використовується для встановлення значення параметра, яке буде використовуватися, якщо при виклику функції або при створенні об’єкта параметр не передається. Це дає можливість функціям мати значення аргументів, які вони використовують за замовчуванням, що спрощує їхнє використання в коді.

Приклад з відео:

#Якщо ми викликаємо функцію без аргументів,
#використовуються значення за умовчанням
def greeting_function(name="James"):
    print("Hello {}!".format(name))
    
greeting_function("Walter")
greeting_function()

Використання return та pass

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

У Python ключове слово pass використовується як пустий оператор. Воно не робить нічого ігноруючи його наявність. pass зазвичай використовується там, де синтаксис мови вимагає наявності коду (наприклад, у визначенні функцій, класів або умовних конструкціях), але жодних дій виконувати не потрібно.

Приклад з відео:

#Щоб дозволити функції повертати значення, 
#використовуйте оператор return
def multiply_by_itself(num1):
    return num1*num1

result1 = multiply_by_itself(3)
print(result1)
result2 = multiply_by_itself(5)
print(result2)
result3 = multiply_by_itself(7)
print(result3)

# визначення функції не можуть бути порожніми, але якщо ви
#з якихось причин маєте визначення функції без вмісту,
#введіть оператор pass, щоб уникнути помилки.
def greeting_function():
    pass

Рекурсія

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

Приклад з відео:

#Рекурсія — поширена математична та програмна концепція.
#Це означає, що функція викликає сама себе.
#Це має перевагу, оскільки ви можете перерахувати дані
#для досягнення потрібного результату.
def recursion_function(num1):
    if(num1<10):
        result=0
        print(num1)
        print(result)
        result = num1 + recursion_function(num1+1)
        print(result)
    else:
        result=10
        print("Else statement works.")
    return result

recursion_function(1)

Лямбда-функції

У Python лямбда-функція – це коротка функція, яка може мати лише один вираз. Вона створюється за допомогою ключового слова lambda, яке дозволяє швидко оголосити функцію без необхідності використання імені через звичайний визначення def.

Приклад з відео:

#Лямбда-функція — це невелика анонімна функція.
#Лямбда-функція може приймати будь-яку кількість аргументів,
#але може мати лише один вираз.
#синтаксис
#лямбда-аргументи : вираз
#lambda arguments : expression
plusFive = lambda num1 : num1+5
print(plusFive(10))

multiplyTwoNums = lambda num1, num2 : num1*num2
print(multiplyTwoNums(5,7))

sumOfThreeNums = lambda num1, num2, num3 : num1+num2+num3
print(sumOfThreeNums(5,7,9))

Ще один приклад використання лямбда-функції:

#Потужність лямбда краще проявляється, 
#коли ви використовуєте їх як
#анонімну функція всередині іншої функції.
def my_function(num1):
    return lambda unknownNum : unknownNum * num1

doubleNum = my_function(2)
print("Doubled results")
print(doubleNum(1))
print(doubleNum(5))
print(doubleNum(10))

numByFive = my_function(5)
print("Multiplied by five results")
print(numByFive(5))
print(numByFive(10))
Урок 12. Функції у Python

В цьому відео поговоримо про:
00:19 Functions – Функції
02:36 Arguments – Аргументи
04:10 Parameters and arguments – Параметри і аргументи
06:26 Number of arguments – Кількість аргументів
07:51 *args – якщо не знаємо скільки аргументів
11:47 Keyword arguments – Синтаксис ключ-значення
17:07 **kwargs – якщо невідомо скільки агрументів, але можливе використання ключових слів
22:03 Default parameter value – Параметр за помовчанням
24:11 Return values and pass statement – Повернення значень та pass
29:34 Recursion – Рекурсія
42:05 Lambda functions – Лямбда функції

Приклади на Github

Урок 11. Цикл for

Цикл for в Python — це конструкція, яка дозволяє проходити по елементам послідовності, таким як списки, кортежі, рядки, словники або інші ітерабельні об’єкти. Це дуже корисно для виконання одних і тих же дій для кожного елемента в послідовності без необхідності використовувати індекси вручну.

Приклад з відео:

#Цикл for використовується для повторення послідовності
#За допомогою циклу for ми можемо виконати набір операторів,
#один раз для кожного елемента в списку, кортежі, наборі тощо.
carList1 = ["Dodge", "Ford", "Toyota"]
for item in carList1:
    print(item)

Рядки також є ітерабельними об’єктами, а отже їх можна пропустити через цикл.

Приклад з відео:

#strings є ітерабельними об'єктами,
#вони містять послідовність символів
stringVar1 = "Who is the one who knocks?"
for letter in stringVar1:
    print(letter)

Break у циклі for

В циклі for використання break аналогічно до циклу while.

Приклад з відео:

#За допомогою оператора break ми можемо зупинити цикл
#перед тим, як він перегляне всі елементи
carList1 = ["Dodge", "Ford", "Toyota", "Honda", "Chrysler"]
for item in carList1:
    print(item)
    if item=="Toyota":
        break

Continue у циклі for

В циклі for використання continue аналогічно до циклу while.

Приклад з відео:

#За допомогою оператора continue ми можемо зупинити поточну ітерацію
#з циклу та перейти до наступної
carList1 = ["Dodge", "Ford", "Toyota"]
for car in carList1:
    if car=="Ford":
        continue
    print(car)

Range у циклі for

Функція range в Python використовується для створення послідовностей чисел. Вона часто використовується в циклах for для ітерування через певний діапазон чисел. Функція range повертає спеціальний об’єкт типу range, який є ітерабельним об’єктом, що генерує числа в заданому діапазоні.

Приклад з відео:

#Щоб виконати певний код задану кількість разів,
#ми можемо використовувати функцію range(),
#Функція range() повертає послідовність чисел,
#починаючи з 0 за замовчуванням і збільшуючи на 1 (за замовчуванням),
#і закінчується вказаним числом.
print("Range sample 1")
for numberVar in range(11):
    print(numberVar)
print("Range sample 2")    
for numberVar in range(3, 11):
    print(numberVar)
print("Range sample 3")    
for numberVar in range(1,22,2):
    print(numberVar)

Else у циклі for

Цикл for може мати блок else, який виконується після завершення циклу, але тільки якщо цикл завершився без переривання. Це може бути корисно, якщо ви хочете виконати певний код після того, як цикл пройшов через всі елементи послідовності.

Приклад з відео:

#Ключове слово else в циклі for визначає блок коду
#виконується після завершення циклу
for item in range(11):
    print(item)
    
else:
    print("Loop has finished.")

Вкладені цикли for

Вкладені цикли for в Python дозволяють ітеруватися через кілька послідовностей одночасно. Це може бути корисно для роботи з багатовимірними структурами даних, такими як матриці або таблиці.

Приклад з відео:

#Вкладений цикл — це цикл усередині циклу.
#"Внутрішній цикл" буде виконано один раз для кожної ітерації
#зовнішнього циклу
carList1 = ["Dodge","Ford","Toyota"]
carList2 = ["Charger", "Focus", "Camry"]
for car1 in carList1:
    for car2 in carList2:
        print(car1, car2)
Урок 11. Цикл for

В цьому відео поговоримо про:
00:41 Цикл For
05:45 Break
07:54 Continue
09:49 Range
12:43 Else
13:41 Nested Loops

Приклади на Github

Урок 10. Цикл While

while в Python має важливу роль у створенні циклів, які виконуються, поки задана умова залишається істинною. Ось основні риси та особливості синтаксису циклу while:

  • Умова: Перш за все, перед while ставиться умова. Поки ця умова істинна (True), тіло циклу while виконується.
  • Тіло циклу: Це блок коду, який виконується доти, доки умова while залишається істинною. У тілі циклу можуть бути будь-які інструкції Python.
  • Ітерація: Після виконання тіла циклу Python повертається до початку while і перевіряє умову ще раз. Цей процес триває до тих пір, поки умова не стане хибною (False).
  • Ризик безкінечного циклу: Важливо бути обережним з умовою, щоб уникнути безкінечного циклу. Якщо умова завжди залишається істинною, цикл буде виконуватися нескінченно.

Приклад з відео:

#За допомогою циклу while ми можемо виконати набір операторів
#поки умова є істинною
iterationVar = 1
while iterationVar <= 5:
    print("iterationVar equals ", iterationVar)
    iterationVar+=1

print("Out of cycle: iterationVar equals ", iterationVar) 

Break у циклі While

У Python оператор break використовується для припинення виконання найближчого об’єкта циклу (зокрема і while), в якому він знаходиться. Ось основні аспекти використання оператора break:

  • Ціль: break дозволяє негайно припинити виконання циклу, в якому він використовується. Після виконання break виконання програми переходить до наступної інструкції після циклу.
  • Де використовується: break часто використовується для зупинки циклу, коли досягнуто певної умови, і додаткові ітерації не потрібні. Наприклад, це може стати потрібним, коли ви шукаєте певний елемент у списку або виконуєте обробку даних до досягнення певної умови.

Приклад з відео:

#За допомогою оператора break ми можемо зупинити
#цикл, навіть якщо умова while виконується
iterationVar = 1
while iterationVar <= 5:
    print("iterationVar equals ", iterationVar)
    if iterationVar == 3:
        break
    iterationVar+=1

Continue у циклі While

У Python оператор continue використовується для переходу до наступної ітерації циклу без виконання решти коду в тілі циклу для поточної ітерації. Ось основні аспекти використання оператора continue:

  • Ціль: continue дозволяє перейти до наступної ітерації циклу, ігноруючи будь-які наступні інструкції у тілі циклу для поточної ітерації.
  • Де використовується: continue зазвичай використовується, коли потрібно пропустити певні ітерації циклу через умови, які не потребують подальшого виконання коду циклу на поточній ітерації.

Приклад з відео:

#За допомогою оператора continue ми можемо 
#зупинити поточну ітерацію та перейти на наступну
iterationVar = 1
while iterationVar <= 5:
    if iterationVar == 3:
        iterationVar+=1
        continue
    print("iterationVar equals ", iterationVar)
    iterationVar+=1

Else у циклі While

В Python можна використовувати блок else з оператором while.

Приклад з відео:

#За допомогою оператора else ми можемо 
#запустити блок коду один раз, коли умова більше не виконується
iterationVar = 1
while iterationVar<=5:
    print("iterationVar equals ", iterationVar)
    iterationVar+=1
    
else:
    print("Out of the loop: iterationVar equals ", iterationVar)

Завдання

Приклад завдання з відео.

#---Гра «Вгадай число».
#---Створіть гру, яка дає гравцеві 3 спроби вгадати число
#---від 1 до 10
#---Якщо гравець вгадає правильно, він виграє
#---Інакше комп'ютер виграє

#---подумайте про псевдокод
#---створити числову змінну
#---створити змінну counterOfAttempts
#---створити змінну припущення
#---коротко поясніть правила гри
#---створити цикл while і використовувати counterOfAttempts як умову
#---отримати значення від гравця у змінній припущення
#---збільшити лічильник
#---перевірити правильність припущення.
#---якщо припущення неправильне, напишіть блок else
#---повідомити, що припущення невірне та скільки спроб залишилося

Варіант розв’язання:

#Гра «Вгадай число».
#Створіть гру, яка дає гравцеві 3 спроби вгадати число
#від 1 до 10
#Якщо гравець вгадає правильно, він виграє
#Інакше комп'ютер виграє
import random
#подумайте про псевдокод
#створити числову змінну
numberToGuess = random.randrange(1,11)
#create counterOfAttempts змінна
counterOfAttempts = 0
#створити змінну припущення
guessOfPlayer=0
#коротко поясніть правила гри
print("Try to guess a number from 1 to 10.")
print("You have ", 3-counterOfAttempts," attempts.")

#створити цикл while і використовувати counterOfAttempts як умову
while counterOfAttempts<3:
    #отримати значення від гравця у змінній припущення
    guessOfPlayer = int(input("Guess a number from 1 to 10. "))
    #збільшити лічильник
    counterOfAttempts+=1
    #перевірити правильність припущення.
    if guessOfPlayer==numberToGuess:
        print("You have won. Congratulations.")
        print("The number was {}.".format(numberToGuess))
        break
    #якщо припущення неправильне, напишіть блок else
    else:
        #повідомити, що здогадка невірна і скільки спроб залишилося
        print("Wrong. You have ",3-counterOfAttempts," left.")
        if counterOfAttempts==3:
            print("You are out of attempts.")
            print("You didn't guess correctly.")
            print("The number was {}.".format(numberToGuess))
Урок 10. Цикл While

В цьому відео поговоримо про:
00:34 Цикл While
06:31 Break
09:40 Continue
18:15 Else

Приклади на Github

Урок 9. Конструкція if

В Python if — це ключове слово, яке використовується для створення умовних конструкцій. В основному, if дозволяє виконувати певний блок коду тільки тоді, коли задана умова є істинною.

Приклад з відео:

#Python оператори порівняння і логічні умови
#наприклад, ==, !=, >, <,<=,>=
#часто використовуються з конструкцією if
varNum1 = 75
varNum2 = 85
#Використовуємо if для визначення
#чи є змінна varNum1 меншою ніж змінна varNum2
if varNum1<varNum2:
    print("varNum1 is less than varNum2")

Elif

elif в Python є скороченням від “else if” і використовується для перевірки додаткових умов після початкової умови, заданої в if. Це дозволяє обробляти кілька можливих варіантів у рамках одного блоку умовних операторів.

Ось як це працює в контексті умовних конструкцій:

  • if перевіряє першу умову. Якщо вона є істинною (True), виконується відповідний блок коду.
  • Якщо умова в if не є істинною, Python перевіряє умову в elif, якщо вона є.
  • Можна мати кілька elif блоків, кожен з яких перевіряє свою умову.
  • Якщо жодна з умов в if або elif не є істинною, виконується блок else, якщо він присутній.

Приклад з відео:

#elif надає можливість додати умову для перевірки
varNum1 = 85
varNum2 = 85
if varNum1<varNum2:
    print("varNum1 is less than varNum2")
#Використовуємо elif для перевірки
#чи дорівнює значення змінної varNum1 зміній varNum2
elif varNum1==varNum2:
    print("varNum1 equals varNum2")

Else

else в Python використовується як частина умовних конструкцій, зокрема після if і elif. Воно задає блок коду, який буде виконано, коли всі попередні умови не були істинними.

Приклад з відео:

#else спрацьовує якщо всі інші умови перевірки не спрацювали
varNum1=105
varNum2=95
if varNum1<varNum2:
    print("varNum1 is less than varNum2")
    
elif varNum1==varNum2:
    print("varNum1 equals varNum2")
#Використовуємо else для виявлення ситуацій, коли
#змінна varNum1 більша за varNum2
#else спрацює тільки, якщо попередні перевірки не виконаються
else:
    print("varNum1 is greater than varNum2")

Скорочений синтаксис if

Існує так званий скорочений синтаксис написання if, який може бути задіяний, якщо всередині блоку лише один рядок коду для виконання.

Приклад з відео:

#якщо у вас є тільки один рядок коду для виконання, 
#то ви можете записати все одним рядком
varNum1=85
varNum2=95
print("shorthand versions")
if varNum1<varNum2: print("varNum1 is less than varNum2")
#те саме стосовно if else, але першим йде рядок виконання
x=95
y=85
print("y greater") if y>x else print("y is not greater")
#це також працює для множинних умов
print("y") if y>x else print("equals") if y==x else print("x")

#повна версія
print("full version")
if y>x:
    print("y")
    
else:
    if y==x:
        print("equals")
    else:
        print("x")

And в if

Логічний оператор and часто використовується при формуванні умов у блоках if.

Приклад з відео:

#and є логічним оператором, що використовується
#для комбінування умов
#і видає true якщо всі умови є true
purchaseAmount1 = 5001
brandName = "New Balance"
if purchaseAmount1>5000 and brandName == "Nike":
    print("Your discount is 25%")
    
elif purchaseAmount1>5000:
    print("Your discount is 10%")
    
else:
    print("Your discount is 5%")

Or в if

Логічний оператор or також часто використовується при формуванні умов у блоках if.

Приклад з відео:

#or такоє є логічним оператором, що використовується
#для комбінування умов
#і видає false якщо всі умови є false
purchaseAmount1 = 4501
brandName = "New Balance"
if purchaseAmount1>5000 or brandName == "Nike":
    print("Your discount is 25%")
    
elif purchaseAmount1>4500:
    print("Your discount is 10%")
    
else:
    print("Your discount is 5%")

Not в if

Ключове слово not надає можливість отримати протилежний результат певної умови, що може бути корисним в певних випадках і допомогти в реалізації блоку if.

Приклад з відео:

#not є логічним оператором, що 
# що інвертує результат умови
varNum1 = 5
varNum2 = 10
print(not varNum1>varNum2)
if not varNum1>varNum2:
    print("varNum1 is not greater than varNum2")

Вкладені if

Блоки if можуть знаходитися всередині інших блоків if.

Приклад з відео:

#Можна мати блоки if всередині інших блоків if, 
#це є вкладені if
varNum1 = 7
if varNum1>5:
    pass

if varNum1>10:
    print("varNum1 is greater than 10")
    if varNum1>20:
        print("varNum1 is greater than 20")
        if varNum1>30:
            print("varNum1 is greater than 30")
        else:
            print("varNum1 is less than or equal to 30")
            
else:
    print("varNum1 is less or equal to ten")

Switch case

В Python 3.10 і пізніших версіях додано нову конструкцію match, яка є аналогом switch case.

Приклад з відео:

#Починаючи з версії 3.10 і вище, Python впровадив 
#switch case

dayOfTheWeek = 5
match dayOfTheWeek:
    case 1:
        print("Monday")
    case 2:
        print("Tuesday")
    case 3:
        print("Wednesday")
    case 4:
        print("Thursday")
    case 5:
        print("Friday")
    case 6:
        print("Saturday")
    case 7:
        print("Sunday")
Урок 9. Конструкція if

В цьому відео поговоримо про:
01:14 If statement
04:15 Elif keyword
07:21 Else keyword
13:17 Short hand syntax
27:31 And
33:52 Or
42:06 Not
45:50 Nested if
52:28 Switch case