Чи правда шаурма стає гіршою чим ближче до станції метро ...
#engineering #python
Цієї пʼятниці хочу поділитись дуже цікавою історією про те, як одна фраза на Reddit може привести до повноцінного проєкту з аналізу даних.
А точніше - приклад того, як можна інженерно підходити до перевірки гіпотез.
#engineering #python
Цієї пʼятниці хочу поділитись дуже цікавою історією про те, як одна фраза на Reddit може привести до повноцінного проєкту з аналізу даних.
А точніше - приклад того, як можна інженерно підходити до перевірки гіпотез.
👍22🤡1
Що краще: enumerate чи range для циклів
#python
Уявімо, що треба пройти по усім елементам циклу.
Це можна зробити дуже просто
Якщо ж треба мати доступ до елементу разом із його індексом, є такі варіанти
Що краще обрати - enumerate чи range?
1.
2.
3.
Окей, а коли ж краще користуватись
- коли колекція елементів точно індексована
- коли не треба мати доступ до конкретного елементу за поточним індексом
#python
Уявімо, що треба пройти по усім елементам циклу.
Це можна зробити дуже просто
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
print(fruit)
Якщо ж треба мати доступ до елементу разом із його індексом, є такі варіанти
# range
fruits = ["apple", "banana", "cherry"]
for index in range(len(fruits)):
print(index, fruits[index])
# enumerate
fruits = ["apple", "banana", "cherry"]
for index, fruit in enumerate(fruits):
print(index, fruit)
Що краще обрати - enumerate чи range?
1.
enumerate більш чисто виглядає та ще й оптимізована на рівні інтерпертатора2.
enumerate не має потенційних проблем з доступом по неіснуючому індексу3.
enumerate дозволяє задати початковий індекс для ітерації
for index, fruit in enumerate(fruits, start=1):
print(index, fruit)
Окей, а коли ж краще користуватись
range?- коли колекція елементів точно індексована
- коли не треба мати доступ до конкретного елементу за поточним індексом
for i in range(10):
print(i**2)
👍15❤1
Vibe coding ... ти не пройдеш!
#python #bugs
🗺 Ситуація
Ви тест інженер та працюєте в команді з розробниками.
До команди приєднується новий девелопер. Він ... дуже полюбляє vibe coding, але не любить vibe debugging.
Через деякий час, ви бачите від нього PR на задачу обробки дорослих юзерів та фільтрації тих, у кого є валідна електрона адреса.
❔Питання: чи все ок з цим кодом? Відповіді пишемо в коментарях.
#python #bugs
🗺 Ситуація
Ви тест інженер та працюєте в команді з розробниками.
До команди приєднується новий девелопер. Він ... дуже полюбляє vibe coding, але не любить vibe debugging.
Через деякий час, ви бачите від нього PR на задачу обробки дорослих юзерів та фільтрації тих, у кого є валідна електрона адреса.
def process_user_data(users, min_age=18):
results = []
for user in users:
name = user['name']
age = user['age']
email = user['email']
if age >= min_age:
if '@' in email:
user['status'] = 'processed'
results.append(user)
average_age = sum(user['age'] for user in results) / len(results)
print(f"Average age of processed users: {average_age}")
return results
❔Питання: чи все ок з цим кодом? Відповіді пишемо в коментарях.
😁10🥴8❤1
Найшвидший спосіб знайти голосні в реченні
#python
Задача: написати функцію, яку перевіряє чи є голосні в рядку.
Можна це зробити багатьма способами.
Спосіб 1
Спосіб 2
Спосіб 3
Але виявляється, що найшвидший спосіб це - регулярні вирази!
Чому? Бо механізм регулярних виразів в Python дуже оптимізований. Більше можна почитати в оригінальній статті.
#python
Задача: написати функцію, яку перевіряє чи є голосні в рядку.
def has_vowels(s: str) -> bool:
...
Можна це зробити багатьма способами.
Спосіб 1
def loop_in(s):
for c in s:
if c in "aeiouAEIOU":
return True
return False
Спосіб 2
def set_intersection(s):
return set(s) & set("aeiouAEIOU")
Спосіб 3
def map_lambda(s):
return any(map(lambda x: x in "aeiouAEIOU", s))
Але виявляється, що найшвидший спосіб це - регулярні вирази!
import re
def regex(s):
return bool(re.search(r'[aeiouAEIOU]', s))
Чому? Бо механізм регулярних виразів в Python дуже оптимізований. Більше можна почитати в оригінальній статті.
Austinhenley
The fastest way to detect a vowel in a string
Diving into CPython, bytecode, regex, and algorithmic analysis to find the fastest method.
👍23❤🔥5❤1
Як ШІ замінить менеджерів
#python #ai
#python #ai
import time
import random
def random_status_prompt():
prompts = [
"What is your current status?",
"Any blockers?",
"Update your JIRA, please."
]
# Sleep for a random number of minutes (converted to seconds)
sleep_minutes = random.randint(1, 10)
print(f"Sleeping for {sleep_minutes} minute(s)...")
time.sleep(sleep_minutes * 60)
# Pick a random prompt and display it
message = random.choice(prompts)
print(message)
if __name__ == "__main__":
random_status_prompt()
😁67👏1