Конспект лекцій про мову програмування Python. Крок 3.

Про матеріал
Третій крок програмування на Python. Опубліковано уроки з 41 по 60 з теорією і практичними завданнями.
Перегляд файлу

 

Урок № 41. Логічне І.
Оператор and повертає True(правду) тільки тоді, коли оба операнди рівні True.

Наприклад, ця програма

a = 10

print(a > 1 and a < 20)

виведе на екран
True

А ця

a = 10
print(a > 1 and a < 10)

виведе

False

Порядок операндов для and важливий. Першим перевіряється лівий операнд і тільки в тому випадку, якщо він істинний, буде перевірений правий операнд. Оскільки якщо лівий операнд хибний, то і весь результат буде хибним, тобто правий операнд перевіряє немає ніякої необхідності.

 

Попробуйте запустити ось такий код

a = 1

if a > 1 and b == 2:

    print('Добре')

Використання змінної b не викликає помилки, тому що до перевірки правого операнда справа навіть не дійде.

 

А ось такий код

a = 1

if a > 0 and b == 2:

    print('Добре')

закінчиться помилкою, тому що лівий операнд істинний і Пітон намагається перевірити правий операнд.

Урок № 42.Тест.

Відмітьте висловлювання, які повернуть True, якщо а=6.

a > 1 and a < 10

a > 1 and a < 6

a > 1 and a <= 6

a > 1 and a <= 3

 

Урок № 43. Логічне АБО.

Оператор orповертає True(правду) тоді, коли хоча б один із операндів рівний True.

Ось ця програма

b = 5

print(b > 1 or b < 3)

виведе на екран

True

А ця

b = 5

print(b > 10 or b < 5)

виведе на екран

False

Якщо обидва операнда рівні True результатом також будеTrue

 

Як і в разі з  and, порядок операндів для оператора or важливий, але умови для перевірки правого операнда відрізняються.

 

Першим перевіряється лівий операнд і тільки в тому випадку, якщо він хибний, буде перевірений правий операнд. Оскільки якщо лівий операнд істинний, то і весь результат буде істинним, тобто правильний операнд перевіряти немає ніякої необхідності.

Цей код не викликає помилку, тому що до перевірки правого операнда справа навіть не дійде.

a = 1

if a > 0 or b == 2:

    print('Добре')

А ось такий код

a = 1

if a != 1 or b == 2:

    print('Добре')

закінчиться з помилкою, тому що лівий операнд хибний і Пітон спробує перевірити правий операнд.

Урок № 44.Тест

Відмітьте висловлювання, які повернуть True, якщо b=3.

b > 1 or b < 1

b > 10 or b < 1

b > 10 or b < 1 or b == 3

b == 5 or b == 10

 

Програма з логічними операторами  5

Напишіть програму, яка описує одним словом температуру, введену користувачем. Програма повинна зберегти введену температуру в змінну t.

Якщо число менше −4 , програма повинна вивести «морозно».

Якщо число менше 0 і більше рівно 4 , програма повинна вивести на екран «холодно».

Якщо число більше рівно 0 і менше 12  — «прохолодно».

Якщо більше рівно 12 і менше 27  — «тепло».

Якщо більше або рівно 27  — «жарко».

При написанні програми використовуйте оператори if, elif, else, and а також оператори порівняння.

t = int(input("Введіть температуру: "))

if t < -4:

    print("морозно")

elif t < 0 and t >= -4:

    print("Холодно")

elif t >= 0 and t < 12:

    print("прохолодно")

elif t >= 12 and t < 27:

    print("тепло")

else:

    print("жарко")

 

Урок № 45. Логічне представлення данных.

До рядків і чисел також можуть бути застосовані поняття істини і хибності. Істиною Пітон вважає будь-яке число, відмінне від нуля. Тобто 0 — це хиба, а будь-яке інше число — істина.

З рядками трохи інша історія. Будь-який рядок, в якому є хоча б один символ, Пітон вважає істиною. А ось порожний рядок для нього буде хибним.

Спробуйте виповнити ось такий код, змінюючи значення змінних a і z

a = 0

if a != 0:

    print('Добре')

z = ''

if z != '':

    print('Непогано')

 

if z != '' and a != 0:

    print('Дуже добре  :-)')

Пізніше попробуйте виконати ось цей код, а також змінити змінні

a = 0

if a:

    print('Добре')

z = ''

if z:

    print('Непогано')

if z and a:

    print('Дуже добре :-)')

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

 

Урок №46. Логічне заперечення.

У Пітоні є ще один логічний оператор — not. Він перетворює правду в хиба, а хибу — в правду.

Наприклад, ця програма виводить на екран True

a = 10

print(a == 10)

Якщо ж перед умовою поставити оператора not — на екрані буде введено False

 

a = 10

print(not a == 10)

До речі, точно такий же результат ми отримаємо, якщо напишем умову трохи по-іншому — без оператора not

a = 10

print(a != 10)

Звичайно, оператор not можна використовувати і зі складними логічними висловлюваннями. Наприклад, ця програма виводить на екран False , негативне істинне висловлювання  всередині дужок.

a = 10

print(not (a > 1 and a < 20))

Цю програму теж можна переписати по‑іншому

 

a = 10

print(a <= 1 or a >= 20)

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

anything = input("Напишіть що-небудь")

if not anything:

    print('Так не можна. Треба що-небудь написати!')

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

Урок № 58. Тест.

Відмітьте вичловлювання, які повернуть True(правду), якщо z=3.

not (z > 1 or z < 1)

z > 10 or z < 1

z > 10 or z < 1 or not z == 3

z == 1 or not z == 4

 

Урок № 47. Пріоритети логічних операторів.

Як і у арифметичних, у логічних операторів є свій пріоритет у виконанні. Найвищий пріоритет у дужок. Після йдуть оператори порівняння, за ними оператор not, оператор and і оператор or.

Якщо запустити такий код

x = 0

y = 2

result = x > 1 and x == 10 or y < 5

print(result)

 

result = x > 1 and (x == 10 or y < 5)

print(result)

то в першому висловлюванні спочатку буде обчислений результат роботи оператора порівняння  > і так як цей результат буде хибним, то і результат роботи оператора and буде хибним. Цей хибний результат стане іншим операндом для оператора or. Потім буде обчислений результат роботи оператора зрівняння <. Виходить, що лівий операнд для оператора or — хиба, а правий — правда. В підсумку результатом всього висловлювання буде істина.

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

Урок № 48. Тест.

Выдмітьте висловлювання, які повернуть True(правду), якщо змінна а= 1, а змінна  b= 2.

 

a == 1 and not b == 2 or a > 0

 

a == 1 and not (b == 1 or a == 2)

 

not a or b == 1 and a == 2

 

not a and b

Урок № 49. Перепустка оператора.

Оператор pass — це оператор, який нічого не робить.

Він може використовуватися як заглушка в технічних програмах, де це синтаксично необхідно.

Наприклад, за правилами Пітона , не можна написати так:

foo = input("Введить що-небудь")

if foo:

else:

    print(foo)

Така програма завершиться з помилкою:

IndentationError: expected an indented block

Все тому, що оператор if вимагає обов'язкового «тіла», тобто коду, який буде виконано при виконанні  if.

Використовуючи оператор pass, можна написати так:

foo = input("Введіть  що-небудь")

if foo:

    pass

else:

    print(foo)

Тобто, ми пишем по правилах мови, але в то же час нічого не робимо при виконні if.

Оператори if, else і  elif не всі оператори, які вимагають обов'язкового «тіла». Пізніше ви ознайомитеся з такими операторами, а поки просто запам'ятайте, що існує оператор pass, який може виявитися корисним у процесі програмування на  Пітоні .

Наприклад, спочатку ви можете «накинути» скелет програми:

t = input("Температура тіла:")

t = float(t)

if t == 36.6:

    pass

else:

    print("Викликайте лікаря!")

А вже потім, подумавши над тим, що робити, якщо все в порядку,  написати:

t = input("Температура тіла:")

t = float(t)

if t == 36.6:

    print("Тіштеся, що все добре!")

else:

    print("Викликайте лікаря!")

Обов’язково попробуйте писати ці  програми поступово. Тобто, спочатку напишіть загальний скелет, розставте заглушки, а потім деталізуйте блоки. У процесі опису ви можете без проблем запустити програму в частковому чи готовому стані, тому що помилок синтаксису у вас не буде.

Звичайно, це не обов'язково, але у багатьох завданнях такий підхід може допомогти.

 

Урок № 50. Умова в один рядок.

Якщо при виконанні умов потрібно виконати тільки одну операцію, можна записати її в тому ж рядку, що і умова, без відступів

a = int(input("Введіть число"))

if a > 10: print("Число більше 10")

Для elif і  else такий запис теж буде працювати.

 

a = int(input("Введіть число"))

if a > 10: print("Число більше 10")

elif a < 10: print('Число менше 10')

else: print('Це 10!')

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

 

a = int(input("Введіть число"))

if a > 10: print("Число більше 10")

else:

    print('Число менше або рівно 10')

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

a = int(input("Введіть число"))

if a > 10: print("Число більше")

    print('10')

else:

    print('Число менше або рівно 10')

Такий запис варто використовувати з обережністю, він може погіршити  читання вашої програми.

Урок № 51. Тернарний оператор.

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

confirm = input('Введіть "так" або "ні"')

if confirm == 'так':

    message = 'Ви погодились'

else:

    message = 'Ви відмовились'

Для того, щоб запис подібних частин програм був більш лаконічним та красивим, в Python є спеціальний тернарний оператор. Тернарним (від лат. ternarius — «потрійним») він називається через наявність трьох операндів. Другий операнд цього оператора — умова, в залежності від істинності якої визначається, буде застосовано перший чи третій операнд. confirm = input('Введіть "так" або "ні"')

message = 'Ви погодились' if confirm == 'так' else 'Ви відмовились'

print(message)

 

Другий рядок буквально можна сприймати так: присвоїти змінній message значення 'Ви погодились', якщо змінна confirm дорівнює 'так', інакше присвоїти змінній значення 'Ви відмовились'.

Зверніть увагу, що двокрапки  в тернарному операторі ставить не потрібно — if і  else в цьому випадку потрібно сприймати як один оператор. Такой код, без else, призведе до помилки.

confirm = input('Введіть "так" або "ні"')

message = 'Ви погодились' if confirm == 'так'

Умови, звичайно, можуть бути складнішими, а в якості значень для істинної та хибної умов можуть бути цілі вирази

 

name = input('Введіть ваше ім’я')

age = input('Введіть ваш вік')

message = 'Проходьте, ' + name if int(age) >= 18 else 'Вам поки рано, ' + name

print(message)

 

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

Робити умови і вирази в тернарному операторі занадто складними не варто. Так можна погіршити  програму, а це нам зовсім не потрібно.

 

Урок № 52. Вкладені умови.

Можливо, ви вже догадалися, що умовні оператори можуть бути введеними і замість використання оператора and можна зробити ось так

a = int(input("Введіть число"))

if a > 10:

    if a < 20:

        print('Це число більше 10, але менше 20')

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

Варто, однак, пам'ятати, що зайві вкладки  погіршують читання програми. І, швидше всього, використання and буде більш правильним

 

a = int(input("Введіть число"))

if a > 10 and a < 20:

    print('Це число більше 10, але менше 20')

Можливо, у певних випадках «викрутитися» за допомогою and не вийде, і тоді з спокійною душею можна використовувати вкладені один в одного умовні оператори.

 

 

 

 

 

Урок № 53.Методи рядків.

З попередніх уроків ви вже знаєте, що рядок — це окремий тип даних у Пітоні для зберігання текстової інформації. Рядки, які містять тільки цифри, можна перевворити в число, а будь-яке число можна перетворити в рядок.  Так само рядки  можна конкатенувати, тобто склеювати.

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

Щоб викликати метод, потрібно відразу після рядка поставити крапку і написати назву методу. Наприклад, ця програма

print("Привіт, світ!".upper())

виведе на екран вихідний рядок, всі букви, які перетворені в великі.

ПРИВІТ, СВІТ!

При виклику методу, як і при виклику функції, потрібно обов'язково поставити дужки, навіть якщо аргументів у методу немає. Ось такий код

print("Привіт, світ!".upper)

не викликає метод upper, а просто виводить на екран рядкове представлення методу

<built-in method upper of str object>

Звичайно, що методи рядків можна використовувати і із змінними. Ось ця програма

my_string = "Ще раз привіт!"

my_string = my_string.upper()

print(my_string)

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

ЩЕ  РАЗ ПРИВІТ!

Урок № 54.Программа з методами рядків. 67

Напишіть програму, в якій змінній string присвоєно значення, введене користувачем. Тип змінної string — рядок.

Програма повинна перетворити рядок, введений користувачем у верхній регістр за допомогою методу upper та вивести на екран перетворений рядок.

У цьому уроці  можна використовувати додаткові змінні за своїм бажанням.

string = input('Введіть рядок: ')

string = string.upper()

print(string)

 

Урок № 55.В нижній регістр.

Ця програма повинна робити майже саме, що і попередня. В загальному, напишіть програму, в якій змінній string присвоєно значення, введене користувачем. Тип змінної string — рядок.

Програма повинна перетворити рядок,  введений користувачем у нижній регістр за допомогою методу  та вивести на екран перетворений рядок.

У цьому уроці можна використовувати додаткові змінні за своїм бажанням.

 

Урок № 55. Покращений міні-калькулятор.

У одному з попередніх  уроків ви написали міні-калькулятор, який додавав два числа і виводив результат на екран. Якщо користувач замість цифр ввів букви, робота калькулятора закінчувалася помилкою. В цьому уроці треба буде усунути цей недолік.

За допомогою функціїєю input присвойте змінним a aі  b значення, введене користувачам. Не поспішайте перетворювати  змінні a і  b в числа.

Потом програма повинна перевірити, чи є змінні рядками, що містять тільки цифри. Зробити це треба за допомогою методу рядків  isdigit(). Якщо в рядку є тільки цифри — виклик метода завершиться  True.  Якщо є букви або рядок порожній — False.  Щоб перевірити рядки, використовуйте логічний оператор and.

Якщо змінні — рядкики, які містять тільки цифри, перетворіть  їх у числа за допомогою функції int , додайте їх і виведіть на екран результат конкатенації рядків «Сума=» і перетвореної в рядок суму змінних a і  b, інакше введіть на екран текст «Ви ввели не число».

a = input()

b = input()

if a.isdigit() and b.isdigit():

    print("Сума = " + str(int(a) + int(b)))

else:

    print("Ви ввели не число")

 

 

Урок № 56. Довжина рядка.

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

string = input()

string_length = len(string)

print(string_length)

виведе на екран довжину рядка, який ввів користувач.

Для перевірки мінімальної довжини рядка, введеного користувачем, можна написати

string = input()

if len(string) < 5:

    print("Помилка! Введіть більше п’яти символів!")

Якщо потрібно перевірити, чи ввів користувач хоча б один символ, краще написати ось так:

string = input()

if not string:

    print("Помилка! Введіть хоч що-небудь!")

Зрозуміло, що така перевірка теж буде працювати:

string = input()

if len(string) == 0:

    print("Помилка! Введіть хоч що-небудь!")

Однак перший варіант перевірки на порожній рядок лаконічніший і красивіший.

Такий код, як у першому варіанті перевірки, спрацьовує із-за логічного представлення рядка. Пітон вважає, що порожній рядок — це False, а рядок, в якому є  хоч один символ — True.

 

Урок № 57.Індекси рядка.

У Пітоне можна отримати символ із рядка  по його індексу. Нумерація індексів починається з нуля.

 

Для отримання символу рядка необхідно написати самий рядок або ім'я змінної,  відкриваючи квадратну дужку[,  , індекс символу — це його номер у рядку та закриваючу квадратну дужку ].

 

Наприклад, ця програма виведе на екран букву «П»

 

foo = "Привіт!"

print(foo[0])

Якщо же вказати неіснуючий індекс

 

foo = "Привіт"

print(foo[999])

програма видасть помилку

IndexError: string index out of range

Для того, щоб таких помилок не було, потрібно робити перевірку довжини рядка в програмі.

 

Також в Пітоне підтримуються негативні індекси. В цьому випадку нумерація йде з кінця рядка. Тобто −1  — останній символ рядка, −2  — попередній і так далі до початку рядка. Наступна програма виведе на екран «і» — попередню букву слова «Привіт»

 

foo = "Привіт"

print(foo[-2])

Вказання неіснуюго негативного індексу також приведе до помилки IndexError .

 

Також індекс можна вказувати не напряму, а за допомогою змінної або навіть за допомогою арифметичного виразу.

foo = "Привіт"

i = 0

print(foo[i], foo[i + 1])

Однак, потрібно пам’ятати, що індексом може бути тільки ціле число. Тому використання змінної не цілого типу призведе до помилки.

 

 

Урок № 57. Перша і остання буква.

Напишіть програму, яка записує у змінну string рядок, введену користувачам. Програма повинна перевірити довжину рядка. Якщо довжина рядка >=2 — програма повинна вивести перший і останній символ цієї цього рядка. Інакше — програма повинна вивести  «Помилка»

string=input()

if len(string)>=2:

    print(string[0],string[-1])

else:

    print("Помилка")

 

Урок № 58. Зрізи рядків.

Звертатися можна не тільки до окремим символам рядка, але і до його частини. Це робиться з допомогою зрезів рядків.

Для отримання зрезу рядка необхідно написати сам рядок або ім'я змінної , відкриваючи квадратну дяжку [, індекс початку зрізу, двокрапку, індекс кінця зрізу та закриваючу квадратну дужку ]. Як і при доступі до окремого символу рядка, індекси можуть бути негативними — Пітон розуміє, що в такому випадку індекс рахується з кінця рядка.

Наприклад, ця програма виводить на екран «сві»

foo = "Привіт, світ!"

print(foo[8:11])

А ця — «віт,»

foo = "Привіт, світ!"

print(foo[-10:-6]

 

Зверніть увагу, що символ з індексом початку зрізу включається в результат, а символ з індексом закінчення — ні.

Індекс початку зрізу можна не показати — в цьому випадку Пітон буде рахувати початок зрізу від початку самого рядка. Ось ця програма вивела на екран «Привіт» — це є перші 6 символів вихідної рядка.

foo = "Привет, мир!"

print(foo[:6])

Індекс кінця зрезу також можна не вказувати. Концем зрезу в цьому випадку буде кінець самого рядка. Наприклад, ця програма виводить на екран «світ!» — останні 4 символи вихідного рядка.

foo = "Привіт, світ!"

print(foo[-4:])

Вказання несумісних індексів у зрізах не призведе до помилки, як це було при доступі до окремого символу рядка. Наприклад, ця програма виводить на екран «Привет, світ!» — тобто весь рядок.

foo = "Привіт, світ!"

print(foo[:100])

А ця не виведе нічого, тому що індекси зрезу більші довжини рядка

foo = "Привіт, світ!"

print(foo[200:300])

Як і в разі з індексом, початок і кінець зрізу можна вказати за допомогою змінних і арифметичних дій. У програмі нижче на екран буде виведено 3 символи рядка, що починаються з символу, зазначеного користувача.

i = int(input())

foo = "Привіт, світ!"

print(foo[i:i+3])

Як і для індексів, це можуть бути тільки цілі числа, а використання змінних інших типів призводить до помилки.

 

Урок № 59. Програма із зрізами.

Напишіть програму, яка записує рядок, введений користувачам у змінну string. Програма повинна перевірити довжину рядка. Якщо довжина рядка больше >=5 — програма повинна вывести перші  три і останні три символи введеного рядка. Інакше — програма повинна вивести  «Помилка»

string = input()

if len(string) >= 5:

    print(string[:3], string[-3:])

else:

        print("Помилка")

 

Урок № 60. Кроки зрізів.

Крім початку і кінця, в зрізі можна задати крок. Наступна програма виводить на екран кожен другий символ вихідної рядка.

 

foo = "Привіт, світ!"

print(foo[::2])

Пиі,сі!

У цьому прикладі ми не вказуємо початок і кінець зрізу і берем кожен другий символ вихідної рядка вцілому. Якщо ж вказати в якості початку другий символ

foo = "Привіт, світ!"

print(foo[1::2])

то результатом буде кожен другий символ, що починається з другого

 

Якщо вказати негативний крок, символи будуть іти в зворотному порядку. Ось так, наприклад, можна перевернути вихідну строку

 

foo = "Привіт, світ!"

print(foo[::-1])

 

docx
Додано
14 лютого 2022
Переглядів
1030
Оцінка розробки
Відгуки відсутні
Безкоштовний сертифікат
про публікацію авторської розробки
Щоб отримати, додайте розробку

Додати розробку