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

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

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

https://t.me/pythonhub_chat - чат
Download Telegram
💁‍♂️ Задача уровень 6

Ваша задача - отсортировать заданную строку. Каждое слово в строке будет содержать одно число. Это число - позиция, которую должно занимать слово в результате.

Примечание: Цифры могут быть от 1 до 9. Таким образом, 1 будет первым словом (а не 0).

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

Пример 🤯

"is2 Thi1s T4est 3a"  -->  "Thi1s is2 3a T4est"
"4of Fo1r pe6ople g3ood th5e the2" --> "Fo1r the2 g3ood 4of th5e pe6ople"
"" --> ""

link: https://www.codewars.com/kata/55c45be3b2079eccff00010f/python
👍2
🔔Aiogram 3 нужно учить, если пишешь ботов в телеграм!

📹 Разобрались, как работать с фильтрами в Aiogram 3.x 📹
🔥 Смотрите, оценивайте, используйте 🔥

p.s. совсем забыл про отложенный выпуск видео :/
Поддержка и комментарии приветствуются☺️

https://www.youtube.com/watch?v=ZvMIdY0JjJc
👍3
Что выдаст код выше?
Anonymous Quiz
35%
True
43%
False
9%
Error
4%
None
9%
Не знаю
👍3
Python Hub - сборище Питонистов
Photo
Разбор 👨‍💻

Приводя к множеству (set) список или кортеж, мы убираем все повторения в структуре данных, а так же автоматически сортируем это множество. Таким образом, нам просто стоит убедиться, что в обоих структурах присутствуют одни и те же элементы. 1 2 3 4 5 6 есть в каждом из, так что равенство после преобразования будет верным —> True
👍3
Python Hub - сборище Питонистов
💁‍♂️ Задача уровень 6 Ваша задача - отсортировать заданную строку. Каждое слово в строке будет содержать одно число. Это число - позиция, которую должно занимать слово в результате. Примечание: Цифры могут быть от 1 до 9. Таким образом, 1 будет первым словом…
Было предложено решение от одного из наших хабовцев

s = "is2 Thi1s T4est 3a"

words = s.split()

import re

d = {}

for word in words:
num = int(re.findall(r'\d+', word)[-1])
d[num] = word

# {2: 'is2', 1: 'Thi1s', 4: 'T4est', 3: '3a'}

sorted_pairs = sorted(d.items())

result_list = []

for pair in sorted_pairs:
result_list.append(pair[1])

o = ' '.join(result_list)

print(o)

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

Думаю, кстати, стоит поговорить про регулярные выражения чуть позже.

А вот еще вариант решения, только он уже без регулярок

def order(sentence):
if sentence == "":
return ""
final = ["0"] * 9
sentence = sentence.split()
for i in sentence:
for j in range(1, 10):
if str(j) in i:
final[j - 1] = i
for i in range(final.count("0")):
final.remove("0")

return " ".join(final)


print(order('Thi1s is2 3a T4est'))


Тут логика такая, что мы сразу создаем массив из 9 элементов, куда заносим сначала просто, например, 0. Ну а дальше, мы проверяем, какое число находится в слове, после чего подставляем его на нужную позицию. Например , нашли is2 —> подставили на 2-ую позицию по индексу 1.
Ну а в конце не забываем убрать все лишние оставшиеся нули и соединить все join'ом.

Какой вариант вам понятнее?
🌭 - 1-ый
🍌 - 2-ой
🌭4👍2
❗️Что такое регулярные выражения в Python?

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

🔻 Примеры использования регулярных выражений

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

Например, вы можете использовать регулярное выражение для поиска всех email-адресов в тексте. С помощью метода findall() из модуля re вы сможете получить все совпадения с заданным шаблоном.

import re

text = "Это мой email: example@example.com"
pattern = r"\\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Z|a-z]{2,}\\b"

emails = re.findall(pattern, text)
print(emails) # Output: ['example@example.com']


Ссылка на доку: https://docs.python.org/3/library/re.html
👍2
Python Hub - сборище Питонистов
Photo
Разбор 👨‍💻

Есть пустой словарь d. Далее мы бежим циклом по числам от 0 до 9 и заносим эти числа в наш словарь. В ключ мы заносим сами числа 0 - 9, а в значение каждому ключу прибавляем +1 —> 1-10.

Далее у нас блок try-except, который может отлавливать ошибки. Когда мы пытаемся обратиться по ключу [-1], то вылетает ошибка —> мы не в списке!! мы в словаре! у нас есть ключи, состоящие из чисел 0 - 9, какой тут -1??

Ошибка ловится в except —> выводится значение по ключу 4 —> а это было 4+1 —> 5.

Ответ: 5
👍4
❗️ Что за библиотека Werkzeug в Python?


Werkzeug предлагает множество полезных функций для разработки веб-приложений. Одной из главных особенностей этой библиотеки является ее простота использования. Werkzeug предоставляет простой API для обработки HTTP-запросов и ответов, а также для работы с URL-адресами. Она также поддерживает различные протоколы, такие как WSGI (Web Server Gateway Interface), что делает ее идеальным выбором для создания веб-приложений в Python.

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

🔻Преимущества:

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

Еще одним преимуществом Werkzeug является его интеграция с популярными фреймворками веб-разработки, такими как Flask и Django.
👍2
❗️ Кто вообще такой этот ваш ООП в программировании? (базово)


ООП
- это сокращение от "объектно-ориентированное программирование". Это парадигма программирования, которая использует объекты и их взаимодействие для решения задач. ООП стал широко распространенным подходом в программировании, и понимание его основных концепций может быть полезным для разработчиков.

🔻 Преимущества ООП

ООП предлагает ряд преимуществ, которые делают его популярным подходом в программировании.

Во-первых, ООП способствует повышению переиспользуемости кода. Разработчики могут создавать модули и классы, которые можно использовать в разных проектах.

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

В-третьих, ООП позволяет создавать более надежные программы. Благодаря инкапсуляции и строгой организации кода, ошибки и проблемы могут быть обнаружены.
👍51
❗️ Что называется объектом в Python?

Объекты - это экземпляры классов, и классы являются шаблонами для создания объектов. Каждый объект имеет свои собственные атрибуты (переменные, данные) и методы (функции, действия), которые определяют его поведение и взаимодействие с другими объектами.

Например, если у нас есть класс "Автомобиль", мы можем создать несколько объектов этого класса, таких как "Машина1" и "Машина2". У каждого объекта будет свой набор атрибутов, таких как "марка", "модель" и методов, таких как "завести двигатель" или "передвинуться вперед".

🔻 Преимущества использования объектов в Python

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

Во-вторых, объекты позволяют создавать сложные структуры данных и абстракции. Мы можем создавать классы, которые представляют реальные или воображаемые объекты, и определять, их взаимодействие друг с другом.
👍3
Python Hub - сборище Питонистов
❗️ Что называется объектом в Python? Объекты - это экземпляры классов, и классы являются шаблонами для создания объектов. Каждый объект имеет свои собственные атрибуты (переменные, данные) и методы (функции, действия), которые определяют его поведение и…
На самом деле, при работе с переменными, мы тоже работаем с объектами, ведь переменные - это по-сути своей ссылки на объекты.

Поэтому любой код в Python, даже тот, который написан новичком, уже работает с объектами😎

Не зря говорят "В Python практически все является объектом."
👍3
Кто-то помнит, как решать задачи на LinkedList?

Вдруг кто-то захочет попрактиковаться 💪 (позже будет решение, которое я нашел)
Я вот лично забыл уже все это🙃

Вот заготовка: (функция должна возвращать голову с другой стороны)

# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next

class Solution:
def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]:
👍2
🧐 Чем может отличаться подход написания приложения через класс и не через класс? 🧐

🔥 Разобрались на примере Tkinter приложения, как использовать ООП🔥

https://youtu.be/g9m0oTjN48s?si=K2GrmhPrkuqRC2mJ
👍2
Python Hub - сборище Питонистов
Кто-то помнит, как решать задачи на LinkedList? Вдруг кто-то захочет попрактиковаться 💪 (позже будет решение, которое я нашел) Я вот лично забыл уже все это🙃 Вот заготовка: (функция должна возвращать голову с другой стороны) # Definition for singly-linked…
А вот и решение:

class Solution:
def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]:
"""
:type head: ListNode
:rtype: ListNode
"""

# Iteration approach
# Run one pointer p in list. At each iteration:
# 1. n = p.next
# 2. p.next = n.next, jump cross n
# 3. n.next = head, n prepend to the front
# 4. head = n, reassign head

if head == None:
return None

p = head
while p.next:
n = p.next
p.next = n.next
n.next = head
head = n

return head
👍2
🔔Продолжаем решать простые Python задачи на сайте Codewars уровня 7kyu

📹 Уровень типикал джун, а может даже и чуть ниже 📹
🔥 Смотрите, прикрепляйте свои варианты решений в комментарии, задавайте вопросы тут или под видео!🔥

https://www.youtube.com/watch?v=aW9o7Zuxuh0
👍5