Код на салфетке
2.24K subscribers
749 photos
15 videos
2 files
792 links
Канал для тех, кому интересно программирование на Python и не только.

Сайт: https://pressanybutton.ru/
Чат: https://t.iss.one/+Li2vbxfWo0Q4ZDk6
Заметки автора: @writeanynotes

Реклама и взаимопиар: @Murzyev1995
Сотрудничество и др.: @proDreams
Download Telegram
108❤‍🔥3🔥3
Channel photo updated
Сравнение hash map С/C++ с dict Python (часть 1)
Автор: Eugene Kaddo

Данная статья расскажет чем отличаются hash map C/C++ от dict Python и как их реализовать.


Читать пост в Telegram

Файлы к посту, можно получить в боте по коду: 301030

Пост на сайте
Поддержать проект на Boosty
Поддержать проект в Telegram

#Python #Сравнение_Python_и_C #C #C++ #hash_map #hash_table #dict
🔥7👍1
Записали новое видео, посвящённое выводу и лимитам Telegram Stars.
В видео поменяли оформление, расскажите, как вам?

Смотреть на YouTube.

Будем благодарны, если досмотрите видео до конца и поставите лайк. Это покажет YouTube, что видео интересное и, что его следует рекомендовать. Спасибо!

А если у вас проблемы с доступом к YouTube, то видео можно посмотреть и на других платформах:

- Ссылка на VK Video
- Ссылка на Dzen
- Ссылка на RuTube
- Ссылка на "Платформу"
🔥102👍1
Приветствую всех, друзья!

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

Этот фильм погружает нас в мир хакеров и цифровых технологий, где границы между реальностью и виртуальностью становятся всё более размытыми. Главный герой, молодой и талантливый хакер Бенджамин, стремится выйти из тени и стать известным. Но его путь к славе оказывается не таким простым, как он предполагал.

Фильм: Кто я

Год: 2014

"Кто я" — это не просто триллер, это глубокий взгляд на современное общество и его зависимость от технологий. Фильм поднимает важные вопросы о безопасности, анонимности и личной ответственности в цифровую эпоху. Приготовьтесь к напряжённому и увлекательному просмотру, который заставит вас задуматься о том, кто мы на самом деле в этом мире информации и иллюзий.

Устраивайтесь поудобнее, включайте фильм и наслаждайтесь просмотром!
👍4🔥31
Что выведет код? №34
🔥51🥰1
Записали видео с разбором задачи. Текстовая версия будет через пару часов.

Смотреть на YouTube.

Будем благодарны, если досмотрите видео до конца и поставите лайк. Это покажет YouTube, что видео интересное и, что его следует рекомендовать. Спасибо!

А если у вас проблемы с доступом к YouTube, то видео можно посмотреть и на других платформах:

- Ссылка на VK Video
- Ссылка на Dzen
- Ссылка на RuTube
- Ссылка на "Платформу"
🔥6👍1👏1
Задача с классом MyList, на первый взгляд, кажется простой, но в ней скрыт небольшой подвох, связанный с работой метода __getitem__ и поведением индексов. Верно ответили 17% из 29-ми человек. Самым популярным ответом с 49% голосов, оказался подвох с индексами. Давайте разберёмся.


Код задачи:
class MyList:
def __init__(self, data):
self.data = data

def __getitem__(self, index):
value = self.data[index]
if isinstance(value, list):
return MyList(value)
return value

def __repr__(self):
return "Something"

lst = MyList([10, [20, 30], 40])

print(lst[0], lst[1], lst[1][1], lst[2][1])


Разбор задачи
1. Создаём класс MyList, принимающий в конструкторе список data и, сохраняющий его во внутренний атрибут self.data.
2. Dunder-метод __getitem__ позволяет обращаться к элементам списка через экземпляры класса MyList. Он делает следующее:
- Извлекает элемент по индексу.
- Если элемент является списком, он оборачивает его в новый объект MyList.
- Если элемент не список, он возвращается как есть.
3. Dunder-метод __repr__ отвечает за строковое представление объекта и всегда возвращает строку "Something".

Далее создадим переменную lst с экземпляром класса MyList, передав ему список [10, [20, 30], 40].

Рассмотрим строку print(lst[0], lst[1], lst[1][1], lst[2][1]):
1. lst[0] — это доступ к первому элементу списка data, который равен 10. Так как это не список, метод возвращает 10.
2. lst[1] — это доступ ко второму элементу, [20, 30]. Этот элемент является списком, поэтому метод __getitem__ возвращает новый экземпляр MyList, оборачивающий этот список. При выводе в print, для этого объекта вызывается метод __repr__, который возвращает "Something".
3. lst[1][1] — это доступ ко второму элементу списка [20, 30]. Но важно заметить, что lst[1] — это объект MyList. Поэтому вызов lst[1][1] сначала вызовет метод __getitem__ у этого нового объекта, и вернёт 30, так как внутри у него хранится обычный список [20, 30].
4. lst[2] — это доступ к третьему элементу списка data, который равен 40. Этот элемент — не список, а число. Однако в коде происходит попытка доступа ко второму элементу числа 40 с помощью индекса [1], что приведёт к ошибке, потому что у целого числа нет индексов.

Правильный ответ: 2. TypeError.

Почему возникает TypeError?
Проблема кроется в выражении lst[2][1]. В списке [10, [20, 30], 40] третий элемент — это число 40, и попытка выполнить операцию индексирования с ним (доступ к элементу [1]) вызывает TypeError, так как индексы применимы только к коллекциям, но не к числам.

Таким образом, код приведёт к ошибке типа TypeError, что и является правильным ответом на задачу.
🔥6🥰1👏1
11🔥5👍1👏1🤩1🥱11
Поделитесь с нами, пожалуйста, какими платформами для просмотра наших видео вы пользуетесь чаще всего? Выберите один или несколько вариантов ответа
Anonymous Poll
45%
1. YouTube
63%
2. YouTube (несмотря на блокировку)
20%
3. VK Video
4%
4. Dzen
13%
5. RuTube
7%
6. Платформа (слышали о ней вообще?)
4%
7. Instagram
8%
8. TikTok
🔥3
FastAPI 1. Инициализация проекта
Автор: Иван Ашихмин

В этой статье начнём изучение фреймворка FastAPI, познакомимся с Poetry и инициализируем проект.


Читать пост в Telegram

Пост на сайте
Поддержать проект на Boosty
Поддержать проект в Telegram

#Python #IDE #Django #PyCharm #Гайды #DRF #JSON #OpenAPI #FastAPI #Сервис_на_FastAPI #Swagger #Бэкэнд #Poetry #Документация #VSCode
🔥9👍2👏1
Привет, друзья!

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

Фильм: Смерч 2

Год: 2024

Кейт Купер, бывшая охотница за штормами, пережившая разрушительный торнадо в колледже, теперь изучает характер штормов в Нью-Йорке. Её друг Хави убеждает её вернуться на открытую местность для тестирования новой системы слежения, где она встречает Тайлера Оуэнса, суперзвезду социальных сетей, публикующего опасные приключения в погоне за штормами. Сезон штормов усиливается, и появляются невиданные ранее явления. Кейт, Тайлер и их команды оказываются в эпицентре множества штормовых систем над центральной Оклахомой, борясь за свою жизнь.

Приятного просмотра!
🔥4
Что выведет этот код? №35
🔥3🥴1
Приветствую, на связи Иван.

Хочу рассказать вам о Лёше Кластере.
Ещё до того, как я начал программировать, я смотрел ролики Лёши на YouTube и поражался его горящим глазам. Он с интересом и знанием дела пишет программы, проекты для ретро-консолей и развивает OpenSourse. Именно с его видео начался мой путь в IT и создание многих проектов, в числе которых и наш замечательный и уютный канал.

Он недавно завёл свой Telegram-канал "Лёша Кластер Live". На нём он делится своими мыслями, рассказывает о проектах, процессе записи видео.

Хочется поддержать хорошего человека рекомендацией подписаться на его канал!
🔥7🤡2
Записали разбор вчерашней задачи!
Мы продолжаем работать над визуальной составляющей видео, напишите, как вам?

Смотреть на YouTube.

Будем благодарны, если досмотрите видео до конца и поставите лайк. Это покажет YouTube, что видео интересное и, что его следует рекомендовать. Спасибо!

P.S. Текстовый разбор через несколько часов 😉
🔥43
Задача на работу с функцией и списками может показаться немного запутанной из-за множественных присвоений и изменения элементов. Давайте разберём её пошагово, чтобы понять, почему правильный ответ именно такой. Задачу решили 16% из 30-ти человек.

Код задачи:
def shuffle_lists(x: list, y: list):
x, y = y, x
x[0], y[0] = y[0], x[0]
return x, y

a = [1, 2, 3]
b = [4, 5, 6]

c, d = shuffle_lists(a, b)
a[1] = 7
d[2] = 8

print(a, b, c, d)


Разбор задачи

Определяем функцию shuffle_lists, принимающую два списка x и y.

Внутри функции сначала происходит обмен значений переменных x и y, в этой строке:
 x, y = y, x


Теперь x ссылается на список, который изначально был y, а y ссылается на список, который изначально был x.

Затем происходит обмен первых элементов списков:
x[0], y[0] = y[0], x[0]


Теперь первый элемент нового x (который изначально был списком y) и новый y (который изначально был списком x) меняются местами.

Возвращаем кортеж изменённых списков.

Далее создаём две переменные со списками a = [1, 2, 3] и b = [4, 5, 6].
И передаём их в функцию shuffle_lists.

После выполнения функции, результат присваивается переменным c и d.
Получается следующий результат:
- Переменная d ссылается на список a и он имеет значение `[4, 2, 3].
- Переменная `c` ссылается на список b, и он имеет значение `[1, 5, 6].

Мы только изменили первые значения списков. Поскольку список, это ссылочный тип данных, то передав список в функцию и изменив его, меняется и "оригинал".

Далее, мы делаем две замены:
- Присваиваем `a[1] = 7`. Это изменяет второй элемент списка a, который теперь становится [4, 7, 3]. Это же изменяет и связанный список d.
- Присваиваем d[2] = 8. Так как d ссылается на тот же объект, что и a, изменяется третий элемент списка a, который теперь становится [4, 7, 8].

Выводим все четыре переменные на экран.

Правильный ответ: [4, 7, 8] [1, 5, 6] [1, 5, 6] [4, 7, 8].


Почему такой ответ?
Все переменные ссылаются на списки, и изменения отражаются на всех переменных, ссылающихся на тот же список. В Python списки изменяемы, и при передаче их в функции или присвоении переменных, фактически передаются ссылки на эти списки, а не их копии. Поэтому изменения в одном месте могут отразиться на всех переменных, ссылающихся на тот же объект.
🔥5🤔1
Привет, друзья!

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

Понедельник (26.08.2024) Пагинация в aiogram 3

Вторник (27.08.2024) Опрос

Четверг (29.08.2024) FastAPI 1. Инициализация проекта

Пятница (30.08.2024) Пятничный кинорелакс

Суббота (31.08.2024) Задача

Воскресенье (01.09.2024) Видео разбор субботней задачи и Текстовый разбор задачи


Спасибо, что остаетесь с нами! Надеемся, что эти материалы будут вам полезны. Удачи в новой неделе!

С уважением,
Команда канала "Код на салфетке".

#дайджест #материалы #новости #код_на_салфетке
🔥6
Tortoise ORM - Простая асинхронная альтернатива SQLAlchemy
Автор: Иван Ашихмин

В этом посте, кратко расскажу про библиотеку Tortoise ORM и о том, как она отличается от SQLAlchemy.


Читать пост в Telegram

Пост на сайте
Поддержать проект на Boosty
Поддержать проект в Telegram

#PostgreSQL #SQLite #ORM #MySQL #работа_с_БД #SQLAlchemy #Pydantic #Tortoise #ОРМ #Модели_БД #База_Данных
10🔥7👍2😱1
Что для вас важно в обучающих видео уроках? Выберите один или несколько вариантов ответа. В комментариях более полный вопрос.
Anonymous Poll
46%
Практическая сторона урока
12%
Теоретическая сторона урока
61%
Баланс теории/практики
30%
Визуальный ряд
12%
Не смотрю обучающие видео
2%
Другое (напишите свой вариант в комментарии)