Jebus | AI Design
2.05K subscribers
817 photos
37 videos
3 files
146 links
Промты для дизайна: свет, стиль, референсы.

🔥 Сохрани → сгенерируй

Библиотека промтов: @takeit4
Download Telegram
👩‍💻 Интересный факт про питон

Одной из уникальных и забавных особенностей Python является возможность использования ключевого слова else вместе с циклами for и while. В других языках программирования такое использование ключевого слова else встречается крайне редко или вовсе отсутствует.

В Python блок else в цикле выполняется, когда цикл завершается "естественным образом", то есть без использования ключевого слова break. Это может быть полезно для того, чтобы отличить завершение цикла по естественной причине от завершения из-за прерывания.

Пример:
# Пример использования else с циклом for
for i in range(5):
if i == 3:
print("Нашли 3, выходим из цикла")
break
else:
print("Цикл завершился без прерывания")

# Пример использования else с циклом while
n = 0
while n < 5:
if n == 3:
print("Нашли 3, выходим из цикла")
break
n += 1
else:
print("Цикл завершился без прерывания")


В первом примере цикл for прерывается, когда i становится равным 3, поэтому блок else не выполняется. Во втором примере аналогично, цикл while прерывается при n == 3, и блок else также не выполняется.
Если бы в обоих случаях условие прерывания не было выполнено, блоки else были бы выполнены, что позволяет легко проверить, завершился ли цикл по естественной причине или был прерван.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍41🔥1
Есть проблемы с ютубом?
Anonymous Poll
50%
Да
50%
Нет
🥴1
This media is not supported in your browser
VIEW IN TELEGRAM
Как на счет забацать свой валдберист, потягивая кофеек и смотря на закат?

Недавно начал разбираться с библиотекой flet. Эта библиотека позволяет делать симпатичный интерфейс, причем адаптированный для web. А также компилируется одинаково для любой системы. Поскольку ничего полезного делать я не умею, я решил сделать онлайн магазин. Базовый с минимумом функий. Оказалось это очень просто.

👩‍💻 Исходный код доступен по 👉🏻 ссылке 👈🏻

Для того, чтобы собрать это в *.exe используем функцию на windows

 pyinstaller --onefile --windowed .\wb.py


В магазине есть главная страница с товарами (стакан, стол, корова), страница товара с возможностью выбрать количество и добавить товар в корзину, корзина с возможностью изменять количество товаров и оплачивать покупку, а также личный кабинет с аватаром и балансом пользователя. Все страницы и элементы интерфейса создаются и обновляются динамически при взаимодействии пользователя с кнопками и другими элементами управления. Реализуется все благодаря внутренним функция flet, причем они не такие уж и сложные.

Если интересна эта библиотека, пишите в комментарии, а также можете посоветовать мне что-то, в чем тоже стоит покопаться.

Основные функции кода:
main(page): Инициализирует приложение, устанавливает заголовок и размеры окна, определяет баланс пользователя и корзину, и вызывает главную страницу.
update_page(view): Очищает текущие элементы управления на странице, добавляет новый вид и обновляет страницу.
home_page(e=None): Создает и отображает главную страницу с товарами, кнопками навигации и их обработчиками событий.
product_page(e, product): Создает и отображает страницу товара с возможностью выбрать количество, добавить товар в корзину и вернуться на главную страницу.
cart_page(e=None): Создает и отображает корзину с товарами, их количеством, общей стоимостью и кнопкой для оплаты, а также кнопками навигации.
account_page(e=None): Создает и отображает личный кабинет с аватаром пользователя, балансом и кнопками навигации.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍32🔥1
Channel name was changed to «Пикод»
Задача о поиске всех простых чисел до заданного числа n 👩‍💻
Как пример влияния оптимизации кода на время решения.

Пример неоптимизированного кода для нахождения всех простых чисел до n с использованием простого перебора делителей:
def is_prime(n):
if n <= 1:
return False
for i in range(2, n):
if n % i == 0:
return False
return True

def find_primes(n):
primes = []
for i in range(2, n + 1):
if is_prime(i):
primes.append(i)
return primes

n = 100
print(find_primes(n))



Теперь улучшим этот код, используя алгоритм "Решето Эратосфена":
def sieve_of_eratosthenes(n):
is_prime = [True] * (n + 1)
p = 2
while p ** 2 <= n:
if is_prime[p]:
for i in range(p * p, n + 1, p):
is_prime[i] = False
p += 1
primes = [p for p in range(2, n + 1) if is_prime[p]]
return primes

n = 100
print(sieve_of_eratosthenes(n))


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

1. Создаем список булевых значений is_prime, где is_prime[i] указывает, является ли число i простым.
2. Начинаем с первого простого числа 2 и отмечаем все его кратные как составные (непростые).
3. Переходим к следующему неотмеченному числу и повторяем процесс.
4. Повторяем процесс до тех пор, пока квадрат текущего числа p меньше или равен n.
5. Возвращаем все числа, которые остались отмеченными как простые.

Этот алгоритм имеет временную сложность (O(n log n)), что значительно быстрее по сравнению с временной сложностью (O(n)) для простого перебора делителей.
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍2🔥1
FireFox самый быстрый браузер на сегодняшний день, если врубить эти настройки. Я сам сначала не поверил, что это настолько помогает. 💄 Теперь только с него и сижу. 10 из 10. Они уменьшают дилей на ответ с сервера, увеличивают количество запросов единовременно. А еще отключает телеметрию и покет.

В поисковой строке пишете about:support > Папка профиля > pref.js. Закрываете Firefox, в конец файла pref.js вставляете этот код,сохраняете.


//Ускоряем загрузку страниц
user_pref("network.http.pipelining", true);
user_pref("network.http.proxy.pipelining", true);
user_pref("network.http.pipelining.maxrequests", 30);
user_pref("nglayout.initialpaint.delay", 0);
user_pref("nglayout.initialpaint.delay_in_oopif", 0);

// Отключаем Pocket
user_pref("extensions.pocket.api", "");
user_pref("extensions.pocket.enabled", false);
user_pref("extensions.pocket.site", "");
user_pref("extensions.pocket.oAuthConsumerKey", "");

//Отключаем анимацию открытия видео на фуллскин и подсказку "нажмите esc.."
user_pref("full-screen-api.transition-duration.enter", "0");
user_pref("full-screen-api.transition-duration.leave", "0");
user_pref("full-screen-api.warning.timeout", 0);

//Просим сайты не отслеживать Вас
user_pref("privacy.trackingprotection.enabled", true);
user_pref("privacy.donottrackheader.enabled", true);

//Отключаем телеметрию и отправку отчетов
user_pref("toolkit.telemetry.archive.enabled", false);
user_pref("toolkit.telemetry.bhrPing.enabled", false);
user_pref("toolkit.telemetry.cachedClientID", "");
user_pref("toolkit.telemetry.firstShutdownPing.enabled", false);
user_pref("toolkit.telemetry.hybridContent.enabled", false);
user_pref("toolkit.telemetry.newProfilePing.enabled", false);
user_pref("toolkit.telemetry.previousBuildID", "");
user_pref("toolkit.telemetry.reportingpolicy.firstRun", false);
user_pref("toolkit.telemetry.server", "");
user_pref("toolkit.telemetry.server_owner", "");
user_pref("toolkit.telemetry.shutdownPingSender.enabled", false);
user_pref("toolkit.telemetry.unified", false);
user_pref("toolkit.telemetry.updatePing.enabled", false);
user_pref("datareporting.healthreport.infoURL", "");
user_pref("datareporting.healthreport.uploadEnabled", false);
user_pref("datareporting.policy.dataSubmissionEnabled", false);
user_pref("datareporting.policy.firstRunURL", "");
user_pref("browser.tabs.crashReporting.sendReport", false);
user_pref("browser.tabs.crashReporting.email", false);
user_pref("browser.tabs.crashReporting.emailMe", false);
user_pref("breakpad.reportURL", "");
user_pref("security.ssl.errorReporting.automatic", false);
user_pref("toolkit.crashreporter.infoURL", "");
user_pref("network.allow-experiments", false);
user_pref("dom.ipc.plugins.reportCrashURL", false);
user_pref("dom.ipc.plugins.flash.subprocess.crashreporter.enabled", false);

//Тонкие вкладки и поисковая строка
user_pref("browser.uidensity", 1);
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3👍1😱1
😁2❤‍🔥1👍1🔥1😢1
Игра Виселица на Python 👩‍💻

Сегодня вечером мне было нечего делать и я решил снова покорять геймдев. 👨‍💻 С flet я не разобрался и пришлось делать все на PyQT. В общем моя новинка игропрома: Виселица. Эта классическая игра теперь может стать отличным примером для тех, кто хочет практиковать свои навыки программирования и работы с GUI на Python.

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

Реализацию я видел так:

1. Выбор слова: При запуске игры случайным образом выбирается слово из списка английских или русских слов. В зависимости от выбранного слова, на экране будут отображаться соответствующие кнопки с буквами (латинские или кириллические).
2. В окне игры есть несколько элементов:
Область для рисования виселицы и человечка.
Поле для отображения угаданного слова.
Поле с количеством оставшихся попыток.
Поле, которое показывает, на каком языке загадано слово.
Поле для отображения использованных букв.

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

Ну а дальше по классике, угадал — молодец, а нет... Ну сам понимаешь😊

Попробуйте реализовать этот проект самостоятельно! Отличная тренировка.
А если хотите поиграть, вот ➡️ ссылка ⬅️ на код

@debugblog
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍1🔥1
Микрообзоры браузеров - 1
Brave
👩‍💻

Бытует ой какое ошибочное мнение, что этот браузер как-то помогает анонимности и весь такой конфиденциальный. В целом я не то, чтобы верю в анонимность браузеров на сегодняшний день, но это мое право. А этот браузер буквально построил свою рекламу на этом. На первый взгляд, браузер обещает многое: защиту конфиденциальности, быструю работу и встроенные блокировщики рекламы. Однако, мой опыт использования Brave оказался не таким радужным, и я не могу рекомендовать этот браузер.
В 2020 году Brave был уличен в автоматическом добавлении партнерских ссылок при посещении некоторых криптовалютных бирж. Это вызвало волну негодования среди пользователей. Хотя компания извинилась и устранила эту практику, сам факт такого поведения ставит под сомнение их приверженность к защите конфиденциальности пользователей.

Brave использует собственную криптовалюту BAT для вознаграждения пользователей за просмотр рекламы. Это выглядит как попытка заставить пользователей бустить их коин и не получать по факту никакой выгоды. Несмотря на заявления о блокировке рекламы, Brave активно продвигает собственные рекламные объявления через систему BAT. Чем-то напоминает яндекс браузер.

В итоге, мой опыт использования Brave Browser оказался разочаровывающим. Хотя браузер обещает много, его реализация оставляет желать лучшего. Будем искать идеал дальше.

@debugblog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍41🔥1
А что, звучит хайпово

Youtube, Google всё
👎4
Jebus | AI Design pinned Deleted message
Начал делать приложение для помощи в обучении. Пока только для информатики, потому что для других предметов не придумал. Задача простая у него: преподавателем загружается задание в виде кода с ответом. Далее ученик сверяет свой ответ и свой код (по желанию). Поскольку ответ и код решения преподавателя зашифрованы, подглядеть не получится (на самом деле получится, если хитрый и понимаешь принцип работы)
3🔥2👍1
👩‍💻 Чтобы найти максимальный элемент в массиве на языке #Python, существует несколько способов:

1. Использование встроенной функции `max`:
   max_element = max(array)

Это самый простой и быстрый способ, поскольку max оптимизирован и написан на C.

2. Использование цикла `for`:
   max_element = array[0]
for element in array:
if element > max_element:
max_element = element

Это более явный способ, но он менее эффективен, чем встроенные функции.

3. Использование функции `reduce` из модуля `functools`:
   from functools import reduce
max_element = reduce(lambda x, y: x if x > y else y, array)

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

4. Использование библиотеки `numpy`:
   import numpy as np
max_element = np.max(array)

Если массив является объектом numpy, этот метод будет очень быстрым благодаря оптимизациям библиотеки.

5. Использование многопоточности:
Для огромных массивов можно разбить задачу на части и выполнить поиск максимума параллельно. Пример с использованием concurrent.futures:
   from concurrent.futures import ThreadPoolExecutor, as_completed

def find_max(sub_array):
return max(sub_array)

def parallel_max(array, num_threads):
chunk_size = len(array) // num_threads
futures = []
with ThreadPoolExecutor(max_workers=num_threads) as executor:
for i in range(num_threads):
sub_array = array[i*chunk_size:(i+1)*chunk_size]
futures.append(executor.submit(find_max, sub_array))
results = [future.result() for future in as_completed(futures)]
return max(results)

max_element = parallel_max(array, 4) # Например, с 4 потоками

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

Самый быстрый и рекомендуемый способ — это использование встроенной функции max для стандартных массивов Python, либо функции np.max для массивов numpy, так как они написаны на C и максимально оптимизированы для производительности.

@debugblog
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍2🔥1
Покоряем геймдев (снова) 😐

Как вы знаете, я пытаюсь разобраться в разработке игр, и на этом пути решил сделать что-то максимально простое, но увлекательного. Выбор пал на "Пинг-Понг" — игру, в которую многие из нас играли.

Инициализация Pygame:
Важно было настроить основное окно и задать его размеры. Решил сделать его 800x600 пикселей — идеальный размер для классического "Пинг-Понга". Определил размеры и начальные позиции для ракеток и мяча. Каждая ракетка управляется своей клавишей — W и S для левой, и стрелки для правой. Настроил движение мяча и ракеток, а также проверку столкновений. Это самая важная часть кода! Когда мяч сталкивается с ракеткой, он меняет направление.

👩‍💻 Код доступен по ссылке

Сейчас модно зазывать людей в айти под видом работы в геймдеве, но это все можно изучать самостоятельно 👨‍💻 Как раз можете попробовать создать какой-то такой простой проект. Или нужен подробный разбор библиотеки pygame?

@debugblog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥21
Как найти медиану массива чисел на Python 👩‍💻

Медиана — это такое значение, которое делит массив на две равные части. Для нахождения медианы в массиве чисел существует несколько способов. Рассмотрим несколько из них.

1. Использование библиотеки statistics:
   import statistics

array = [3, 5, 1, 4, 2]
median = statistics.median(array)

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

2. Реализация вручную с сортировкой:
   array = [3, 5, 1, 4, 2]
sorted_array = sorted(array)
n = len(sorted_array)
mid = n // 2

if n % 2 == 0:
median = (sorted_array[mid - 1] + sorted_array[mid]) / 2
else:
median = sorted_array[mid]

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

3. Использование библиотеки numpy:
   import numpy as np

array = np.array([3, 5, 1, 4, 2])
median = np.median(array)

numpy — это мощная библиотека для научных вычислений в Python. Если массив представлен объектом numpy, этот метод будет очень быстрым и удобным.

4. Нахождение медианы для больших массивов (использование квантилей):
   import numpy as np

def find_median_large_array(array):
return np.percentile(array, 50)

large_array = np.random.randint(0, 1000, size=1000000) # Пример большого массива
median = find_median_large_array(large_array)

Этот метод полезен для очень больших массивов, так как numpy оптимизирован для работы с большими данными.

5. Использование библиотеки scipy для многомерных данных:
   from scipy import stats

array = [3, 5, 1, 4, 2]
median = stats.scoreatpercentile(array, 50)

scipy — еще одна мощная библиотека для научных и технических вычислений, которая предоставляет множество статистических функций.

Самый быстрый и простой способ — использовать функции median из модуля statistics для небольших массивов или np.median из библиотеки numpy для больших массивов, поскольку они оптимизированы и предоставляют удобные интерфейсы для вычислений.
@debugblog
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍1🔥1
Вот и до Сибири дошло замедление, у вас все также плохо с ютубом?
😢3
Поиск самого длинного слова в предложении с помощью Python 👩‍💻

Когда вам нужно найти самое длинное слово в предложении, Python предоставляет элегантное и простое решение:
sentence = 'Python is an amazing programming language'
words = sentence.split()
longest_word = max(words, key=len)
print(longest_word)


Этот код работает, разбивая предложение на отдельные слова с помощью метода split(), затем используя функцию max() для нахождения самого длинного слова. Ключевая часть — это использование параметра key=len в функции max(), который говорит Python сравнивать слова по их длине.

В итоге, если вы запустите этот код, он выведет: programming.

Этот подход универсален и может быть использован для поиска самого длинного слова в любом тексте, просто заменив строку sentence на нужное вам предложение. 👨‍💻

#study | #inf
@debugblog
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
3🔥2👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Реверсирование слов в предложении с помощью Python 👩‍💻

Если вам нужно перевернуть каждое слово в предложении, Python предоставляет простое решение, используя списковые включения и строковые методы. Давайте рассмотрим, как это сделать с помощью небольшого скрипта.
sentence = 'Hello World from Python'
words = sentence.split()
reversed_words = [word[::-1] for word in words]
result = ' '.join(reversed_words)
print(result)


Вот что делает этот код:

1. Разделение предложения на слова: sentence.split() разделяет строку на список слов, используя пробелы в качестве разделителей.
2. Реверсирование каждого слова: [word[::-1] for word in words] — это списковое включение, которое проходит по каждому слову и реверсирует его с помощью среза [::-1].
3. Сборка строки из перевернутых слов: result = ' '.join(reversed_words) объединяет перевернутые слова обратно в одну строку, разделяя их пробелами.
4. Вывод результата: Используется print(), чтобы вывести финальную строку с перевернутыми словами.

Пример:
Если вы запустите этот код с исходным предложением 'Hello World from Python', результат будет таким:
olleH dlroW morf nohtyP


Этот подход полезен, когда нужно изменить порядок букв в каждом слове, сохраняя при этом их исходную последовательность. Пример можно расширить для работы с более сложными текстами или адаптировать для специфических нужд. 👨‍💻

#study | #inf
@debugblog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31🔥1
😁31🔥1