Сьогодні будемо обирати найцікавіший варіант вирішення 😎
Голосування (пост вище) буде відкрите до 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
У Пайтоні можна створювати клас всередині функції
А також всередині іншого класу)
Чи у іфці…
Коротше, можна все🤩
Але таке використання складніше читати, і зазвичай воно використовується у бібліотеках та фреймворках для спрощення зовнішнього використання
Одне з таких використань — створення об'єкту для позначення унікального значення. Такі об'єкти використовують наприклад у випадках, коли
До речі, make_sentinel — це реальна функція з чудової бібліотеки boltons
Спробувати самостійно | Підписатись
А також всередині іншого класу)
Чи у іфці…
Коротше, можна все
Але таке використання складніше читати, і зазвичай воно використовується у бібліотеках та фреймворках для спрощення зовнішнього використання
Одне з таких використань — створення об'єкту для позначення унікального значення. Такі об'єкти використовують наприклад у випадках, коли
None є доступним значенням. А функція make_sentinel покликана надати таким об'єктам кращого виглядуДо речі, make_sentinel — це реальна функція з чудової бібліотеки boltons
Спробувати самостійно | Підписатись
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤3🌚1🤝1🦄1
Робота з csv-файлами
— це просто, з використанням Пайтону)
Для цього імпортуйте вбудовану бібліотеку
Останні два класи прям дуже круті, бо дозволяють оперувати одразу словниками, а не сирими даними
Я навіть у сорсах побачив використання
Спробувати самостійно | Підписатись
— це просто, з використанням Пайтону)
Для цього імпортуйте вбудовану бібліотеку
csv і оберіть потрібний клас — reader, writer, DictReader, DictWriterОстанні два класи прям дуже круті, бо дозволяють оперувати одразу словниками, а не сирими даними
Я навіть у сорсах побачив використання
dict(zip()), про який я розказував тут 😅Спробувати самостійно | Підписатись
👍6💅3❤2
Саме так працюють модулі у Пайтоні
Кожен модуль є інстансом класу
ModuleType, і за бажання його можна наслідувати і змінити логіку на ваш розсудОтож, що відбувається на картинці?
Усі атрибути нашого модуля (а точніше об'єкту класу
ThisModule) будуть мати атрибут some_attribute та метод some_functionУ методах замість
self буде наш модульБудь-які зміни атрибутів у методах — будуть працювати так само як
global у звичайному модуліОстанній рядок у коді каже Пайтону, що модуль з таким ім'ям має бути перезаписаний на об'єкт класу
ThisModule, оскільки sys.modules це і є те місце, де він зберігає усі модуліПайтону взагалі-то байдуже, що знаходиться у цьому словнику. Якщо там щось знаходиться з іменем
x, і програміст напише import x, Пайтон, не задумуючись, поверне це значенняСпробувати самостійно | Підписатись
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍2❤1❤🔥1🤡1
f-стрічки можуть набагато більше, ніж ви можете уявити
Одним із моїх улюблених прикладів є дата і час
Усі формати із
Тепер я не уявляю як можна писати по-інакшому😅
А якщо вам хочеться простішу версію
Це ліба, яка буквально робить зворотнє до f-стрічок — знаходить дані у стрічці у певному форматі і конвертує їх у відповідні типи
Спробувати самостійно | Підписатись
Одним із моїх улюблених прикладів є дата і час
Усі формати із
datetime.strftime() підтримуються і тутТепер я не уявляю як можна писати по-інакшому
А якщо вам хочеться простішу версію
datetime.strptime(), а може вам потрібен парсер не тільки для дат, то пригляніться до parseЦе ліба, яка буквально робить зворотнє до f-стрічок — знаходить дані у стрічці у певному форматі і конвертує їх у відповідні типи
Спробувати самостійно | Підписатись
Please open Telegram to view this post
VIEW IN TELEGRAM
2🔥10❤6🤯3🤡3👍1