Python просто | з Коропом
При написанні типових користувацьких програм варто додавати пояснення та контекст для деяких помилок Але при цьому не завжди треба ловити цю помилку. Для цього можна у блоці except дописати raise і помилка піде далі, аж поки не зупинить виконання програми…
Я уже розповідав про ре-рейз помилок, але й сам забув, що замість
Цей метод дозволяє додати нотатку для будь-якої помилки, щоб мати більше контексту
Усі ці нотатки зберігаються у атрибуті
Він доступний лише з версії 3.11, але уже встиг увійти у активний обіг (принаймні у мене 👀)
Документація
А за посиланням нижче є аж 4 додаткових приклади😉
Спробувати самостійно | Підписатись
print'а краще використати метод add_note() 😅Цей метод дозволяє додати нотатку для будь-якої помилки, щоб мати більше контексту
Усі ці нотатки зберігаються у атрибуті
__notes__ (але якщо нотаток не було, то й атрибута не буде, це важливо)Він доступний лише з версії 3.11, але уже встиг увійти у активний обіг (принаймні у мене 👀)
Документація
А за посиланням нижче є аж 4 додаткових приклади
Спробувати самостійно | Підписатись
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍3🔥1 1
Конструкція
Серед таких є і блок
Якщо ви хочете бути впевненими, що змінна, створена у блоці
По суті це вбудований
Якщо хтось знайомий з Promise у JS, то блок
Спробувати самостійно | Підписатись
try/except має багато можливостей, хоч і не всі їх розуміютьСеред таких є і блок
else, який виконається тільки у тому випадку, якщо у блоці try не було помилкиЯкщо ви хочете бути впевненими, що змінна, створена у блоці
try буде доступна, то замість того, щоб писати код після усієї конструкції, додайте цей код у блок elseПо суті це вбудований
if/else в залежності від того чи була помилка, але з усією красою та функціональністю try/exceptЯкщо хтось знайомий з Promise у JS, то блок
else можна порівняти з колбеком .thenСпробувати самостійно | Підписатись
❤8👍1 1
finally — ще один блок конструкції try/exceptВикористовуйте
finally, коли треба щось виконати, незалежно від результату інших блоківНаприклад: закрити файл, закрити конекшин/транзакцію у БД тощо
Побічний ефект: цей блок виконається перед
return, тому можна уникнути створення зайвої змінної для повернення результату з функціїТеж саме стосується і
break, і continue, якщо try/except знаходиться в цикліДокументація
Спробувати самостійно | Підписатись
❤5👍2🔥1 1
elseТак знову 👀, але тепер у
for 😅Якщо у циклі не буде виклику
break, виконається код у блоці elseЯкщо не буде жодного елемента, також виконається (всьо логічно ж 🤷♂️)
Цю можливість можна використати для вкладених циклів, або для повернення дефолтного значення у блоці
elseЯ сам інколи юзаю цю штуку, але завжди дописую коментерам умови, за яких виконається ця частина коду, і для чого саме так побудовано
Тобто, це крутий інструмент, але доволі складний для розуміння, тому майте це на увазі у ваших проєктах)
Спробувати самостійно | Підписатись
👍4❤3😁1 1 1 1
Яким буде результат у останньому рядку?
Anonymous Quiz
25%
Помилка у циклі ❌
55%
[1, 6, 4]
15%
[1, 40, 6, 4]
2%
[1, 25, 6, 4]
3%
Не знаю 🤷♂️
🤯1
Відповідь: [1, 40, 6, 4]
Пояснення:
При ітерації, не варто видаляти елементи з масиву — Пайтон губиться і може пропустити елемент 😢
Так відбувається через те, що для ітерації по масиву, Пайтон зберігає індекс, а видалення одного елемента зміщує індекс для інших
Тому, якщо вам таки треба видалити об'єкт з масиву, по якому ви ітеруєтесь, скопіюйте масив через .copy() чи [:]
Все те саме стосується і будь-яких інших змін у масиві — треба бути дуже обережним)
Спробувати самостійно | Підписатись
Пояснення:
Так відбувається через те, що для ітерації по масиву, Пайтон зберігає індекс, а видалення одного елемента зміщує індекс для інших
Тому, якщо вам таки треба видалити об'єкт з масиву, по якому ви ітеруєтесь, скопіюйте масив через .copy() чи [:]
Все те саме стосується і будь-яких інших змін у масиві — треба бути дуже обережним)
Спробувати самостійно | Підписатись
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤7 1
А що це тут таке складне? 🫠
А це — дескриптори
Нумо читати статтю на Друкарні😉
Спробувати самостійно | Підписатись
А це — дескриптори
Нумо читати статтю на Друкарні
Спробувати самостійно | Підписатись
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯3❤1👌1 1
Погані звички, які прийшли від купи старих гайдів 🫠
Одна з причин, чому я завів цей канал, це боротьба з ними 😅
Так от,
Лопатою я тут назвавкопати ями працювати з файлами
Якщо треба зробити це швидко і небагато — ви візьмете лопату 😉
Записати текст у файл?
Зчитати текст з файлу? Тю,
Ви колись бачили щось простіше?)
Звісно, ніхто не каже викидати😉 )
Спробувати самостійно | Підписатись
Одна з причин, чому я завів цей канал, це боротьба з ними 😅
Так от,
with open це прекрасно, але навіщо вам трактор, якщо вам треба лопата?)Лопатою я тут назвав
Path — дуже простий спосіб Якщо треба зробити це швидко і небагато — ви візьмете лопату 😉
Записати текст у файл?
file.write_textЗчитати текст з файлу? Тю,
file.read_textВи колись бачили щось простіше?)
Звісно, ніхто не каже викидати
open, просто це більш гнучкий інструмент, який буде корисним у складніших операціях, але з яким треба вміти поводитись (трактором от можна й танк тягнути Спробувати самостійно | Підписатись
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤12👍3🔥1
Нова рубрика — задачки по Пайтону! 🔥
Я уже раніше анонсував її, і вирішив, що не варто зволікати)
Для початку, вибрав доволі стандартну задачку, але, надіюсь, вам сподобається 😊
Задача #1:
Потрібно написати функцію
Послідовність починається з двох одиниць, і продовжується сумою двох попередніх елементів, тобто: 1, 1, 2, 3, 5, 8, 13, 21 і тд
Ваші відповіді надсилайте у бот @python_kor0p_bot
Переможці:
1. Код, що виконується найшвидше
2. Код, що сподобається підписникам у голосуванні
Винагорода (на вибір):
- 2 години менторства від мене
- 100 грн
Як буде перевірятись коректність та швидкодія — описую у окремому JupyterLite
Відповіді приймаються до 9 червня 23:59
За мною залишається право задавати питання по вашій реалізації, щоб впевнитись, що код не крадений (ну або не від ШІ😅 )
10 червня буде проведено опитування серед підписників за найцікавішу відповідь, щоб визначити переможця #2
11 червня обидва переможці отримають свою винагороду, і їхні відповіді будуть опубліковані на каналі
Також, я опублікую свій варіант розв'язку, якщо вам цікаво)
Дуже чекаю ваших варіантів у боті☺️
Я уже раніше анонсував її, і вирішив, що не варто зволікати)
Для початку, вибрав доволі стандартну задачку, але, надіюсь, вам сподобається 😊
Задача #1:
Потрібно написати функцію
fib, що повертатиме н-ний елемент послідовності ФібоначчіПослідовність починається з двох одиниць, і продовжується сумою двох попередніх елементів, тобто: 1, 1, 2, 3, 5, 8, 13, 21 і тд
Ваші відповіді надсилайте у бот @python_kor0p_bot
Переможці:
1. Код, що виконується найшвидше
2. Код, що сподобається підписникам у голосуванні
Винагорода (на вибір):
- 2 години менторства від мене
- 100 грн
Як буде перевірятись коректність та швидкодія — описую у окремому JupyterLite
Відповіді приймаються до 9 червня 23:59
За мною залишається право задавати питання по вашій реалізації, щоб впевнитись, що код не крадений (ну або не від ШІ
10 червня буде проведено опитування серед підписників за найцікавішу відповідь, щоб визначити переможця #2
11 червня обидва переможці отримають свою винагороду, і їхні відповіді будуть опубліковані на каналі
Також, я опублікую свій варіант розв'язку, якщо вам цікаво)
Дуже чекаю ваших варіантів у боті
Please open Telegram to view this post
VIEW IN TELEGRAM
kor0p.github.io
Jupyter Notebook - Notebooks
WASM powered Jupyter running in the browser.
❤2🔥2
Сьогодні будемо обирати найцікавіший варіант вирішення 😎
Голосування (пост вище) буде відкрите до 23:59
Реалізації можна глянути ось тут:
- @pvlvld (від @pvlvld)
- @olsinika (від @olsinika)
- @krond (від @krond)
- hidden (від Hidden)
Як і обіцяв, завтра опублікую і свій варіант
P.S. він б не переміг😭
Усім дякую за участь, було цікаво слідкувати за потоком думок і реалізацій
У декого було декілька варіантів, і вони будуть опубліковані завтра (за згоди автора, звісно)
Голосування (пост вище) буде відкрите до 23:59
Реалізації можна глянути ось тут:
- @pvlvld (від @pvlvld)
- @olsinika (від @olsinika)
- @krond (від @krond)
- hidden (від Hidden)
Як і обіцяв, завтра опублікую і свій варіант
P.S. він б не переміг
Усім дякую за участь, було цікаво слідкувати за потоком думок і реалізацій
У декого було декілька варіантів, і вони будуть опубліковані завтра (за згоди автора, звісно)
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3❤2😎1 1
Python просто | з Коропом
Яка реалізація вам сподобалась найбільше?
Отже, переможці першого змагання:
1. @krond (від @krond) за найшвидший результат (0.00148с)
2. hidden (від Hidden), за якого проголосувало найбільше людей (61%)
Мої варіанти:
- звичайний (на фото — саме він)
- математичний
Додаткові варіанти від @krond:
- перший
- другий
- третій
А тепер коротенька історія:
В універу у нас були командні проєкти, до яких доєднювали менторів — людей, які працювали в айті і могли дати непідробні знання
Але на перший семестр першого курсу команда в нас не склалась якось...
Ніхто не хотів нічого робити, та й ментор не дуже за нами слідкував
Але на кінець семестру на нього трохи натиснули, і він почав нас ганяти по Пайтону (бо проєкт мав бути саме на ньому), і задача була саме написати функцію для послідовності Фібоначчі
Скільки часу ми тоді не гуглили, скільки б не думали (а я уже тоді вважав себе супер-крутим знавцем Пайтону, бо пройшов 2-3 безкоштовні курси, хєх) — ми не могли додуматись до того рішення, яке від нас очікував ментор
Так от, вирішення було майже таким як на фото. Різниця була в тому, що всередині циклу додавався
Мені не сподобався такий однобокий підхід, хоч я і був вражений простотою рішення
Тому, хоч ця задача і не є якоюсь складною, у неї є багато рішень, і вона для мене особлива)
Ще раз усім дякую за участь ❤️
1. @krond (від @krond) за найшвидший результат (0.00148с)
2. hidden (від Hidden), за якого проголосувало найбільше людей (61%)
Мої варіанти:
- звичайний (на фото — саме він)
- математичний
Додаткові варіанти від @krond:
- перший
- другий
- третій
А тепер коротенька історія:
В універу у нас були командні проєкти, до яких доєднювали менторів — людей, які працювали в айті і могли дати непідробні знання
Але на перший семестр першого курсу команда в нас не склалась якось...
Ніхто не хотів нічого робити, та й ментор не дуже за нами слідкував
Але на кінець семестру на нього трохи натиснули, і він почав нас ганяти по Пайтону (бо проєкт мав бути саме на ньому), і задача була саме написати функцію для послідовності Фібоначчі
Скільки часу ми тоді не гуглили, скільки б не думали (а я уже тоді вважав себе супер-крутим знавцем Пайтону, бо пройшов 2-3 безкоштовні курси, хєх) — ми не могли додуматись до того рішення, яке від нас очікував ментор
Так от, вирішення було майже таким як на фото. Різниця була в тому, що всередині циклу додавався
yield, а в умові задачі стояло "вивести послідовність до числа n". І за один виклик fib(100) ти отримував масив чисел з послідовності Фібоначчі, де усі числа менші за 100Мені не сподобався такий однобокий підхід, хоч я і був вражений простотою рішення
Тому, хоч ця задача і не є якоюсь складною, у неї є багато рішень, і вона для мене особлива)
Ще раз усім дякую за участь ❤️
❤3👍3🤯1🎉1🏆1 1
Про що я таке говорю?)
Це означає, що значення, яке змінюється в циклі, змінюється в скоупі, де існує цикл
Що відбувається в прикладі:
number рівне 2callback дивиться в скоуп по змінну number і знаходить там 2Як це виправити?
functools.partialТут можливо прийдеться додати аргументи до функції, які будуть передаватись через
partial, а раніше брались напряму зі скоупуСпробувати самостійно | Підписатись
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍2🔥1😁1🤯1🦄1