Python RU
13.4K subscribers
871 photos
41 videos
36 files
1.12K links
Все для python разработчиков

админ - @haarrp

@python_job_interview - Python собеседования

@ai_machinelearning_big_data - машинное обучение

@itchannels_telegram - 🔥лучшие ит-каналы

@programming_books_it - it книги

@pythonl

РКН: clck.ru/3Fmy2j
加入频道
🔥 5 примеров использования Redis с кодом на Python

1. Caching
Redis можно использовать для кэширования часто используемых данных, снижая нагрузку на ваше основное хранилище данных. Вот пример того, как реализовать кэширование с помощью Redis в Python

import redis

# Connect to Redis
r = redis.Redis(host='localhost', port=6379, db=0)

def get_data_from_cache(key):
# Check if data exists in the cache
if r.exists(key):
# Retrieve data from the cache
data = r.get(key)
return data.decode('utf-8') # Convert bytes to string
else:
# Fetch data from the primary data source
data = fetch_data_from_source()

# Store data in the cache with a timeout of 1 hour
r.setex(key, 3600, data)
return data


2. Pub/Sub (Publish/Subscribe):
Redis поддерживает паттерн pub/sub, позволяя вам создавать системы обмена сообщениями. Вот пример:

import redis
import time

# Connect to Redis
r = redis.Redis(host='localhost', port=6379, db=0)

def publish_message(channel, message):
# Publish a message to the specified channel
r.publish(channel, message)

def subscribe_channel(channel):
# Subscribe to a channel and process incoming messages
pubsub = r.pubsub()
pubsub.subscribe(channel)

for message in pubsub.listen():
print(message['data'].decode('utf-8')) # Process the received message


3. Rate Limiting:
Redis можно использовать для реализации ограничения скорости, чтобы контролировать количество запросов или операций за период времени. Пример:

import redis

# Connect to Redis
r = redis.Redis(host='localhost', port=6379, db=0)

def check_rate_limit(ip_address):
# Increment the request count for the IP address
request_count = r.incr(ip_address)

# If the count exceeds the limit (e.g., 100 requests per minute), deny the request
if request_count > 100:
return False

return True


4. Session Storage:
Redis можно использовать для хранения данных сеанса в веб-приложениях. Пример:

import redis
import uuid

# Connect to Redis
r = redis.Redis(host='localhost', port=6379, db=0)

def create_session(user_id):
# Generate a unique session ID
session_id = str(uuid.uuid4())

# Store the session data in Redis with a timeout of 30 minutes
r.setex(session_id, 1800, user_id)

return session_id

def get_user_id_from_session(session_id):
# Retrieve the user ID from the session data in Redis
user_id = r.get(session_id)

if user_id is not None:
return user_id.decode('utf-8') # Convert bytes to string
else:
return None


5. Leaderboard:
Redis можно использовать для создания таблиц лидеров или рейтингов на основе набранных баллов. Пример:

import redis

# Connect to Redis
r = redis.Redis(host='localhost', port=6379, db=0)

def update_score(player_id, score):
# Update the score of a player
r.zadd('leaderboard', {player_id: score})

def get_leaderboard():
# Get the top 10 players from the leaderboard
leaderboard = r.zrevrange('leaderboard', 0, 9, withscores=True)

for player, score in leaderboard:
print(f"Player: {player.decode('utf-8')}, Score: {score}")


Это лишь несколько примеров того, как Redis можно использовать в Python. Redis предоставляет множество других мощных функций и структур данных, которые можно использовать в различных приложениях.

Github

@pro_python_code
🖥 Быстрый веб-скрейпинг с библиотекой Polars

Polars — это библиотека Python для работы с датафреймами, по скорости превосходящая Pandas.

Как и Pandas, Polars можно использовать для парсинга сайтов. С ее помощью можно читать любые CSV-файлы, опубликованные на сайте, и даже извлекать таблицы из HTML-страниц.

Однако в настоящее время в Polars нет функции .read_html, как в Pandas. Поэтому я покажу обходной путь, позволяющий превратить таблицы с HTML-страниц в Polars-датафреймы.

Скрейпинг нескольких CSV-файлов с использованием Polars
Не скачивайте по одному CSV-файлы, загруженные на сайт, а прочитайте их с помощью Polars. Для этого нужно получить ссылку на файлы и использовать .read_csv.

Мы используем сайт Football-Data, который предоставляет исторические данные о футбольных матчах высших лиг всего мира. Проведем скрейпинг CSV-файла из Premier League (Премьер-лига).

Чтобы CSV-файл “Премьер-лига” оказался в списке сверху, нужно сначала получить его ссылку. Для этого наведите курсор на CSV-файл и нажмите “Copy Link Address” (“Копировать адрес ссылки”).

Получаем такую ссылку.

Теперь прочитаем ее с Polars.

import polars as pl
pl.read_csv('https://www.football-data.co.uk/mmz4281/2122/E0.csv')


Получаем датафрейм Polars со всеми данными:


Но это только CSV-файл с данными Премьер-лиги. Чтобы получить файлы с данными других лиг, таких как Championship (Чемпионат), League 1 (Лига 1) и League 2 (Лига 2), нужно добавить цикл for.

Вот как это сделать:

import polars as pl

leagues = ['E0', 'E1', 'E2', 'E3', 'EC'] # список лиг
frames = []
for league in leagues:
df = pd.read_csv(root + "2122" + "/" + league + ".csv")
frames.append(df)


Приведенный выше цикл извлечет CSV-файлы из всех соревнований в сезоне 21/22. Список leagues содержит идентификатор каждой лиги. Например, “E0” означает Премьер-лигу.

Те же шаги можно выполнить для извлечения файлов из нескольких сезонов.

Теперь посмотрим, как извлекать данные из таблиц на HTML-страницах.

Скрейпинг HTML-страниц с Polars (обходной путь)

Polars нет функции .read_html, которая позволяла бы легко извлекать таблицы из HTML-страниц. Однако есть обходной путь, который поможет превратить таблицы из HTML-страниц в Polars-датафреймы.

Для этого в дополнение к Polars нужно установить следующие библиотеки:

!pip install pandas
!pip install lxml
!pip install pyarrow

Pandas и lxml помогут извлечь данные, а pyarrow понадобится для превращения Pandas-датафрейма в Polars-датафрейм.

Извлечем табличные данные из статьи Википедии “List of The Simpsons episodes (seasons 1–20) (“Список эпизодов “Симпсонов”, сезоны 1–20”):

Сначала используем .read_html Pandas для извлечения таблиц из Википедии:

import pandas as pd
my_list = pd.read_html('https://en.wikipedia.org/wiki/List_of_The_Simpsons_episodes_(seasons_1%E2%80%9320)')


my_list содержит список датафреймов. Каждый датафрейм — это таблица со страницы Википедии.

Выберем случайную таблицу и назовем ее pandas_df.

pandas_df = my_list[5]

Теперь нужно использовать .from_pandas, чтобы превратить Pandas-датафрейм в Polars-датафрейм.

polars_df = pl.from_pandas(pandas_df)

Теперь у нас есть Polars-датафрейм со всеми собранными данными.

Чтобы превратить все Pandas-датафреймы из my_list в Polars-датафреймы, можно использовать списковое включение.

my_new_list = [pl.from_pandas(pandas_df) for pandas_df in my_list]


Вот и все! Теперь вы можете пользоваться всеми преимуществами Polars! Чтобы узнать больше о Polars, ознакомьтесь с официальной документацией или посмотрите полное руководство по Polars.

@pro_python_code
Please open Telegram to view this post
VIEW IN TELEGRAM
9 скриптов автоматизации Python для решения проблем

В нашей повседневной работе нам нужно выполнять некоторые скучные и повторяющиеся задачи, такие как копирование файлов, перемещение файлов, отправка Gmail, создание резервных копий, перевод текста и многое другое, но теперь вы можете автоматизировать их и сэкономить большую часть своего драгоценного времени. В этой статье я покажу вам 9 скриптов Python для автоматизации задач.

Читать

@pro_python_code
PyGame: учебник по программированию игр на Python

Когда я начал изучать компьютерное программирование в конце прошлого тысячелетия, это было вызвано моим желанием писать компьютерные игры. Я пытался понять, как писать игры на каждом языке и на каждой платформе, которую я изучил, включая Python. Так я обнаружил pygame и научился использовать его для написания игр и других графических программ.

В этой статье вы сможете самостоятельно реализовать свою первую игру, опираясь на данное руководство!

Читать

@pro_python_code
Python itertools. Хитрый способ избежать вложенных циклов

https://www.youtube.com/watch?v=TSvjYKIY01I&t=24s

@pro_python_code
🧑‍💻 38 языков программирования. Я попробовал их все!

В этой статье мне бы хотелось поделиться с вами своим опыт знакомства с более чем 30 языками программирования. Я надеюсь, что, ознакомившись с данным пособием, вы узнаете что-то новое и сможете выбрать язык программирования для собственных целей.

Читать

@pro_python_code
Модель SQLAlchemy с базой данных SQL Server в Python

В этой статье я покажу вам, как создать модель на основе существующей базы данных SQL Server, используя ту же файловую структуру, чтобы сохранить организованность нашего проекта. Это означает, что каждый класс и модель базы данных будут храниться в отдельном файле.

Читать

@pro_python_code
20 полезных однострочников на Python.

1. Поменять местами две переменные:
``
a, b = b, a
```

2. Найти максимальное или минимальное значение в списке:
max_value = max(lst)
min_value = min(lst)


3. Найти индекс максимального или минимального значения в списке:

max_index = lst.index(max(lst))
min_index = lst.index(min(lst))


4. Конкатенация списка строк:
concatenated_string = ''.join(lst)

5. Подсчет вхождений элемента в список:
count = lst.count(item)

6. Переворачиваем строку:
reversed_string = string[::-1]

7. Преобразование строки в список символов:
char_list = list(string)

8. Сортировка списка в порядке убывания:
sorted_list = sorted(lst, reverse=True)

9. Удаление дубликатов из списка:
unique_list = list(set(lst))

10. Вычислить сумму списка чисел:
total = sum(lst)

11. Проверить, все ли элементы списка удовлетворяют условию:
all_true = all(item > 0 for item in lst)

12. Проверьте, удовлетворяет ли условию любой элемент списка:
any_true = any(item > 0 for item in lst)

13. Фильтр списка на основе условия

filtered_list = [item for item in lst if condition]

14. Получение последнего элемента списка:

element_counts = {item: lst.count(item) for item in set(lst)}


15. Получение уникальных элементов и их количества в списке:

element_counts = {item: lst.count(item) for item in set(lst)}

16. Сжимаем вложенный список:

flattened_list = [item for sublist in nested_list for item in sublist]
```

17. Найдите факториал числа:

factorial = 1 if num == 0 else num * factorial(num - 1)

18. Проверить, является ли строка палиндромом:

is_palindrome = string == string[::-1]
```


19. Преобразование списка в строку, разделенную запятым:

csv_string = ','.join(map(str, lst))

20. Получение расширения файла
file_extension = os.path.splitext(filename)[1]


@pro_python_code
8 крутых способов свести функции Python в одну строку

Видео
Статья

@pro_python_code
Python itertools.compress. Удобный способ фильтрации данных

Видео

@pro_python_code
🖥 Полезные приемы с кодом для аналитиков данных на Python

1. Python itertools groupby удобный способ группировки - https://www.youtube.com/watch?v=Rt1gl4fM62k

2. Полезные приемы в Pandas - https://www.youtube.com/watch?v=Sd2S5rXe8sY&t=165s

3. Раскройте потенциал Python Numpy: руководство для начинающих в науке о данных - https://www.youtube.com/watch?v=XX2XremQ0fg&t=12s

4. Data science c Python.Ускоряем Pandas в 120 раз- https://www.youtube.com/watch?v=-dAdaEv23vk&t=4s

5. 26 практических приёмов и хитростей Python - https://www.youtube.com/watch?v=vAMyfvtxxdQ&t=5s

6. 5 декораторов Python для Data Science проектов - https://www.youtube.com/watch?v=rxq11WHAlqU

7. ChatGPT + Midjouney на практике - https://www.youtube.com/watch?v=2gUqbc3Ikmo&t=5s

8. Разбор вопросов с собеседований Python - https://www.youtube.com/watch?v=4L1e-A3AOL4&t=5s

9. 15 полезных лайфхаков с кодом Машинного обучения на Python - https://www.youtube.com/watch?v=loOtlwcdiBA&t=4s

10. Декораторы Python, которые выведут ваш код на новый уровень - https://www.youtube.com/watch?v=qxrGAogl4iM

11. 7 инструментов Python, который должен знать каждый специалист машинного обучения - https://www.youtube.com/watch?v=RGEftBi0C9Y

12. Как загружать данные в SQL в 20 раз быстрее на Python
- https://www.youtube.com/watch?v=eyeR1uWLnpM&t=2s

13. Data Science. Полезные советы по библиотеке Pandas - https://www.youtube.com/watch?v=neXc5Q-AWXY&t=3s

14. Data Science. Полезные советы по библиотеке Pandas - https://www.youtube.com/watch?v=neXc5Q-AWXY&t=3s

15. Дзен Python ООП: лучшие практики и шаблоны проектирования Python - https://www.youtube.com/watch?v=_MtX6QFJBRU

16. Python itertools. Хитрый способ избежать вложенных циклов - https://www.youtube.com/watch?v=TSvjYKIY01I&t=3s

17. Python. Генерация списка, словаря или множества в одну строку кода - https://www.youtube.com/watch?v=zS3HePvtxVc&t=10s

18. 8 крутых способов свести функции Python в одну строку - https://www.youtube.com/watch?v=jo3Q-rMggXk

19. Python itertools.compress. Удобный способ фильтрации данных - https://www.youtube.com/watch?v=8JGHID-_ApU&t=12s

20. Python Match/Case - https://www.youtube.com/watch?v=U_-NIKbKakM

21. Data Science. Советы по написанию эффективного кода на Python - https://www.youtube.com/watch?v=1Mcy-uatp_c&t=14s

22. Numpy векторизация вместо циклов в Python - https://www.youtube.com/watch?v=c7ypD2xet0E

🎞 Все видео по анализу данных

@pro_python_code
Please open Telegram to view this post
VIEW IN TELEGRAM
🖨Как построить сканер SQL-инъекций на Python

SQL-инъекция – это техника инъекции кода, которая используется для выполнения SQL-запросов через данные, вводимые пользователем в уязвимое веб-приложение. Это одна из самых распространенных и опасных техник взлома веб-приложений.

Установим необходимые библиотеки для этого урока:
pip3 install requests bs4

Импортируем необходимые модули:
import requests
from bs4 import BeautifulSoup as bs
from urllib.parse import urljoin
from pprint import pprint

# initialize an HTTP session & set the browser
s = requests.Session()
s.headers["User-Agent"] = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36"


Мы также инициализировали сессию запросов и установили пользовательский агент.

Поскольку SQL-инъекция – это все о пользовательском вводе, нам нужно будет сначала извлечь веб-формы. Нам понадобятся следующие функции:
def get_all_forms(url):
"""Given a `url`, it returns all forms from the HTML content"""
soup = bs(s.get(url).content, "html.parser")
return soup.find_all("form")


def get_form_details(form):
"""
This function extracts all possible useful information about an HTML `form`
"""
details = {}
# get the form action (target url)
try:
action = form.attrs.get("action").lower()
except:
action = None
# get the form method (POST, GET, etc.)
method = form.attrs.get("method", "get").lower()
# get all the input details such as type and name
inputs = []
for input_tag in form.find_all("input"):
input_type = input_tag.attrs.get("type", "text")
input_name = input_tag.attrs.get("name")
input_value = input_tag.attrs.get("value", "")
inputs.append({"type": input_type, "name": input_name, "value": input_value})
# put everything to the resulting dictionary
details["action"] = action
details["method"] = method
details["inputs"] = inputs
return details


Функция get_all_forms() использует библиотеку BeautifulSoup для извлечения всех тегов формы из HTML и возвращает их в виде списка Python, а функция get_form_details() получает в качестве аргумента один объект тега формы и разбирает полезную информацию о форме, такую как действие (целевой URL), метод (GET, POST и т.д.) и все атрибуты поля ввода (тип, имя и значение).

Далее мы определяем функцию, которая сообщает нам, есть ли на веб-странице ошибки SQL, это будет удобно при проверке на уязвимость SQL-инъекции:

Продолжение

@pro_python_code
Как ускорить ваш код на Python

Python — это универсальный язык программирования, который широко используется в различных областях, таких как веб-разработка, анализ данных, машинное обучение и искусственный интеллект.

Одной из основных причин его популярности является простота и удобочитаемость, что облегчает разработчикам написание и понимание кода. Однако одним из недостатков Python является его производительность, которая относительно ниже по сравнению с другими языками программирования, такими как C или Java. Поэтому очень важно писать эффективный код для обеспечения оптимальной производительности.

В этой статье мы рассмотрим некоторые советы и рекомендации о том, как писать более качественный и эффективный код на Python. Эти методы могут помочь вам оптимизировать код, сократить время его выполнения и улучшить его общее состояние. Давайте начинать!

Читать

@pro_python_code
10 проектов Python для оттачивания навыков

Python, универсальный и широко используемый язык программирования, предоставляет разработчикам уникальное сочетание мощности и простоты. В этой статье мы рассмотрим десять программ Python, которые демонстрируют возможности языка и то, как Python упрощает написание кода сложных задач.

Читать

@pro_python_code
🗣Создаем проект по распознаванию речи в Python

Распознавание речи – это технология, позволяющая преобразовывать человеческую речь в цифровой текст. В этом руководстве вы узнаете, как выполнить автоматическое распознавание речи с помощью Python.

В этом практическом руководстве, вы научитесь использовать:

Библиотека SpeechRecognition: Эта библиотека содержит несколько движков и API, как онлайн, так и офлайн. Мы будем использовать Google Speech Recognition, так как он быстрее запускается и не требует ключа API. У нас есть отдельный учебник по этому вопросу.
API Whisper: Whisper – это надежная модель распознавания речи общего назначения, выпущенная OpenAI. API стал доступен 1 марта 2023 года. Мы будем использовать API OpenAI для распознавания речи.
Работать с Whisper, которая имеет открытый исходный код. Поэтому мы можем напрямую использовать наши вычислительные ресурсы для выполнения ASR. У нас будет гибкость и возможность выбора, какой размер модели Whisper использовать.

📌 Читать

@pro_python_code
🖥 Необычные фишки Python.

1. Есть оператор “else”, но нет “if”

В Python можно использовать оператор “else” без “if”.

leaders = ["Elon", "Tim", "Warren"]

for i in leaders:
if i == "Yang":
print("Yang is a leader!")
break
else:
print("Not found Yang!")

2. Изменение неизменяемого кортежа

tp = ([1, 2, 3], 4, 5)
tp[0].append(4)
print(tp)
# ([1, 2, 3, 4], 4, 5)

Это происходит потому, что изменяемость вложенных объектов Python зависит от каждого объекта. tp  —  неизменяемый кортеж, но первый элемент tp  —  список, который является изменяемым.

3. 256 — это 256, но 257 — не 257

Иногда результаты при проверке на равенство чисел в Python могут удивить:

>>> a=256
>>> b=256
>>> a is b
True
>>> x=257
>>> y=257
>>> x is y
False

Для экономии времени и затрат памяти Python предварительно загружает все малые целые числа в диапазоне [-5, 256]. Поэтому, когда объявляется целое число в этом диапазоне, Python просто ссылается на кэшированное целое число и не создает новый объект.

a и b  —  один и тот же объект, но x и y  —  два разных объекта.

Чтобы убедиться в этом, выведем id каждой переменной:

>>> id(a)
1696073345424
>>> id(b)
1696073345424
>>> id(x)
1696122928496
>>> id(y)
1696122928752

Этот механизм называется интернированием целых чисел или кэшированием целых чисел.

Но что выведет следующий код? Снова False?

>>> 257 is 257
Python всегда старается сделать все возможное, чтобы сохранить ясность. Поскольку две переменные не были определены отдельно, Python получит достаточно контекста в рамках однострочной команды и на этот раз выведет True.

4. Интернирование строк
Подобно механизму интернирования целых чисел, Python также кэширует строки небольшого размера для экономии вычислительных ресурсов.

Рассмотрим пример:

>>> a = "Yang"
>>> b = "Yang"
>>> a is b
True
>>> c = "Yang Zhou"
>>> d = "Yang Zhou"
>>> c is d
False

Для приведенного выше примера был использован CPython с алгоритмом кэширования AST optimizer. Этот алгоритм может кэшировать до 4096 символов, но строки, включающие пробелы, не будут интернированы.

5. 0,1+0,2 — это не 0,3
Все знают, что 0,1+0,2 равно 0,3, но Python так не считает:

print(0.1+0.2==0.3)
# False

Каков же результат вычисления 0,1+0,2 в Python, если не 0,3?

print(0.1+0.2)
# 0.30000000000000004

По правде говоря, это не вина Python. Ни один компьютер не может точно вычислить плавающее значение.

6. “+=” быстрее, чем “=”
При конкатенации строк в Python операторы += и + могут дать один и тот же результат, но с разными временными затратами:

import timeit

print(timeit.timeit("s1 = s1 + s2 + s3", setup="s1 = ' ' * 100000; s2 = ' ' * 100000; s3 = ' ' * 100000", number=100))
# 0.7268792000000001
print(timeit.timeit("s1 += s2 + s3", setup="s1 = ' ' * 100000; s2 = ' ' * 100000; s3 = ' ' * 100000", number=100))
# 0.3451913999999999

При конкатенации более двух строк в Python оператор += быстрее, чем +. Поскольку +=  —  это операция in-place (на месте), время на создание нового объекта будет сэкономлено по сравнению с операцией +.

7. Три точки
Если вам потребуется заполнитель для Python-функции, вы, скорее всего, воспользуетесь ключевым словом pass:

def my_func():
pass

Но есть и другой способ сделать это:

def my_func():
...


8. Оператор “with”
Ни в одном другом языке программирования нет такого оператора, поэтому он удивляет начинающих в Python.

with open("test.txt",'w') as f:
f.write("Yang is writing!")

Оператор “with”  —  это синтаксический сахар для управления контекстом. Используя его, вы можете не прописывать явно функцию close() для закрытия файла, поскольку он будет закрыт автоматически после использования.

9. Префиксные операторы * и **

При чтении проектов Python с открытым исходным кодом вам, вероятно, неоднократно встречался следующий стиль определения функции:

def func(*args, **kwargs):
pass

Что означают эти странные звездочки?

Параметр с префиксом * может собрать любое количество позиционных аргументов в tuple.

C помощью звездочек можно производить распаковку итерируемых переменных

@pro_python_code
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 13 интересных скриптов Python

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

Вы не сможете решить эти проблемы с помощью простого базового синтаксиса Python. В этой статье я расскажу о 13 продвинутых скриптах Python, которые могут стать полезными инструментами в вашем проекте.

Читать дальше

@pro_python_code
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Numpy векторизация вместо циклов в Python

🎞 Video

@pro_python_code
Please open Telegram to view this post
VIEW IN TELEGRAM
🐍 10 проектов на Python для начинающих

1. Игра “Виселица

Инструкции: Создайте классическую игру “Виселица”. Предложите пользователю угадывать слово по буквам до тех пор, пока он не угадает его правильно или пока не закончатся попытки.
import random

def hangman():
words = ['python', 'hangman', 'programming', 'code']
word = random.choice(words)
guesses = ''
attempts = 6

while attempts > 0:
for char in word:
if char in guesses:
print(char, end=' ')
else:
print('_', end=' ')
print()

guess = input("Guess a letter: ")
guesses += guess

if guess not in word:
attempts -= 1

if set(word) <= set(guesses):
print("Congratulations! You guessed the word.")
break
elif attempts == 0:
print("Sorry, you ran out of attempts. The word was", word)

hangman()


2. Калькулятор


Инструкции: Постройте простой калькулятор, выполняющий основные арифметические операции (+, -, *, /) над двумя числами.
def calculator():
num1 = float(input("Enter the first number: "))
operator = input("Enter an operator (+, -, *, /): ")
num2 = float(input("Enter the second number: "))

if operator == '+':
print(num1 + num2)
elif operator == '-':
print(num1 - num2)
elif operator == '*':
print(num1 * num2)
elif operator == '/':
print(num1 / num2)
else:
print("Invalid operator")

calculator()


3. Угадайте число

Инструкции: Создайте игру, в которой компьютер генерирует случайное число, а игрок пытается угадать его за определенное количество попыток.
import random

def guess_the_number():
number = random.randint(1, 100)
attempts = 0

while True:
guess = int(input("Take a guess: "))
attempts += 1

if guess < number:
print("Too low!")
elif guess > number:
print("Too high!")
else:
print("Congratulations! You guessed the number in", attempts, "attempts.")
break

guess_the_number()

4. Список дел

Инструкции: Создать приложение для составления списка дел, позволяющее пользователю добавлять, просматривать и удалять задачи.
def todo_list():
tasks = []

while True:
print("1. Add a task")
print("2. View tasks")
print("3. Remove a task")
print("4. Quit")

choice = input("Enter your choice: ")

if choice == '1':
task = input("Enter a task: ")
tasks.append(task)
elif choice == '2':
if tasks:
print("Tasks:")
for task in tasks:
print(task)
else:
print("No tasks.")
elif choice == '3':
if tasks:
task = input("Enter the task to remove: ")
if task in tasks:
tasks.remove(task)
print("Task removed.")
else:
print("Task not found.")
else:
print("No tasks.")
elif choice == '4':
break
else:
print("Invalid choice. Try again.")

todo_list()


Продолжение

@pro_python_code
10 наиболее часто задаваемых вопросов о списках Python на Stack Overflow

Список — это встроенная структура данных в Python. Он представлен в виде набора данных в квадратных скобках и может использоваться для хранения данных разных типов.

В этой статье мы рассмотрим 10 наиболее часто задаваемых вопросов о списках Python на Stack Overflow.

Читать

@pro_python_code