Python Hub - сборище Питонистов
1.71K subscribers
657 photos
1 video
37 files
276 links
Уголок счастья для любого питониста.

Сотрудничество или заказы: @leshunist

https://shcoder.dev - студия разработки ShcoderDevelopment

https://t.me/pythonhub_chat - чат
Download Telegram
❗️ Что такое Linked List в примере на Python'e?


Linked List (связанный список) - это структура данных, которая позволяет хранить и организовывать элементы в памяти компьютера. Он состоит из узлов, каждый из которых содержит данные и ссылку на следующий узел. Отличительной особенностью связанного списка является то, что элементы могут быть расположены в разных областях памяти и связаны между собой с помощью ссылок.

👩‍💻 Пример на Python

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

class Node:
def __init__(self, data):
self.data = data
self.next = None


Затем мы создадим класс LinkedList, который будет представлять сам связанный список. У него будет ссылка на первый узел списка (голова).

class LinkedList:
def __init__(self):
self.head = None


Теперь мы можем добавить методы для работы со связанным списком, такие как добавление элемента и вывод списка.

class LinkedList:
def __init__(self):
self.head = None

def append(self, data):
new_node = Node(data)
if self.head is None:
self.head = new_node
else:
current = self.head
while current.next:
current = current.next
current.next = new_node

def display(self):
current = self.head
while current:
print(current.data)
current = current.next


Теперь мы можем создать экземпляр класса LinkedList и использовать его для создания и отображения связанного списка.

linked_list = LinkedList()
linked_list.append(1)
linked_list.append(2)
linked_list.append(3)
linked_list.display()


Вывод:

1
2
3


🧐 А приходилось ли вам где-то применять знания Linked List'ов?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🤯1
Что выдаст код выше?
Anonymous Quiz
30%
True
29%
False
7%
None
23%
Error
11%
Не знаю
👍7
Python Hub - сборище Питонистов
Photo
Разбор 👨‍💻

В переменную L будет помещен список [1, 1, 1, 2, 2, 2]
Далее мы считаем длину set'a этого списка. set убирает все повторяющиеся элементы —> длина 1, 2 —> 2
Далее то же самое, только со всей длиной списка —> 6

Задача на внимательность: выводим выражение 2 in 6 —> мы не можем in'ом проверять int в int'е.
Ответ: ошибка
кто попался?
💀
Please open Telegram to view this post
VIEW IN TELEGRAM
😁2🤯1
Оператор моржа в Python :=


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

Оператор моржа в Python обозначается двумя символами ":= ", за которыми следует символ ">" для сравнения. Этот оператор может быть использован в выражениях if и while, чтобы одновременно проверить условие и присвоить значение переменной. Например:

if (x := some_function()) > 10:
print("x is greater than 10")
else:
print("x is less than or equal to 10")


В этом примере, если значение, возвращаемое функцией some_function(), больше 10, то оно будет присвоено переменной x, и будет выведено сообщение "x is greater than 10". В противном случае будет выведено сообщение "x is less than or equal to 10".

Преимущества использования оператора моржа

Оператор моржа предлагает несколько преимуществ, которые могут значительно упростить кодирование. Во-первых, он позволяет объединить проверку условия и присваивание значения в одной строке, что делает код более компактным и легким для чтения. Во-вторых, он устраняет необходимость использования временных переменных для хранения результатов выражений, что уменьшает количество кода и повышает эффективность. Наконец, оператор моржа может быть использован в циклах, что позволяет более эффективно использовать ресурсы и улучшить производительность программы.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
🔐 Модуль secrets в Python: Защита вашей информации

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

🔑 Функции модуля secrets:

1. secrets.choice(sequence): Выбирает случайный элемент из последовательности. Полезно для генерации случайных выборок или паролей из определенного набора символов.

2. secrets.randbelow(n): Возвращает случайное число от 0 до n-1. Используется для генерации случайных чисел в определенном диапазоне.

3. secrets.randbits(k): Генерирует k случайных битов. Полезно для создания случайных битовых строк или чисел.

4. secrets.token_bytes(nbytes=None): Генерирует безопасную случайную последовательность байтов длиной nbytes (по умолчанию - 32 байта).

5. secrets.token_hex(nbytes=None): Генерирует безопасную случайную строку в шестнадцатеричном формате длиной nbytes (по умолчанию - 32 байта).

6. secrets.token_urlsafe(nbytes=None): Генерирует безопасную случайную URL-совместимую строку длиной nbytes (по умолчанию - 32 байта).

7. secrets.compare_digest(a, b): Сравнивает две строки для предотвращения временных атак. Это полезно при сравнении хэшей паролей или токенов без утечки информации о длине сравниваемых строк.

🔍 Почему использовать secrets лучше?
- secrets предоставляет криптографически безопасные данные, что делает их сложными для предсказания.
- Эти функции обеспечивают высокий уровень безопасности при генерации случайных данных, паролей и токенов в Python.

Используйте модуль secrets для защиты вашей информации и обеспечения безопасности ваших данных в Python. 🔐
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
🤟 Суббота - время отдыхать и решать задачки на Codewars или leetcode? 🤟

💻 В этот раз задачи решаю на кодварс — закрываю год на любимом алгоритмическом сайте!

https://youtu.be/6y19_r6XxvE
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
⭕️ Создать список, который хранит в себе объекты в Python (на примере списка с людьми)


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

👀 1. Создание класса

Для начала, давайте создадим класс, который будет представлять людей. Класс будет иметь атрибуты "имя" и "возраст". Вот пример такого класса:

class Person:
def __init__(self, name, age):
self.name = name
self.age = age


👀 2. Создание объектов

Теперь, когда у нас есть класс, мы можем создать объекты на его основе. Например, давайте создадим двух людей:

person1 = Person("John", 25)
person2 = Person("Alice", 30)


👀 3. Помещение объектов в список

Чтобы поместить объекты в список, мы можем использовать метод append(). Например, чтобы создать список людей и добавить туда наших двух людей, мы можем написать следующий код:

people = []
people.append(person1)
people.append(person2)


Теперь у нас есть список people, в котором хранятся объекты, представляющие двух людей.

👀 4. Обращение к объектам в списке

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

first_person_name = people[0].name


Теперь в переменной first_person_name будет храниться значение "John".
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
🥳Привет, Python и не Python герои! 🐍

С наступающим 2024 годом! 🥳

От имени всей команды сообщества Shcoder, мы желаем вам бесконечного цикла успеха и счастья, чтобы ваш код всегда был чистым, а переменные — всегда именованными с любовью! 💻❤️

Пусть новый год принесет вам меньше багов, больше интересных проектов и нового опыта! 🎁🐞

Пусть ваши проекты будут масштабируемыми, а итерации — всегда успешными! 🔄🚀

Пусть у вас всегда будет актуальная и понятная документация! 📚🤝

С наступающим вас, Шкодеры! Пусть 2024 год будет полон новых версий ваших идей! 🥳🔍

🥳🥳🥳 УРА! 🥳🥳🥳
Please open Telegram to view this post
VIEW IN TELEGRAM
👨‍💻5👍3🥰1🤯1
Кэширование результатов функций в Python 🐍



💬 Что такое кеширование?

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


Как это сделать?

В Python есть модуль functools, включающий декоратор lru_cache, который автоматически кеширует результаты функции.


🥸 Зачем это нужно?

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

Пример:
from functools import lru_cache

@lru_cache(maxsize=20) # 20 - это максимальное количество "запоминаний"
def fibonacci(n):
if n < 2:
return n
return fibonacci(n-1) + fibonacci(n-2)

print(fibonacci(10)) # Первый вызов - вычисляем
print(fibonacci(10)) # Результат уже закеширован




💻 Теперь вы знаете, как использовать кеширование в Python для улучшения производительности кода.

Оставайтесь с нами для еще больше интересной информации о Python! 😉
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
❗️ Округление чисел в Python


➡️ Функция round()

Один из самых простых способов округления числа в Python - использовать встроенную функцию round(). Функция round() округляет число до ближайшего целого значения. Например, если у нас есть число 3.7, функция round() округлит его до 4, а если у нас есть число 3.4, оно будет округлено до 3. Важно отметить, что если дробная часть числа равна 0.5, функция round() округлит число в сторону ближайшего четного значения. Например, число 2.5 будет округлено до 2, а число 3.5 будет округлено до 4.

num1 = 3.7
num2 = 3.4

rounded_num1 = round(num1)
rounded_num2 = round(num2)

print(rounded_num1) # Output: 4
print(rounded_num2) # Output: 3


➡️ Методы floor() и ceil()

Кроме функции round(), в Python также доступны методы floor() и ceil(). Метод floor() округляет число до наибольшего целого значения, которое меньше или равно данному числу. Например, если у нас есть число 4.8, метод floor() округлит его до 4. С другой стороны, метод ceil() округляет число до наименьшего целого значения, которое больше или равно данному числу. Например, если у нас есть число 2.2, метод ceil() округлит его до 3.

import math

num = 4.8

floored_num = math.floor(num)
ceiled_num = math.ceil(num)

print(floored_num) # Output: 4
print(ceiled_num) # Output: 5


➡️ Модуль math

Еще один способ округления чисел в Python - использование модуля math. Модуль math предоставляет различные функции для работы с числами, включая функции округления. Например, функция math.floor() эквивалентна методу floor(), а функция math.ceil() эквивалентна методу ceil(). Кроме того, модуль math также предоставляет функции округления вниз и вверх до ближайшего целого значения, а также функцию для округления до определенного количества знаков после запятой.

import math

num = 3.7

floored_num = math.floor(num)
ceiled_num = math.ceil(num)

print(floored_num) # Output: 3
print(ceiled_num) # Output: 4
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Что выдаст код выше?
Anonymous Quiz
5%
12
2%
6
61%
222222
2%
222
9%
66
20%
Error
1%
Не знаю
👍3
Python Hub - сборище Питонистов
Photo
Разбор 👨‍💻

'2' + '2' —> '22' текстовый формат.
При умножении текста на число, текст дублируется столько раз, чему равно число.
В нашем случае '22' * 3 —> '222222'

Если было бы, например 'hello' * 3 —> 'hellohellohello'
Please open Telegram to view this post
VIEW IN TELEGRAM
👍41
Умер создатель языка программирования Pascal Николаус Вирт

Ему было 89 лет.
По данным iTWire, Вирт умер в своём доме в окружении родных 1 января 2024 года.

Почитать подробнее можно тут

Кто из вас писал на паскале? 🖥
Please open Telegram to view this post
VIEW IN TELEGRAM
👨‍💻6
‼️‼️

📹 Думаю, что один из последних видосов по Tkinter вышел на канале! 📹

Есть тут еще олдовые любители Tk GUI?


(показываю варианты реализации paint приложения, ссылаясь на авторов. Все исходники в описании)

https://www.youtube.com/watch?v=YtTAdFCWsHc
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
👩‍💻 Лучшие пакеты PyPi !?

Решил проверить, какие вообще самые популярные (по каким-то критериям, хз сам каким) библиотеки на PyPi

PyPI (Python Package Index) — это официальный репозиторий пакетов для языка программирования Python. Здесь собраны тысячи библиотек, модулей и приложений, которые могут быть полезны для разработчиков Python.

https://pypistats.org/top
https://hugovk.github.io/top-pypi-packages/

Вот два ресурса. Мне понравился больше первый.

Для ленивых предлагаю скрин!

Стоит ли вообще сделать краткий обзор этих либ из списка?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4