{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"provenance":[],"authorship_tag":"ABX9TyM74+LQwjsNxMsxOq3lJ0ln"},"kernelspec":{"name":"python3","display_name":"Python 3"},"language_info":{"name":"python"}},"cells":[{"cell_type":"markdown","source":["# Команди if"],"metadata":{"id":"CqbJ7QGyzk-2"}},{"cell_type":"markdown","source":["Програміст часто доводиться перевіряти набори умов і приймати рішення в залежності від цих умов. Команда if у мові Python дозволяє перевірити поточний стан програми та вибрати подальші дії залежно від результатів перевірки."],"metadata":{"id":"Py-gYeeZztB8"}},{"cell_type":"markdown","source":["## Простий приклад"],"metadata":{"id":"ZwqJ-2LDzzO1"}},{"cell_type":"markdown","source":["Наступний короткий приклад показує, як правильно організувати обробку спеціальних ситуацій із використанням if. Допустимо, у вас є список машин, і ви хочете вивести назву кожної машини. Назви більшості машин повинні записуватися з капіталізацією (перша літера у верхньому регістрі, інші в нижньому). З іншого боку, значення bmw повинно записуватися у верхньому регістрі. Наступний код перебирає список назв машин і шукає в ньому значення bmw. Для всіх елементів, що містять значення bmw, значення виводиться в верхньому регістрі:"],"metadata":{"id":"sigHIUDUz4Dc"}},{"cell_type":"code","source":["cars = ['audi', 'bmw', 'subaru', 'toyota']\n","for car in cars:\n"," if car == 'bmw':print(car.upper())\n"," \n"," else:print(car.title())\n","\n","# car = audi audi = bmw"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"bF-YJpfez4em","executionInfo":{"status":"ok","timestamp":1682365738939,"user_tz":-180,"elapsed":6,"user":{"displayName":"Іван Клопов","userId":"16257059839054245446"}},"outputId":"b772266c-712d-4cdc-a49a-f2e2769cc8c3"},"execution_count":1,"outputs":[{"output_type":"stream","name":"stdout","text":["Audi\n","BMW\n","Subaru\n","Toyota\n"]}]},{"cell_type":"markdown","source":["## Перевірка умов"],"metadata":{"id":"xzXIzcWX0AUD"}},{"cell_type":"markdown","source":["У кожній команді if центральне місце займає вираз, результатом якого є логічна істина (True) чи логічна брехня (False); цей вираз називається умовою. Залежно від результату перевірки Python вирішує, чи має виконуватися код у команді if. Якщо результат умови дорівнює True, Python виконує код, наступний за командою if."],"metadata":{"id":"NP9A1LYq0Mco"}},{"cell_type":"markdown","source":["### Перевірка рівності"],"metadata":{"id":"Af7l3TaQ0UhA"}},{"cell_type":"markdown","source":["У багатьох умовах поточне значення змінної порівнюється з конкретним значенням, яке вас цікавить. Найпростіша умова перевіряє, чи значення змінної конкретної величини:"],"metadata":{"id":"sGvZ3-dA0bAM"}},{"cell_type":"code","source":["car = 'bmw'\n","car == 'bmw'"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"F4k0VvGG0bgZ","executionInfo":{"status":"ok","timestamp":1682365867718,"user_tz":-180,"elapsed":313,"user":{"displayName":"Іван Клопов","userId":"16257059839054245446"}},"outputId":"e3526502-d952-4f0e-935a-6121dc93f7cd"},"execution_count":2,"outputs":[{"output_type":"execute_result","data":{"text/plain":["True"]},"metadata":{},"execution_count":2}]},{"cell_type":"code","source":["car = 'audi'\n","car == 'bmw'"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"8WDGaprs0fRY","executionInfo":{"status":"ok","timestamp":1682365879081,"user_tz":-180,"elapsed":305,"user":{"displayName":"Іван Клопов","userId":"16257059839054245446"}},"outputId":"61aa53db-fa5e-4d1f-e934-1f1215e342dd"},"execution_count":3,"outputs":[{"output_type":"execute_result","data":{"text/plain":["False"]},"metadata":{},"execution_count":3}]},{"cell_type":"markdown","source":["### Перевірка рівності без урахування регістру"],"metadata":{"id":"98kViVor0lmV"}},{"cell_type":"markdown","source":["У мові Python перевірка рівності виконується з урахуванням регістру. Наприклад, два значення з різним регістром символів рівними не вважаються:"],"metadata":{"id":"0xdSwC6a0sSN"}},{"cell_type":"code","source":["car = 'Audi'\n","car == 'audi' "],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"_yMEKw4R0s8Q","executionInfo":{"status":"ok","timestamp":1682365940622,"user_tz":-180,"elapsed":293,"user":{"displayName":"Іван Клопов","userId":"16257059839054245446"}},"outputId":"eb754089-f934-4f70-e4ef-cd24e328bed1"},"execution_count":4,"outputs":[{"output_type":"execute_result","data":{"text/plain":["False"]},"metadata":{},"execution_count":4}]},{"cell_type":"code","source":["car = 'Audi'\n","# audi\n","car.lower() == 'audi'\n","# \"AsrtW\".lower() = \"asrtw\" true\n","print(car)"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"qGH-UMv30z34","executionInfo":{"status":"ok","timestamp":1682365958185,"user_tz":-180,"elapsed":262,"user":{"displayName":"Іван Клопов","userId":"16257059839054245446"}},"outputId":"227252bd-5a7e-4833-bb3c-d635e145a674"},"execution_count":5,"outputs":[{"output_type":"stream","name":"stdout","text":["Audi\n"]}]},{"cell_type":"markdown","source":["Веб-сайти встановлюють певні правила для даних, які користувачі вводять таким чином. Наприклад, сайт може використовувати перевірку умови, щоб переконатися, що ім'я кожного користувача унікальне (а чи не збігається з ім'ям іншого користувача, відрізняючись від нього лише регістром символів). Коли хтось вказує нове ім'я користувача, це ім'я перетворюється на нижній регістр і порівнюється з версіями всіх існуючих імен у нижньому регістрі. Під час такої перевірки ім'я \"John\" буде відхилено, якщо в системі вже використовується будь-який різновид \"john\"."],"metadata":{"id":"YnRQgKTT049X"}},{"cell_type":"markdown","source":["### Проверка неравенства"],"metadata":{"id":"htgWcPBL07xX"}},{"cell_type":"markdown","source":["Якщо ви хочете перевірити, що два значення різні, використовуйте комбінацію зі знака оклику і знака рівності (!=). Знак оклику представляє заперечення, як і в багатьох мовах програмування. Для знайомства з оператором нерівності ми скористаємося іншою командою if. У змінній зберігається замовлене доповнення до піци; якщо клієнт не замовив анчоус (anchovies), програма виводить повідомлення:"],"metadata":{"id":"NJe6tHLz1Bvp"}},{"cell_type":"code","source":["requested_topping = 'mushrooms'\n","if requested_topping != 'anchovies':print(\"Hold the anchovies!\")"],"metadata":{"id":"3qsWIBq108KL"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":["### Порівняння чисел"],"metadata":{"id":"3RevgYAL1FF9"}},{"cell_type":"markdown","source":["Перевірка числових значень досить прямолінійна. Наприклад, наступний код перевіряє, що змінна age дорівнює 18:"],"metadata":{"id":"ruXzFsRp1Nkd"}},{"cell_type":"code","source":["age = \"18\"\n","age === 18\n","\n","# 18 == \"18\" True\n","# 18 === \"18\" False"],"metadata":{"id":"Xo1sII1v1OHC"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":["Також можна перевірити умову нерівності двох чисел. Наприклад, наступний код виводить повідомлення, якщо значення змінної answer відрізняється від очікуваного:"],"metadata":{"id":"bmIqLqvM1Y-p"}},{"cell_type":"code","source":["answer = 17\n","if answer != 42:print(\"That is not the correct answer. Please try again!\")"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"C0YnKv0w1RWg","executionInfo":{"status":"ok","timestamp":1682366121402,"user_tz":-180,"elapsed":6,"user":{"displayName":"Іван Клопов","userId":"16257059839054245446"}},"outputId":"60093faa-df11-45ca-e00e-b7612453aae4"},"execution_count":7,"outputs":[{"output_type":"stream","name":"stdout","text":["That is not the correct answer. Please try again!\n"]}]},{"cell_type":"markdown","source":["До умовних команд також можна включати всілякі математичні порівняння: менше, менше чи одно, більше, більше чи одно:"],"metadata":{"id":"_g9Luw1P1g5Y"}},{"cell_type":"code","source":["age = 19"],"metadata":{"id":"aacNE6I61hR5"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":["age < 21"],"metadata":{"id":"3OxDrFTm1k30"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":["age <= 21"],"metadata":{"id":"ZPgrCEmL1m0C"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":["age > 21"],"metadata":{"id":"bXB1xy8L1oht"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":["age >= 21\n","x=10\n","x=x-1"],"metadata":{"id":"4MLI5TcW1rpe"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":["## Перевірка кількох умов"],"metadata":{"id":"n_I9vr7Q3l20"}},{"cell_type":"markdown","source":["Іноді потрібно перевірити кілька умов одночасно. Наприклад, у деяких випадках для виконання дії потрібно, щоб істинними були відразу дві умови; в інших випадках достатньо, щоб істинною була хоча б одна з двох умов. Ключові слова and і or допоможуть вам у подібних ситуаціях."],"metadata":{"id":"40zWGqxk3rNy"}},{"cell_type":"markdown","source":["### Використання and для перевірки кількох умов"],"metadata":{"id":"Al5q4rPT3wvM"}},{"cell_type":"markdown","source":["Щоб перевірити, що дві умови дійсні одночасно, об'єднайте їх ключовим словом *and*; якщо обидві умови істинні, те й усі вирази теж істинно. Якщо хоча б одне (або обидві) умови помилкові, то й результат всього виразу дорівнює False."],"metadata":{"id":"hfvl3Zxw31GX"}},{"cell_type":"code","source":["age_0 = 22\n","age_1 = 18\n","age_2 = 19\n","age_0 >= 21 and age_1 <= 21 and age_2 <= 21"],"metadata":{"id":"GcIyiqjk31lc"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":["age_1 = 22\n","age_0 >= 21 and age_1 >= 21"],"metadata":{"id":"kAGONzpj37G_"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":["### Використання or для перевірки кількох умов"],"metadata":{"id":"2mIrHcxv3_uD"}},{"cell_type":"markdown","source":["Ключове слово or теж дозволяє перевірити кілька умов, але результат загальної перевірки є дійсним у тому випадку, коли істинно хоча б одна або обидві умови. Помилковий результат досягається тільки в тому випадку, якщо обидві окремі умови помилкові."],"metadata":{"id":"c_ZSpcGX4ELg"}},{"cell_type":"code","source":["age_0 = 22\n","age_1 = 18\n","age_0 >= 21 or age_1 >= 21"],"metadata":{"id":"V4utd-Sp4Esp"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":["age_0 = 18\n","age_0 >= 21 or age_1 >= 21"],"metadata":{"id":"ydBUek2W4INB"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":["### Перевірка входження значень до списку"],"metadata":{"id":"g3hAFWXp4O2z"}},{"cell_type":"markdown","source":["Іноді буває важливо перевірити, чи містить список певне значення, перш ніж виконувати дію. Наприклад, перед завершенням реєстрації нового користувача на сайті можна перевірити, чи існує його ім'я у списку імен чинних користувачів, або в картографічному проекті визначити, чи входить передається місце у список відомих місць на карті. Щоб дізнатися, чи є значення у списку, скористайтеся ключовим словом in. Допустимо, ви пишете програму для піцерії. Ви створили список додатків до піци, замовлених клієнтом, і хочете перевірити, чи входять деякі доповнення до цього списку."],"metadata":{"id":"vlHIul1C4Tvm"}},{"cell_type":"code","source":["requested_toppings = ['mushrooms', 'onions', 'pineapple']\n","'mushrooms' in requested_toppings"],"metadata":{"id":"5veBDzsQ4UKE"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":["'pepperoni' in requested_toppings"],"metadata":{"id":"2Ijtaaof4Xbg"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":["### Перевірка відсутності значення у списку"],"metadata":{"id":"RW7Pck2d4dC4"}},{"cell_type":"markdown","source":["В інших випадках програма повинна переконатися, що значення не входить до списку. Для цього використовується ключове слово. Наприклад розглянемо список користувачів, яким заборонено писати коментарі на форумі. Перш ніж дозволити користувачеві відправлення коментаря, можна перевірити, чи не був користувач включений до «чорного списку»:"],"metadata":{"id":"I2v8fvbp4h8K"}},{"cell_type":"code","source":["banned_users = ['andrew', 'carolina', 'david']\n","user = 'marie'\n","if user not in banned_users:\n"," print(user.title() + \", you can post a response if you wish.\")"],"metadata":{"id":"NjWieHDu4ioE"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":["## Логічні вирази"],"metadata":{"id":"_cCi6eiF4pI3"}},{"cell_type":"markdown","source":["У процесі вивчення програмування ви рано чи пізно почуєте термін «логічний вираз». По суті це лише інша назва для перевірки умови. Результат логічного виразу дорівнює True або False, як і результат умовного виразу після його обчислення. Логічні висловлювання часто використовуються для перевірки деяких умов — наприклад, чи запущено комп'ютерну гру або чи дозволено користувачеві редагувати деяку інформацію на сайті:"],"metadata":{"id":"gjyK5xEc4uLy"}},{"cell_type":"markdown","source":["## Команди if"],"metadata":{"id":"Qu44FndQ4zZG"}},{"cell_type":"markdown","source":["Коли ви зрозумієте, як працюватимуть перевірки умов, можна переходити до написання команд if. Існує кілька різновидів команд if, і вибір варіанта залежить від кількості умов, що перевіряються. Приклади команд if вже зустрічалися вам під час обговорення перевірки умов, але зараз ця тема буде розглянута докладніше."],"metadata":{"id":"Bs3pUr5143-m"}},{"cell_type":"markdown","source":["### Прості команди if"],"metadata":{"id":"vKrzH9ZQ4_pw"}},{"cell_type":"markdown","source":["Найпростіша форма команди if складається з однієї умови та однієї дії:\n","\n"," if умова:\n"," \n"," дія\n"," \n"," \n","У першому рядку розміщується умова, а в блоці з відступом практично будь-яка дія. Якщо умова є істинною, то Python виконує код у блоці після команди if, а якщо помилково, цей код ігнорується. Припустимо, є змінна, що становить вік людини. Наступний код перевіряє, що цей вік достатній для голосування:"],"metadata":{"id":"MvRajxYb5Fd2"}},{"cell_type":"code","source":["age = 19\n","if age >= 18 and :\n"," print(\"You are old enough to vote!\")"],"metadata":{"id":"B49wuFwy5GCz"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":["Відступи в командах if грають таку ж роль, як у циклах for. Якщо умова істинна, всі рядки з відступом після команди if виконуються, і якщо помилково — весь блок з відступом ігнорується. Блок команди if може містити скільки завгодно рядків. Додамо ще один рядок для виведення додаткового повідомлення, якщо вік достатній для голосування:"],"metadata":{"id":"oK3snE6U5QQf"}},{"cell_type":"code","source":["age = 19 \n","if age >= 18:\n"," print(\"You are old enough to vote!\")\n"," print(\"Have you registered to vote yet?\")"],"metadata":{"id":"eEEcaLuU5Qpy"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":["### Команди if-else"],"metadata":{"id":"yVRNW6Pn5W60"}},{"cell_type":"markdown","source":["Часто у програмі необхідно виконати одну дію в тому випадку, якщо умова істинна, та інша дія, якщо вона є хибною. З синтаксисом if-else це можливо. Блок if-else в цілому схожий на команду if, але секція else визначає дію або набір дій, що виконуються при невдалій перевірці."],"metadata":{"id":"fNLmH5lg5bio"}},{"cell_type":"code","source":["age = 19\n","if age >= 18:\n"," print(\"You are old enough to vote!\")\n"," print(\"Have you registered to vote yet?\")\n","else:\n"," print(\"Sorry, you are too young to vote.\")\n"," print(\"Please register to vote as soon as you turn 18!\")"],"metadata":{"id":"C5DcXN565b81"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":["### Ланцюжки if-elif-else"],"metadata":{"id":"KxbXuSZT5jPo"}},{"cell_type":"markdown","source":["Нерідко у програмі потрібно перевіряти більше двох можливих ситуацій; для таких ситуацій Python передбачений синтаксис if-elif-else. Python виконує лише один блок у ланцюжку if-elif-else. Всі умови перевіряються по порядку доти, доки одне з них не дасть справжнього результату. Далі виконується код, який слідує за цією умовою, а всі інші перевірки Python пропускає. У багатьох реальних ситуаціях існують більше двох можливих результатів. Уявіть парк атракціонів, який стягує різну плату за вхід для різних вікових груп: * Для відвідувачів молодше 4 років вхід безкоштовний.\n","* Для відвідувачів від 4 до 5 років квиток коштує 5. 6-10 10-17 * Для відвідувачів від 18 років старше квиток коштує 10. Як використовувати команду if для визначення плати за вхід? Наступний код визначає, до якої вікової категорії відноситься відвідувач, і виводить повідомлення з вартістю квитка:"],"metadata":{"id":"SJbipjwP5nxN"}},{"cell_type":"code","source":["age = 12\n","if age < 4:\n"," print(\"Your admission cost is $0.\")\n","elif age < 18:\n"," print(\"Your admission cost is $5.\")\n","else:\n"," print(\"Your admission cost is $10.\")"],"metadata":{"id":"SENJZ6Pp5oLd"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":["### Серії блоків elif"],"metadata":{"id":"bSg_Ba1M5vx8"}},{"cell_type":"markdown","source":["Код може містити скільки завгодно блоківel if. Наприклад, якщо парк атракціонів запровадить особливу знижку для відвідувачів похилого віку, ви можете додати до свого коду ще одну перевірку для визначення того, чи поширюється знижка на поточного відвідувача. Припустимо, відвідувачі віком 65 і вище платять половину від звичайної ціни квитка, або $5:"],"metadata":{"id":"JGnsYmwm50pc"}},{"cell_type":"code","source":["age = 12\n","if age < 4:\n"," price = 0 \n","elif age < 18:\n"," price = 5\n","elif age < 65:\n"," price = 10\n","else:\n"," price = 5\n","print(\"Your admission cost is $\" + str(price) + \".\")"],"metadata":{"id":"RzYzjMlf51Nw"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":["### Отсутствие блока else"],"metadata":{"id":"HEt0Y8O_58_V"}},{"cell_type":"markdown","source":["Python не вимагає, щоб ланцюжок if-elif неодмінно завершувався блоком else. Іноді блок else зручний; в інших випадках буває наочно використовувати додаткову секцію elif для обробки конкретної умови:"],"metadata":{"id":"QE9lBQ3z6C7v"}},{"cell_type":"code","source":["age = 100\n","if age < 4:\n"," price = 0\n","elif age < 18:\n"," price = 5\n","elif age < 65:\n"," price = 10\n","elif age >= 65:\n"," price = 5\n","print(\"Your admission cost is $\" + str(price) + \".\")"],"metadata":{"id":"fbEcj8_T6Drb"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":["### Перевірка кількох умов"],"metadata":{"id":"B0i5su_v6MHx"}},{"cell_type":"markdown","source":["Ланцюжки if-elif-else ефективні, але вони підходять тільки в тому випадку, якщо істинною має бути лише одна умова. Як тільки Python знаходить умову, що виконується, всі інші перевірки пропускаються. Така поведінка є досить ефективною, тому що вона дозволяє перевірити одну конкретну умову. Однак іноді буває важливо перевірити всі умови, що становлять інтерес. У разі слід застосовувати серії простих команд if без блоків elif чи else. Таке рішення є доречним, коли істинними можуть бути відразу кілька умов і ви хочете відреагувати на всі справжні умови. Повернемося, наприклад, спицею. Якщо хтось замовить піцу з двома доповненнями, програма має опрацювати обидва доповнення:"],"metadata":{"id":"Jn6GsocnhgSD"}},{"cell_type":"code","source":["requested_toppings = ['mushrooms', 'extra cheese']\n","\n","\n","if 'mushrooms' in requested_toppings: 1\n","\n","if 'pepperoni' in requested_toppings:\n"," print(\"Adding pepperoni.\")\n","\n","if 'extra cheese' in requested_toppings:\n"," print(\"Adding extra cheese.\")\n","\n","print(\"\\nFinished making your pizza!\")"],"metadata":{"id":"tzOYly6Fhg0Z"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":["Якби у програмі використовувався блок if-elif-else, код працював би неправильно, оскільки він переривав роботу після виявлення першого істинного умови. Ось як це виглядало б:"],"metadata":{"id":"IyCHNsZ1hpz4"}},{"cell_type":"code","source":["requested_toppings = ['mushrooms', 'extra cheese']\n","\n","if 'mushrooms' in requested_toppings:\n"," print(\"Adding mushrooms.\")\n","elif 'pepperoni' in requested_toppings:\n"," print(\"Adding pepperoni.\")\n","elif 'extra cheese' in requested_toppings:\n"," print(\"Adding extra cheese.\")\n","\n","print(\"\\nFinished making your pizza!\")"],"metadata":{"id":"xm4ycQ1NhqOj"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":["Итак, если вы хотите, чтобы в программе выполнялся только один блок кода,— используйте цепочку if-elif-else. Если же выполняться должны несколько блоков, используйте серию независимых команд if."],"metadata":{"id":"YYDLX_SxhvOB"}},{"cell_type":"markdown","source":["## Использование команд if со списками"],"metadata":{"id":"Eh8k_NImhyCK"}},{"cell_type":"markdown","source":["Объединение команд if со списками открывает ряд интересных возможностей. Например, вы можете отслеживать специальные значения, для которых необходима особая обработка по сравнению с другими значениями в списке, или эффективно управлять изменяющимися условиями — например, наличием некоторых блюд в ресторане. Также объединение команд if со списками помогает продемонстрировать, что ваш код корректно работает во всех возможных ситуациях."],"metadata":{"id":"DeTeBWFCh176"}},{"cell_type":"markdown","source":["### Проверка специальных значений"],"metadata":{"id":"r-d2zU2nh4iz"}},{"cell_type":"markdown","source":["Вернемся к примеру с пиццерией. Программа выводит сообщение каждый раз, когда пицца снабжается дополнением в процессе приготовления. Код этого действия можно записать чрезвычайно эффективно: нужно создать список дополнений, заказанных клиентом, и использовать цикл для перебора всех заказанных дополнений:"],"metadata":{"id":"lkJydFa3h8Ht"}},{"cell_type":"code","source":["requested_toppings = ['mushrooms', 'green peppers', 'extra cheese']\n","for requested_topping in requested_toppings:\n"," print(\"Adding \" + requested_topping + \".\")\n","print(\"\\nFinished making your pizza!\")"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"zkBEMWhQh48y","executionInfo":{"status":"ok","timestamp":1682394589276,"user_tz":-180,"elapsed":2,"user":{"displayName":"Іван Клопов","userId":"16257059839054245446"}},"outputId":"c5d60204-d90b-45d4-d67b-15345b965e46"},"execution_count":1,"outputs":[{"output_type":"stream","name":"stdout","text":["Adding mushrooms.\n","Adding green peppers.\n","Adding extra cheese.\n","\n","Finished making your pizza!\n"]}]},{"cell_type":"markdown","source":["А если в пиццерии вдруг кончится зеленый перец? Команда if в цикле for может правильно обработать эту ситуацию:"],"metadata":{"id":"W5zbiQwqiCca"}},{"cell_type":"code","source":["requested_toppings = ['mushrooms', 'green peppers', 'extra cheese']\n","for requested_topping in requested_toppings:\n"," if requested_topping == 'green peppers':\n"," print(\"Sorry, we are out of green peppers right now.\")\n"," else: \n"," print(\"Adding \" + requested_topping + \".\")\n","\n","print(\"\\nFinished making your pizza!\")\n","\n","# requested_topping = 'mushrooms'\n","# 'mushrooms' == 'green peppers' True"],"metadata":{"id":"HMLt22zeiG0V"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":["### Проверка наличия элементов всписке"],"metadata":{"id":"ruJiCJVoiJ2V"}},{"cell_type":"markdown","source":["Для всіх списків, з якими ми працювали досі, діяло одне просте припущення: ми вважали, що у кожному списку є хоча б один елемент. Скоро ми надамо користувачеві можливість вводити інформацію, що зберігається у списку, тому ми вже не можемо припускати, що при кожному виконанні циклу у списку є хоча б один елемент. У такій ситуації перед виконанням циклу for буде корисно перевірити, чи є у списку хоча б один елемент. Перевіримо, чи є елементи у списку замовлених доповнень перед виготовленням піци. Якщо список порожній, програма пропонує користувачеві підтвердити, що хоче базову піцу без доповнень. Якщо список не порожній, піца готується так само, як у попередніх прикладах:"],"metadata":{"id":"q8v2SK_gibJ3"}},{"cell_type":"code","source":["requested_toppings = []\n","for requested_topping in requested_toppings:\n"," print(\"Adding \" + requested_topping + \".\")\n"," print(\"\\nFinished making your pizza!\")"],"metadata":{"id":"hus76A_yibnk"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":["### Множинні списки"],"metadata":{"id":"yaE2oDJviezM"}},{"cell_type":"markdown","source":["Відвідувачі здатні замовити будь-що, особливо коли йдеться про доповнення до піци. Що якщо клієнт захоче покласти на піцу картопля фрі? Списки команди if дозволять вам переконатися в тому, що вхідні дані мають сенс, перш ніж обробляти їх. Перевіримо наявність нестандартних доповнень перед тим, як готувати піцу. У наступному прикладі визначаються два списки. Перший список містить перелік доступних додатків, а другий – список доповнень, замовлених клієнтом. На цей раз кожен елемент із requested_toppings перевіряється за списком доступних доповнень перед додаванням до піци:"],"metadata":{"id":"qsS6O571in2F"}},{"cell_type":"code","source":["available_toppings = ['mushrooms', 'olives', 'green peppers','pepperoni', 'pineapple', 'extra cheese']\n","requested_toppings = ['mushrooms', 'french fries', 'extra cheese']\n","for requested_topping in requested_toppings:\n","# 1) requested_topping = 'mushrooms'\n","# 2) requested_topping = 'french fries'\n","# 3) requested_topping = 'extra cheese'\n"," if requested_topping in available_toppings: \n"," print(\"Adding \" + requested_topping + \".\")\n"," else:\n"," print(\"Sorry, we don't have \" + requested_topping + \".\")\n","print(\"\\nFinished making your pizza!\") "],"metadata":{"id":"Rq-U7apkioJe"},"execution_count":null,"outputs":[]}]}