Это копия, сохраненная 1 апреля 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Предыдущий: >>1803801 (OP)
Литература:
https://ln2.sync.com/dl/cf2c1d070#xq4s328t-xbbjys2z-9r6j7ss7-gf4e9dv6 <-- Книжки, новое собрание
Ещё книжки: https://yadi.sk/d/HQhhsBsq3TVRUq
Тоже книжки: https://yadi.sk/d/tArKKuQu3Kejuq
Больше книжек: https://yadi.sk/d/H-00n-UG3RSQem
Анон, вместо того, чтобы без разметки постить код, лучше шарь его через специальные ресурсы:
https://ideone.com/ - возможность постить листинги кода и онлайн-запуска, не требует регистрации
https://dumpz.org/ - можно постить листинги, не требует регистрации
https://pastebin.com/ - для листингов, регистрация не обязательна
https://www.codepile.net/ - можно расшарить код в том числе на редактирование, особая полезная опция - чат при каждом листинге, где можно код обсудить
https://pyfiddle.io/ - запуск python кода онлайн, но чтобы шарить, надо регистрироваться
#######################################
ЧаВо: https://github.com/TheKnightsWhoSayNi/info/wiki/Hat Актуальность примерно 2015 года
Вопросы-ответы:
— А стоит ли читать Лутца, том номер N?
Мнения в треде разделены. Кто-то за (очень неплохая база даётся), кто-то против (слишком много воды и объём книг убивает всё рвение). В общем — решать тебе, книга вредна не будет, но ты можешь её просто не дочитать и забросить.
— Стоит ли читать %книга_нейм%, если там питон версии 2.х?
Нет, не стоит. 100% есть более актуальная книга, для пистона 3.х
— А что ещё можно читать?
Питон сам по себе очень хорошо задокументирован и для уровня начинающих, и для продвинутого. Смотри официальную документацию. Можно начать вот с этого https://docs.python.org/3/tutorial/introduction.html
— Есть у кого на примете годный курс лекций по алгоритмам? Формат лекций мне как-то ближе, нежели просто чтение книги.
МФТИшный курс, например, https://www.youtube.com/playlist?list=PLRDzFCPr95fK7tr47883DFUbm4GeOjjc0
— Что можно почитать/посмотреть по многопоточности/параллелизации в питоне, да и вообще в целом?
Очень годный ролик на американском языке про многопоточность и асинхронность https://www.youtube.com/watch?v=MCs5OvhV9S4
— А как учить джангу? Нахожу только книги по джанге 1.х
У джанги отличные доки (одни из лучших для пистоновских либ, имхо), почитай их для начала. Книгу по джанге можно читать и для версий <2, это не проблема, т.к. принципы остаются теми же. Для переката на 2.х хватит changelog`a или тех же самых доков/статей. Начни изучать с разбора учебного приложения с голосовалкой из официальной документации.
— В ньюфаг-треде написано, что нужно начинать с SICP, чтобы научиться программировать
Вот, пожалуйста, та же самая программа, но переработанная под язык Python: http://composingprograms.com/ (нужно знать ангельский или уметь пользоваться переводчиком)
— Можно ли на питоне делать мобильные приложения?
Да, смотри на фреймворк Kivy https://en.wikipedia.org/wiki/Kivy_(framework) https://kivy.readthedocs.io но народ на него жалуется
— Как можно без лишней возни ускорить программу на питоне
1) проверь сначала свой код, алгоритмы и структуры данных. Чаще проблема здесь.
2) код можно иногда феерично ускорить, используя JIT (Just-in-Time) компиляцию. Почитай обязательно про модуль numba, он ставится через pip, и альтернативный интерпретатор PyPy.
— Дайте нормальные книжки на русском! Мы, блядь, не в пиндосии живём
Брат, смотри книжки по ссылкам в шапке, там есть и русские. Но помни, без языка ангелов твоя жизнь проходит мимо и ты обречён быть на обочине знаний и технологий.
Инициализирую Flask-приложение вот так:
def create_app(config_file='settings.py'):
app = Flask(__name__)
app.config.from_pyfile(config_file)
db.init_app(app)
ma.init_app(app)
app.register_blueprint(short)
return app
Далее через Blueprint
>short = Blueprint('short', __name__)
ну и далее руты.
Проблема в том, что при каждос перезапуске приложения перезаписывается и база данных. Что делать, чтобы приложение не дропало бд?
Ubuntu перешла на 3.8, а окружения лучше в docker собирать, как мне кажется. Тогда у тебя априори свежие сборки всего.
Ubuntu все же от корпоративщиков, а Elementary от васянов. При переходе на docker ваще похуй должно быть. А так pipenv или poetry используй.
Юзаю xubuntu, pyenv, poetry, docker.
Вся разработка и тестирование в докерк, ведь потом в докерк идёт доставка на сервер. Мелкие скрипты и какие-то тестовые запуски через pyenv. Ну и pycharm/vscode по настроению.
напиши фанфик по девил мей край, например
Например, на фрилансе. Если будет задание, то что обычно просят сделать, ясно что отпарсить. Но какие бывают извращения, чтобы как можно быстрее и точнее сделать парсинг под хотелку заказчика, если таковой вообще будет.
А вообще, пилите стори, кто что делал на фрилансе по питону.
генератор qr кодов, тебе надо загуглить принцип и алгоритм и саому их реализовать, использовать PIL или matplotlib для создания картинки разрешаю, Написать обертку над готовым генератором нет, это не то, реализовывай сам
False + время
False + время
False + время
True + время
True + время
False + время
False + время
False + время
True + время
False + время
False + время
Мне нужно при появлении первого True, записать время начала события. Потом ждать появления False и записать время конца события создавая пару [начало, конец]. Не могу понять логику как это реализовать.
>у тебя события завешаются в том же порядке, в котором начинаются?
Что это значит?
>деку юзай
Я знаю только стеройд для кочков с названием "дека"
В связке build_opener, HTTPCookieProcessor в urllib и Cookie, LWPCookieJar в http всё работает и куки подхватываются. Хотел переписать, сделав на либе requests, но почему-то куки не подхватываются, следовательно последующие запросы по прежнему идут лица гостевого пользователя.
Буду благодарен, если кто знает как такое пофиксить и сделать чтобы куки нормально цеплялись.
Спасибо, уже разобрался. После добавления session.verify = False всё заработало.
>Какой дистрибутив лучше подходит для веба?
Если ты задаешься таким вопросом, значит линукс тебе вообще не нужен.
Блогодарю.
1280x720, 1:00
Питонач, нужна статья или глава учебника, где на пальцах рассказывают про временную сложность алгоритмов и как её считать.
Дано строчное месиво, из которого нужно вычленить объект, например:
{1:'raz'},{2:'dva'},{'python':'sila','1488':'drugoy_yazik'},{3:'tri'}
Болдом выделил то, что нужно найти при помощи регулярки. Проблема в том, что там могут быть разные букво-знаковые значения разной длины, например java_script, haskell (у меня итерация по куче таких стрингов). Предшествующая и последующая часть там всегда одинаковая, поэтому я понял, что мне нужно присосаться к тому, что перед началом объекта (1488':'), тому, что после его окончания ('},), и соответственно взять то, что между. Но как мне учесть разное количество символов в искомом объекте?
Ну это используется вроде если важно положение относительно начала и конца строки, как понимаю
В твоём примере вроде это не имеет значения
как понимаю, примерно так:
находим такую часть строки где следуют символы '1488':' а за ними любое количество (от 0 и более) любых символов, после которых должна быть одинарная кавычка. сохраняем все эти символы до первой встречной кавычки
> насколько какой-нибудь постгре отличается от простого
В пределах базовых случаев никак от стандартного не отличается. А если и отличается, то как правило, незначительно.
> Насколько долго и сложно учить конкретный вид
Это никто не учит, просто идёшь в гугл как тебе в такой-то БД сделать такую-то операцию, там будет описание синтаксиса. Есть основы, общие для всех БД, вот здесь очень много нужно узнать. В основном это касается внутреннего устройства БД и производительности. Ещё непросто понять джойны, подзапросы, хотя бы в плане что они делают и какие бывают.
>> Насколько долго и сложно учить конкретный вид
>Это никто не учит, просто идёшь в гугл,,.
Бля, а какой-нибудь кайфовый курс на степике про это дерьмо есть? А то хочу начать пытаться тыкаться на собесы, но там везде какой-нибудь вид эскуэля указан
Дебила который сказал что этому никто не учит не слушай. Practical SQL читай.
Ну в вакансиях везде указано, стремно говорить "да, знаю, умею" и быть вообще не в состоянии нихуя сделать
> быть вообще не в состоянии нихуя сделать
Такое может быть только если ты совсем мало знаешь о базах данных. Подтягивай общую базу. Можешь тот же постгре задрочить. 90% знаний между реляционными базами пересекается.
Твой изначальный вопрос был о 10% различий. Так вот, повторюсь, там сами собеседующие скорее всего не сильно в курсе, и никто (вменяемый) у тебя про различия в диалектах sql спрашивать не будет.
Бамп вопросу.
Ап, какое тз может быть на парсинг сайта, приблизительно, хочу написать парсер для алика хотя бы. Дайте тз плис.
А что там считать? Вот у тебя задача, что-то сделать с N элементами. Если ты по ним проходишь циклом ровно один раз, то это O(n), если у тебя даже цикла нет и операция не зависит от размерности N, то это O(1). Если два вложенных цикла O(n^2), если три O(n^3), итд. Если у тебя бинарный поиск, то O(log n). Большинство эффективных сортировок O(n log n).
Посмотри заказы на апворке по тегу scraping. Сделай что-нибудь из этого.
Странная логика) если я задаюсь вопросом, какой телефон лучше, значит мне телефон вообще не нужен?)
>Питонач, нужна статья или глава учебника, где на пальцах рассказывают про временную сложность алгоритмов и как её считать.
Начни с
> Ильин, Позняк - Основы математического анализа.
> Какой телефон лучше что бы писать в WhatsApp
Так аналогия понятнее?
Ну и да, линукс, любой, это как запорожец - больше чинить, нежели ездить. Если ты не готов первую неделю пердолить консольку вместо непосредственной работы, то он не для тебя.
>Если ты не готов первую неделю пердолить консольку вместо непосредственной работы, то он не для тебя.
Зачем ему ставить пердольный дистр? Завел какую нибудь каляску типа убунты и все
Можете ещё рассказать, что ещё нового в питоне в 2020?
другой анон, но полагаю тот анон имел ввиду дек, то есть двусвязная очередь. дальше гугли
Что там пердолить? Я же не буду компилить ядро как в какой-нибудь генто. Понимаю, что плюс минус везде все одинаковое, спросил на всякий случай, мало ли
IDE - действительно настолько субьективная хуйня или все такие есть объективные причины использовать ту или иную?
Блокнот. А если серьёзно, напердолить до некоторого уровня комфорта можно во всех этих редакторах. Просто установи и попробуй каждую, вместо того чтобы читать холивары.
>>> type(tag)
<class 'bs4.element.Tag'>
>>> if type(tag) == 'bs4.element.Tag':
print('Yes')
Тут ничего не происходит. Что я пишу не так? Как нужно правильно написать название класса?
Как быстро вкатиться в xpath и css локаторы, мб у кого есть шпаргалки.
И как быстро искать на стр код хтмл, показывают примеры, у них все развернуто. Начинаешь просматривать сайт, хуй пойи что где. Полюбому есть секерты как делать быстро и правильно. Про просмотр кода знаю.
В tag у тебя элемент супа, того класса что ты вывел, все верно, если tag , элемент супа, то принт да.
Да
Не совсем, я сейчас вместе с еще одной командой специалистов всемирного уровня разработки, создаем на протяжении полу года браузер который сможет поддерживать скрипты из других языков. Пока особо ничего сказать не могу дабы не нарушать нда, но через пару тройку лет в основном будут лидировать либо веб асембли либо наш продукт, но скорее всего нас просто купит какой нибудь гугл и встроит себе куда нибудь
Возможно ли перенести в excel?
Подскажите чем пользоваться и что гуглить.
>хер ли я не могу делать assignment внутри нее?
Можешь:
(lambda a, b: (c := 2, d := 3, a + b + c + d)[-1])
from imageai.Detection import ObjectDetection
import os
execution_path = os.getcwd()
detector = ObjectDetection()
detector.setModelTypeAsRetinaNet()
detector.setModelPath( os.path.join(execution_path , "resnet50_coco_best_v2.0.1.h5"))
detector.loadModel()
detections = detector.detectObjectsFromImage(input_image=os.path.join(execution_path , "image.jpg"), output_image_path=os.path.join(execution_path , "imagenew.jpg"))
for eachObject in detections:
print(eachObject["name"] , " : " , eachObject["percentage_probability"] )
Есть такой мини код. И оба питона(Двойка и тройка) выдают одинаковую ошибку. Че он от меня хочет бля? Какой еще аргумент он хочет? Я заебался уже. На винде под кондой все охуенно работает. А на расбиане уебывается. Ну ебаный хуй.
>Че он от меня хочет бля?
Сдается мне, ты хуячишь код из интернета, не умея вообще программировать. В стек трейсе все написано - и место с ошибкой, и что конкретно произошло. Тебе остается только подключить отладчик и посмотреть, почему у тебя None вместо числа, и откуда это пошло.
И да, помогите пожалуйста. А то у меня скоро шизофрения начнется.
Ну да, но на винде работает. Тут нечему не работать ибо все остальные трейсы это библиотеки\зависимости\meh которые заведомо правильные
Где место с ошибкой?
>Тут нечему не работать
Я тебе еще раз говорю - запусти дебагер и посмотри, что именно не работает. Экстрасенсов тут нет, и никто тебе не найдет ошибку, не имея полного доступа к коду и окружению питона со всеми библиотеками. Ты сам сказал что на винде все работает, значит проблема скорее всего в несовместимости версий библиотек или их корявой имплементации на линуксе.
open-cv
Обычно такие проекты покупают просто так, чтобы умертвить. А ещё чаще они просто закрываются, инвесторы кончаются.
Мне кажется сомнительная затея, не потому что сложно реализовать адекватно (тут я бы на твоём месте об идеях не говорил даже здесь, прилетит легко), а потому, что главная ценность в поддержке консорциума, в кроссплатформенности.
Никому не нужно решение, которое поддерживается только одним браузером.
Поэтому и остаётся только JS и стандартные API.
Всегда нужны молодые программисты с горящими глазами, верящие в прорывную идею стартапа.
Пытаюсь добавить еще одн столбец. Миграция создается, а при апгрейде зависает навсегда.
Для другой модели вроде бы все норм работает.
В чем может быть проблемма? и есть ли идеи как фиксить?
Я поклацал библиотеки и привел некоторые к одинаковым версиям виндовых.
Вроде запустилась. Но система киллует процесс. С чем это может быть связано. Жрет дохуя, и расбиан не хочет обслуживать ее?
Да, верно я понял.
Сайты с задачами будут дрочить тебя алгоритмами и смекалочкой в основном, просто бложик попробуй сделать на каком нибудь фастапи для начала
https://open.kattis.com/problems
Вот олимпиадные задачи от уровня для "охранник первого дня обучения" до "победитель олимпиад по программированию".
Бесплатно, без СМС, но с регистрацией.
Можешь например с помощью ast/grep пройти и собрать все импорты. Но это сломается например на safe импортах:
try:
..import kurwa1 as kurwa
except ImportError:
..try:
....import kurwa2 as kurwa
..except ImportError:
....import kurwa3 as kurwa
Точнее, оно корректно соберёт все три курвы, но тебе придётся перепроверить установлены ли такие пакеты.
import os
import cv2
execution_path = os.getcwd()
camera = cv2.VideoCapture(0)
detector = VideoObjectDetection()
detector.setModelTypeAsTinyYOLOv3()
detector.setModelPath( os.path.join(execution_path , "yolo-tiny.h5"))
detector.loadModel()
video_path = detector.detectObjectsFromVideo(camera_input=camera,
output_file_path=os.path.join(execution_path, "camera_detected_video")
, frames_per_second=2, log_progress=True, minimum_percentage_probability=30)
for eachVideoObject in detections:
print(eachObject["name"] , " : " , eachObject["percentage_probability"] )
Вроде запустил, но нихуя не распознает. Тупо записывает видео, хотя на ноуте вполне работает. Какой то интересный ворнинг. В инете пишут что-то изменить в обучении модели, но блджать у меня претрейнед модель, что я ей изменю. И при этом вариант программы для картинок оно распознает, я доделал. >>19292
Хотя прогресс, да. Никто не занимался такой хуетой? Помогите пожалуйста.
Пройдись по каждому пикселю и вычисли его цвет, если цвет больше чем цвет бекграунда то это точка, считаешь количество пикселей больше цвета бекграунда, потом всю эту сумму делишь на количество пикселей в 1 точке, получишь кол-во точек
докер
Используй констрейнты базы и тип-интервал.
https://www.postgresql.org/docs/10/sql-createtable.html#SQL-CREATETABLE-EXCLUDE
https://www.postgresql.org/docs/10/rangetypes.html
В джанге этой хуйни встроенной скорее всего не будет, придётся руками попердолить SQL.
Спс, попробую понять.
да. чувак разобрался и сделал как ему надо
Fastapi?
Ну насколько я понял, это ты предложил способ как можно быстро заполнить таблицу кучей дат с квотами? Но сама суть правильная, да? Нужно иметь строку на каждый день в отдельной таблице.
Или мб можно просто по таблице броней проверять, не превышает ли количество бронирований на данную дату допустимого? Ну типа человек ввел там двухместный номер с 1 по 3 октября. Я просматирваю, сколько у меня уже забронировано на 1-е, на 2-е, на 3-е и если их не больше, чем номеров в отеле, то значит разрешаю забронировать. И типа и не нужна отдельная таблица?
>создать таблицу в бд, где тупо будет написано для каждого номера на каждый день в году, занят он или нет
Лучше просто таблицу со бронью, то есть ид_номера, дата_заселения, дата_выселения. И связать ее с таблицей номеров. Тогда ты сможешь делать выборки уровня "дай меня только двухместные номера, у которые нет записи о бронировании с такого по такое число".
Как на Линухе поставить крякнутый PyCharm Pro?..
Появилась идея проскрапить hh.ru чтобы найти данные по вакансиям: средняя зп, медианная зп и гистограмма общего распределения зарплат. Для начала только по Москве и Питеру, вне зависимости от сферы, чтобы посмотреть насколько правдивы кулстори про "среднюю зп в 90к"
Кто занимался скрапингом hh.ru? Какие подводные?
Спасибо
Найти пиратский лицензионный сервер или поставить его себе, еще можно сбрасывать триал каждый месяц
У них же api есть.
На самом деле нет, я тебе совсем другое предложил. Но так как ты предлагаешь, вероятно тоже сработает, главное проверяй что UPDATE обновил все строчки именно так как ты ожидал и будь готов словить дедлок.
Как сбрасывать? Переустановить его? (я в ближайшие пару дней не у компа, проверить не могу)
OpenCV(4.4.0) /tmp/pip-wheel-frffvd08/opencv-python/opencv/modules/videoio/src/cap_images.cpp:293: error: (-215:Assertion failed) !_filename.empty() in function 'open'
Ух ты, а что ты там такое интересное делаешь, расскажи, пожалуйста?
Стектрейс тебе для чего? Он же белым по-черному пишет номер строки. Или что ты хочешь логировать в
>Хочу чтобы при логировании
?
Советую edabit: он лаконичен и прост в сравнении с тем же громоздким codewars. Обязательно смотри топовые ответы после решения: там очень много синтаксического сахара, который может быть не очевиден, но его нужно знать и даже иногда использовать.
Неплохо. А что если эксепшн не рейзится (что случается в 99% случаев)? У меня стоит обычный вызов:
logger.warning("Attention!")
logger это экземпляр logging.getLogger()
Дело не в print, а в самой процедуре логирования.
Покури, как перехватывать ошибки с помощью кастомной функции и заменять ею встроенный в интерпретатор sys.excepthook. В нем ты будешь скрывать данные по регулярке или еще как вздумается.
Прилетела задача построить несколько статистик на данных формата:
Колонка в датафрейме пандуса содержит данные формата:
[11, 23, 45, 33] от одного до множества элементов
Как обработать эту колонку и уметь вытягивать из нее количество элементов/отдельные элементы.
Учись гуглить, пригодится:
https://stackoverflow.com/questions/52161735/python-logging-warn-add-stacktrace
>лямбды
Не нужны, кроме как в линковых запросах.
Но это не питонический путь. Это ебаная каша для ломания чужих глаз и мозга.
>лямбды
>Не нужны
Ты просто неосилятор. Лямбды уменьшают замусоривание кода локальными переменными и делаю его короче, чище и понятнее.
>уменьшают замусоривание кода локальными переменными
Да.
>делаю его короче
>чище
Да.
>понятнее
Нет.
> код для проверки числа цукермана
https://pastebin.com/K40sfmr8
> цикл чтоб число увеличивалось на 11 с каждым ходом и закончился когда данное число будет делиться на 2020 без остатка
нихуя не понял, чтобы какое число увеличивалось на 11?
Повсеместный range это генератор. Всё что может работать цикле for и есть итератор или генератор.
Конечно ты можешь проходить по ним и без цикла:
r = range(10)
print(next(r))
print(next(r))
Но нужно самостоятельно ловить экзепшен StopIteration
Свои итераторы можно создавать с помощью магического метода --next--. Это по сути то что вызовет встроенная функция next(). Но с циклом for всё немного сложнее, он не просто берёт итератор и дёргает ему --next--, а сначала создаёт итератор из объекта который ему дали через магический метод --iter--. Чтобы запутать ещё сильнее, довольно часто там return self. Но по фэншую нужно возвращать отдельный объект. То есть коллекция это отдельный класс, а итератор по ней это отдельный. Чтобы уже созданный итератор был совместим с циклом for ему нужно добавить метод --iter-- с return self, чтобы цикл продолжил работать с уже существующим объектом, а не пытался создать новый. Кстати встроенная фукнция для вызова --iter--, так и называется iter().
>>> iter([])
<list_iterator object at 0x7fa5be6a4d30>
>>> iter({})
<dict_keyiterator object at 0x7fa5be619360>
>>> iter(iter(iter([]))) # здесь отрабатывает return self на итераторе
<list_iterator object at 0x7fa5be6a4d30>
Собственно нахера return self в методе --iter-- итератора? Вот пример:
it = iter(list(range(100)))
for x in it:
..break
for x in it:
..break
for x in it:
..break
Мы можем переиспользовать тот же самый итератор несколько раз. На каждом вызовется сначала --iter-- чтобы убедиться что у нас итератор а не какой-то другой объект, а потом --next--.
Генератор это такая хитрая прерываемая функция, с помощью которой очень удобно создавать итераторы.
def count():
..i = 0
..while True:
....yield i
....i += 1
Попробуй использовать её как итератор:
>>> it = count()
>>> next(it)
0
>>> next(it)
1
>>> next(it)
2
По сути часть состояния сохраняется как место выполнения генератора (какой из yield вызван), часть как локальные переменные. Всё это крайне удобно ложится на объектную модель, ты можешь метод --iter-- любого класса выполнить как генератор, и тебе не придётся создавать дополнительный класс итератора, при этом будет по фэншую, итератор отличается от самой коллекции.
Генераторы бывают ещё в виде экспрешенов, без всяких yield:
(i for i in range(20_000_000))
Важно что скобки круглые. Здесь точно так же, можно повызывать next на таком объекте, и точно так же лениво вычисляются значения, что может здорово сэкономить оперативку: попробуй заменить скобки на квадратные и посмотри потребление памяти. Либо внутри скобок метода, это тоже будет генератор экспрешеном:
''.join(i for i in range(100))
Вот собственно всё что нужно знать.
Повсеместный range это генератор. Всё что может работать цикле for и есть итератор или генератор.
Конечно ты можешь проходить по ним и без цикла:
r = range(10)
print(next(r))
print(next(r))
Но нужно самостоятельно ловить экзепшен StopIteration
Свои итераторы можно создавать с помощью магического метода --next--. Это по сути то что вызовет встроенная функция next(). Но с циклом for всё немного сложнее, он не просто берёт итератор и дёргает ему --next--, а сначала создаёт итератор из объекта который ему дали через магический метод --iter--. Чтобы запутать ещё сильнее, довольно часто там return self. Но по фэншую нужно возвращать отдельный объект. То есть коллекция это отдельный класс, а итератор по ней это отдельный. Чтобы уже созданный итератор был совместим с циклом for ему нужно добавить метод --iter-- с return self, чтобы цикл продолжил работать с уже существующим объектом, а не пытался создать новый. Кстати встроенная фукнция для вызова --iter--, так и называется iter().
>>> iter([])
<list_iterator object at 0x7fa5be6a4d30>
>>> iter({})
<dict_keyiterator object at 0x7fa5be619360>
>>> iter(iter(iter([]))) # здесь отрабатывает return self на итераторе
<list_iterator object at 0x7fa5be6a4d30>
Собственно нахера return self в методе --iter-- итератора? Вот пример:
it = iter(list(range(100)))
for x in it:
..break
for x in it:
..break
for x in it:
..break
Мы можем переиспользовать тот же самый итератор несколько раз. На каждом вызовется сначала --iter-- чтобы убедиться что у нас итератор а не какой-то другой объект, а потом --next--.
Генератор это такая хитрая прерываемая функция, с помощью которой очень удобно создавать итераторы.
def count():
..i = 0
..while True:
....yield i
....i += 1
Попробуй использовать её как итератор:
>>> it = count()
>>> next(it)
0
>>> next(it)
1
>>> next(it)
2
По сути часть состояния сохраняется как место выполнения генератора (какой из yield вызван), часть как локальные переменные. Всё это крайне удобно ложится на объектную модель, ты можешь метод --iter-- любого класса выполнить как генератор, и тебе не придётся создавать дополнительный класс итератора, при этом будет по фэншую, итератор отличается от самой коллекции.
Генераторы бывают ещё в виде экспрешенов, без всяких yield:
(i for i in range(20_000_000))
Важно что скобки круглые. Здесь точно так же, можно повызывать next на таком объекте, и точно так же лениво вычисляются значения, что может здорово сэкономить оперативку: попробуй заменить скобки на квадратные и посмотри потребление памяти. Либо внутри скобок метода, это тоже будет генератор экспрешеном:
''.join(i for i in range(100))
Вот собственно всё что нужно знать.
Что именно тебе непонятно?
Вот итератор https://ideone.com/FLdu57
Вот генератор https://ideone.com/5KkfRZ
Какая именно строка у тебя вызывает затруднение?
Годнота
Ставь убунту, для юзерского железа полностью настроена, никакой ебли, все из коробки
Гайд из FAQ 2012 года, он всё ещё актуален? Стоит по нему учить?
Нет. Там какие-то пустые общие слова, а в тексте указаны ссылки, которые мертвы.
>>21144
Вот этот гайд тоже устарел, поскольку 2015 всё-таки, и тогда не факт, что актуальным был.
Сам питон поменялся, всякие там asyncio, format-fstring, 2x окончательно потерял актуальность, другие фреймворки и веб-разработка, django в чистом виде меньше актуален, с дополнениями нужен, flask вообще ВСЁ, появились новые важные фреймворки. Окружение сменилось. Всякие open-cv, расцвели и т.п.
Нужно какое-то новое обзорное пособие. Может где-нибудь есть, а может и всем лень заниматься.
Вот текст задачи:
https://www.codeabbey.com/index/task_view/prime-numbers-generation--ru
Тащем-та накидал такой код: https://pastebin.com/kG6FGq8m
Работает примерно 100 секунд.
Можно ли как-то ускорить это?
Ну у тебя явно в range в is_prime какой-то ебаный брутфорс происходит. Там нужен словарь.
Зачем там словарь? Это проверка числа на простоту
Для каждого нового числа всегда заново определяется является оно простым или нет
Там идет постоянно цикл от 3 до хуй знает сколько, ещё и округленного. Умножь все итерации на каждый шаг генератора, вот и тормоза.
Бля. Каждое число, которое отдает генератор нужно проверять на простоту.
Как ты по другому реализуешь проверку на простоту?
Я просто не совсем понимаю видимо, что ты имеешь в виду.
Распиши подробнее, что ты хочешь в словаре хранить?
Я решил использовать pandas для обработки табличных данных, и у меня возник вопрос организационного характера, даже не касательно конкретно pandas, а вообще насчет места сторонних библиотек в своем проекте. Как принято у серьезных ребят обращаться со сторонними библиотеками:
1. Без задней мысли пихать везде классы и функции из сторонней библиотеки, писать свои функции, которые принимают и/или возвращают объекты из этой сторонней библиотеки, то есть делать так, чтобы код был гвоздями прибит к этой конкретной сторонней библиотеке.
2. Показывать всем, какой ты крутой архитектор и знаток паттеренов, например, написать класс-обертку, и везде в своем коде использовать эту обертку, чтобы при желании легко заменить эту стороннюю библиотеку на любую другую, достаточно написать обертку для этой другой библиотеки.
Пока мне кажется, что второй вариант если и используют в разработке на питоне, то только в каких-нибудь гигантских корпоративных системах, которые будут существовать десятки лет, где-нибудь в гуглах и фейсбуках, то есть в большинстве случаев целесообразней использовать первый вариант, потому что кода не так уж и много, а питон такой весь гибкий и динамичный, что если изменения будут действительно нужны, их будет несложно сделать. Как вообще в питоне с архитектурой и внедрением зависимостей?
Спасибо, анон!
Я чет туплю с созданием полей формы в джанго. В модели у меня есть таблица, к примеру "заказы", в которой содержится информация о заказе и информация о клиенте, который этот заказ сделал. Соответственно всю информацию о клиенте я вынес в отдельную таблицу "клиенты", а в "заказах" у меня внешний ключ с айди клиента.
Но вот поля для заполнения информации о клиенте и о заказе у меня должны быть на одной странице. Ну и собственно надо чтобы все это создало запись в "заказах". То есть человек заполняет ФИО, телефон, емейл итд, выбирает товар (и ещё пару других параметров) и нажимает кнопку отправить. Я нашел, что джанго сам сделает селект, если у меня есть, например, "категория товара" какая-нибудь в отдельной таблице, где есть только айди категории и список категорий. Но как сделать, чтобы он рендерил поля из связанной таблицы, когда их там несколько и это не селекты? Мне нужно создавать две формы, для информации о клиенте и для информации о заказе и просто рядом их рендерить, как я понимаю. Но как я тогда сделаю, чтобы в бд в таблицу заказов попал соответствующий айди клиента? Ну типа у меня просто заполнится строка в таблице "клиенты" из полей с данными о клиенте и поля с информацией о заказе в "заказах", но как айди клиента попадет в строку с информацией о заказе?
А никто не знает!
нужно чтобы прошел десяток лет чтобы они выросли и стали элементом массовой культуры.
Учи что такое SOLID. Работа с зависимостями это D - Dependency inversion. Это правило говорит что твой код должен полагаться на интерфейсы, а не конкретные реализации.
Про архитектуру читай книги cosmic python и clean architecture. Там же найдешь ссылки на распространенные практики, такие как TDD, BDD, DDD
https://github.com/cosmicpython/book
смотри сам. если это какой-нибудь прикладной скрипт, который ты побыстрому слепил, чтобы решить какую-то прикладную хуйню, то можешь хуевертить что пожелаешь. упарываться по паттернам в этом случае стоит только в образовательных целях.
>>21835
Ну, в общем, все так, как я и думал. Маленькие программы приемлемо писать как бог на душу положит, а каноничные архитектуры больших еще только формируются.
>>21858
Я представляю, что такое DI, просто, думаю, техники, например, из джавы, будут в питоне смотртся не очень, хочется знасть про DI именно в контексте питона и его специфики. Вот за конкретную литературу спасибо.
>Может где-нибудь есть
не подскажешь, как его можно найти? Так и гуглить, "гайд для обучения питону"?
> Вот этот гайд тоже устарел, поскольку 2015 всё-таки, и тогда не факт, что актуальным был.
Гайд вполне актуален.
> Сам питон поменялся, всякие там asyncio, format-fstring
Для этого стоит глянуть changelog новых версий питона. Или ты предлагаешь каждые пол года переписывать/дописывать гайд?
> другие фреймворки и веб-разработка
Например какие? Для твоих пет проектов подойдут старые добрые. В питоне не так уж и много живых и активно юзающихся фреймворков.
> django в чистом виде меньше актуален
Что имеешь ввиду под чистым видом? Без доп. плагинов? Так без них ни один фреймворк не подходит полноценно для реальной работы.
> flask вообще ВСЁ
А вот и нет, вполне активно юзается и для новых проектов тоже. Сам его на проекте использую и очень доволен, все таки его возраст и комъюнити идут ему на пользу.
> появились новые важные фреймворки
Перечисли пжлст, только без asyncio, ибо он вполне давно уже существует.
> Окружение сменилось.
Вот по этой теме гайд бы обновить, да.
> Всякие open-cv, расцвели и т.п.
Расцвели они давно, то что ты их сейчас заметил - другое дело.
> Нужно какое-то новое обзорное пособие. Может где-нибудь есть, а может и всем лень заниматься.
Лично я узнаю про всякие плюшки из статей, а гайд, должен ввести человека в мир питона просто и легко, дать базовые знания, дальше уже можно улучшаться и развиваться, узнавая что-то новое. + Есть охуенный и актуальный, вполне, укус питона.
>Перечисли пжлст, только без asyncio, ибо он вполне давно уже существует.
Так же модели представления данных сильно прогрессируют, тот же pydantic чего стоит
fastapi, aiohttp, starlette, vibora
мимо
18 лвл, время и желание есть, но терзают сомнения, потому что часто читал, что без опыта сразу в бэк мега сложно вкатиться, но фронт учить желания вообще нет, знаю основы html, css и чутка js, больше не хочется туда лезть. изучаю python, django, sql. пока все нравится.
А как тогда ждунами-бэкэндерами становятся? Все это пиздеж и хуйня, учи и всё будет збс. Но кроме Джанни ещё глянь асинхронные фреймворки, типа aiohttp и fastapi.
Да, у нас это крайне желательным сделали на работе
Два чая тебе, про джейсон и не подумал, как работать с ним в питоне уже нагуглю.
Ты можешь использовать практики джавы в питоне, если они физически применимы. "Смотрятся не очень" не звучит как нормальное обоснование. Думаю эффектиней будет разбирать конкретные сомнения на примерах.
Толсто. И что же читают такие сливки общества как ты?
Прямых требований нет, но я юзаю и на код ревью это помечаю, если нет(правда как "not important")
включая всякие ролики от googl'а и прочеого фейсбука
мимо гуманитарий вкатывальщик
У нас стоит mypy в режиме strict и все кто не юзают идут нахуй.
Понимать базу ООП нужно. На самом деле ООП очень активно используется, в куче библиотек и фреймворков тебе нужно свои объекты наследовать от библиотечных, либо ты просто пользуешься чужими классами-объектами.
В питоне от ООП одно название, учить там и нечего.
Впрочем всё зависит от твоих задач. Если надо лабу сдать или для себя примитивный скрипт написать, то может и не нужно.
>В питоне от ООП одно название, учить там и нечего.
Все инструменты для написания ООП кода в питоне имеются.
Прикрутил на все проекты, нехуй писать без типов.
Необходимо написать функцию, даны первый (first) и последний (last) символ строки, а также массив pairs. Если “xy” в pairs, значит в результате y должен следовать за x. Каждая пара может использоваться только один раз. Необходимо выдать все возможные результаты.
Пример: first = “b”, last = “r”,
pairs = [“ar”, “an”, “an”, “ab”, “ba”, “ba”, “na”, “na”]
Функция должна выдать:
“banabanar” (ba + an + na + ab + ba + an + na + ar)
“bananabar” (ba + an + na + an + na + ab + ba + ar)
“babananar” (ba + ab + ba + an + na + an + na + ar)
Как можно это реализовать?
Вроде бы понял. Вопрос один: гарантированно ли, что из данных пар можно подобным образом составить слово? Если да, то решается она довольно просто - пикрил.
>Ставь убунту, для юзерского железа полностью настроена, никакой ебли, все из коробки
Угу, если повезет с железом. Если не повезет то велкам ту пердоль.
>Притом, что это один из способов реализации полиморфизма?
Перегрузка при которой меняются только типы данных в питоне попросту не нужна - достаточно одного метода. Ну а если меняется и количество параметров, то это уже не полиморфизм.
по ходу я пиздец как непонятно объяснил))
смысл не в том, чтобы нарезать конкретную строку на пары, а наоборот, из данных пар составить все возможные строки.
Не из “banabanar” должны получиться pairs, а из pairs должны получиться “banabanar”, “bananabar”, “babananar”
В itertools есть всякие combination и permutation, если по условию их можно использовать.
Почему нельзя замутить питоновский код, который компилится в С/С++? Вот нахуярил ты питоновского кода (по особым конвенциям канешн, с принудительным тайпингом например), запустил внешний компилятор и имеешь на выходе С++ файлы? Тайпскрипт же могет (ну он в жс-ваниллу компилит, но тем не менее)
Чел...
там то компилится в текст,
а ты из интерпритируемого в готовые файлы хочешь?
тут скорее нужен другой язык с синтаксисом как у питона, и чтоб на выходе выдавал цпп текст и его уже потом компилить
>Никогда не понимал таких заявлений, типо у вас ООП не ООП.
Тупо нет такого понятия, как интерфейс. В том виде, в каком он есть в C++/Java.
А интерфейс это ключевая сущность ООП, а именно задекларированный механизм общения с объектом.
В питоне всё нестрого и на уровне джентльменских договорённостей. И не только с интерфейсами так. Жить можно, но это совсем не то, что в полноценных ООП языках.
Хотя на самом деле чистое ООП питону не очень нужно.
- В плюсах интерфейсов в строгом понимании нет
- АРЯЯ ПУК-СРЕНЬК ВРЕТИ
- Чекай что сам же Страуструп на этот счет говорит
- ДА КОМУ ОН НУЖОН! ПИДОР СТАРЫЙ! НЕТ ИНТЕРФЕЙСОВ ЗНАЧИТ НЕ ООП! ЯСКОЗАЛ!
В питоне есть абстрактные классы что альтернатива интерфейсам и множественное наследование
Так что заделарировать можно
Ну полностью абстрактные классы конечно плюс минус замена интерфейсам, но мозги в жаваооп думают про интерфейсы, а у питонооп получается все равно от реализации, потому что полностью абстрактные классы небось мало кто будет городить везде где в жаве или пхп интерфейс
Если я хочу в Джанге реализовать регистрацию с помощью email с заделом на то, что у юзера будет возможность восстанавливать с его помощью пароль и так далее (и затем по почте логиниться), то мне, получается, всё равно придётся лезть в батарейки типа django-allauth, или всё более-менее реализовывается стандартными Джанговыми средствами?
Вот думал я вкатываться, после айосов всяких пару лет назад(подучился, но работу не нашел) вот недавно начал пробовать джаву
Пробовал, пробовал, дальше кора не пошёл, думаю пробовать питон
В отличие от джавы дополнительно привлекает возможность фрилансить как никак (скорее всего хуй отсосу с таким рынком нынче, но мало ли)
Сейчас трогаю основы, так вот
Каким путём двигаться, чтобы выйти на фриланс/джун уровень, чтобы уже можно было полностью профессию поменять (эникей-полусисадмин сейчас)
Заранее спасибо
Если для себя, то ты даун
Потому что эта нейросеть это Альберт Эйнштейнты, доунич
Во-вторых нахуя тебе тяночка, от них один головняк
А ещё лучше не так делать
Нейросеть тебе позволит только узко атаковать пиздячий фронт, тогда как тупой лайкобот тендера и надпись привет в матчи дадут больше
Сиди дрочи, питон учи
Спасибо за инфу, ни слова не понял правда, но ладно
Вроде не так давно СОТА в чатботах была Meena.
https://habr.com/ru/news/t/486102/
Но, запоминать она будет только на неокторый контекст назад, вроде 5-6 сообщений. Запониманать навсегда - это уже нереализуемая хуйня, хотя можно попробовать что-то вроде MemoryNetworks использовать, но это прям спекуляция и не заработает.
Фактической разницы в результате нет
Абстрактный класс тот же контракт, а множественное наследование позволяет делать то для чего в других языках нужны интерфейсы
К тому же есть протоколы.
Необязательно навсегда, человек же не может запомнить что говорил его отец/мать 5 дней назад в определённое время, какие-то важные вещи надолго, а простой разговор ну на пару дней максимум, но спасибо за инфу про Мину
c последними рузенами проблемы, есть инфа что и с некоторыми интолами ноутбучными
Почему PyCharm мне подсвечивает переменную result
for i in range(5):
result = i
print(result)
сам код работает
Подсветка выдает Name 'result' can be undefined
Можно забить или как то с этим можно бороться?
Привел простой пример,а так такую конфигурацию использовал в декораторе.
result в цикле, если бы на месте range оказался пустой массив, то код бы свалился, оно поэтому тригерится
Плак-плак.
Реальная проблема может быть с переферийным железом, с сетевыми картами, звуковыми картами, экраном в ноутах и т.п.
Насчёт процессоров не знаю, сомнительно, но возможно.
Может с БИОСом не дружить или ещё что-нибудь.
В общем гарантии, что заработает, как надо, нет.
сап харкач, в вузике учил асемблер и си, решил поучить питона и не понял как дебагать, нарыл инфу что делается через функцию breakpoint(), но это пиздец как не удобно, есть ли простой способ чтоб как в вижуале строчку за строчкой смотреть?
>захотел оттестировать либу с pywin32
Сама Микрософт для разработчиков некоторых игр делает инструкцию, как впердолить DX12 в игру, чтобы работало на W7, а тут такой удар он опеншорша...
>либу с uvloop
>uvloop is a fast, drop-in replacement of the built-in asyncio event loop
То есть заменить назад на asyncio - дело пяти минут.
Помню на прошлом проекте sanic юзался, у которого нельзя выпилить uvloop
Сам сталкивался с проблемами сетевой карты, совместимости автозагрузок ебунты и шиндоус на одном жд, артефакты видеокарты интегральной ноутбучной ншидиа, у знакомого убунта не стала на новом ноутбуке за 1к$.
Большинство проблем решается проприетарными драйверами или гуглингом.
Секса с линухом все равно много.
И даже с всяким сексом линух все равно лучше и стабильнее чем шиндовс, плюс очень удобный терминал
просто бери и делай.
Работобыдло считает зашкваром изучать невостребованные на галерах технологии.
Билдозер работает нормально в виртуалке. Много ебатни с собственно мобильной разработкой как таковой.
Если б ты знал, как меня однажды заставили делать лабы turbo pascal на vax vms .
Но ничего. Справился.
Как в питоне можно ЭЛЕГАНТНО (кроме как вложенными for-ами) найти координаты тех пикселей, где сумма значений для RGB минимальна и максимальна
всю жизнь писал на похапе и js
нахуй тебе этот образ для безруких? не можешь с нуля убунту соответствующей версии накатить?
А как с таким бороться? Выше result = 0 объявлять или как-то через try/catch можно тут?
другой-анон
Да я и так юзаю линух, там просто хуева туча зависимостей для бульдозера. Но юзаю я ни убунту. Вопрос то простой. Как лучше заюзать бульдозер, на виртуалке или в докере? Или вообще емго можно как-то накатить в моем дистре.
Лучше всего делать дефолтное значение
Шо почем по времени деньгам у кого?
Скрапперы/веб/етс?
Я buildozer поставил прямо в дистр (mint). Apk'шки компилятся на ура, чего и вам желаю.
Ну ок, у меня тоже линух. Если я поставлю бульдозер pipом в виртенв, работать будет? Там же все зависимости подтянутся так? Я читал на хабре что долго компилится апк очень.
Не думаю, что такой подход сработает. Лучше установить билдозеровские зависимости самостоятельно, актуальный список сейчас не найду, у меня был примерно такой https://dumpz.org/cdb6b7rFXzsF
Ну а после установить сам buildozer с помошью setup.py (см. ссыль выше).
Компиляция вообще не быстрый процесс, а ещё и требовательный к объёму дискового пространства.
https://pastebin.com/5niAsCqC
балуюсь с декораторами. вот хотел узнать, можно ли как то из этого же модуля где вызывается функция изменить параметр декоратора
(в коде по умолчанию dargs=10)
И если нельзя, то как лучше его менять? есть у кого в загашнике статейка либо кто помнит, книжку, где современная практика этого описывается.
НУ или личный боевой опыт в коммерческой разработке.
Вопрос - возможно ли скомпилировать питон код в исполняемый бинарник? Желательно оптимизированный, без вороха лишних зависимостей.
Хорошо, а какую книгу порекомендуешь если я вообще не знаю как программировать?
Все что тебе нужно знать.
Есть переменные. И есть структруы данных, массивы там всякие и прочая ебулда.
И есть флоу, то есть логика. Всякие ифы, вайлы, и тд. Почитай.
Далее, все это собирается в блоки, те в функции, чтобы не писать одно и тоже по сто раз.
Все. Можно расходиться.
Ах да, есть еще и ооп, всякие классы. Это чтобы еще меньше писать кода и чтобы было еще быстрее.
Ах, да, и чтобы совсем было просто - фреймворки, чтобы не только просто, но и быстро.
Читай укус питона. Думаю этого хватит. У меня трудности были только с ооп. С декораторами. И недавно допонял про генераторы.
Ну и да, оф сайт и оф доки. Могу еще посоветовать эту няшу https://www.fullstackpython.com/
там про бек про фронт про деплой и про девоп.
Дело не в библиотеках, а в машине интерпретатора. На самом деле так просто транслировать скриптовый язык в бинарный код нельзя, много ограничений и подводных камней.
Вместо Cython лучше посмотри на Nuitka. Хотя я сам на практике его пока не использовал.
Между твоими утверждениями нет никакой связи. Ну и что что там сишный код под капотом? Тебе же всё равно придётся реализовать PyObject и перекладывать их туда-сюда. И так как PyObject непрозрачен, так как сам язык тебе не гарантирует ничего о его содержании и какие можно ограничения наложить читай оптимизировать под железо, ты придёшь всё равно к тому что есть стандартные питонячий байткод и виртуалочка. То есть, лучшее что ты можешь сделать это зашить в исполняемый бинарь и интерпретатор, и байткод приложения.
> Желательно оптимизированный, без вороха лишних зависимостей.
Где связь между оптимизацией и зависимостями? Тебе надо быстро чтоб работало или минимальный размер бинарника? Так вот, эти вещи обычно никак между собой не связаны.
Теоретически можно. Но объектная модель питона кардинально отличается от объектной модели C/C++. Внутри всё равно придётся создавать dict для полей, слоты и прочее питонячее, чтобы оно работало. Выигрыш в скорости совсем не оправдает затрат. Скорее всего, придётся изобрести отдельный язык, но это уже за тебя сделали, называется cython.
В общем случае, единственный вариант это применить декоратор заново, на исходную функцию. Если же там применение через собачку, то всё, отковырять исходную функцию нельзя.
У меня плохой опыт со скрапперами. Их хотят чуть ли не за бесплатно. При том что часто всё закрыто капчами и требует пул проксей. Ещё часто приходят поехавшие, которые хотят чтобы ты отскраппил мобильное приложение. Не то чтобы это было совсем невозможно, но перехват и реверс протокола приложения, это удовольствие не из дешёвых. Не говоря уже о том, что с твоего базового аккаунта большая часть информации будет недоступна. Ещё часто хотят не просто результат скраппинга, а программу в виде exe под винду блядь, чтобы заказчик мог сам запускать скраппинг когда ему нравится.
Scrapy бери. Он вроде бы дефакто стандарт. Но вообще это всё на коленке можно наколхозить за пару дней. import requests, import bs4 и запиздил писать чо куда тебе сложить. Читай что такое xpath, css селекторы, да в целом вебстандарты нужно хорошо знать. Уровень 2 это освоить селениум.
union operators added to dict
string methods to remove prefixes and suffixes
можно теперь не импортировать typing на каждый чих
Что тебе тут не полезно?
У тебя постановка задачи хуёвая. Что твой ассистент должен делать? Какие требования? Как ты будешь измерять насколько ты достиг цели?
Зачем тебе диалоги тянок? Хотя безусловно, если поизучать бигдату из диалогов тян, то можно найти интересные закономерности. Но от такого изучения до полноценного ИИ как до луны раком.
Фриланс это не просто знание языка, это даже не просто программирование, это даже не постановка задач, архитектурка и ведение проектов, это даже не просто железная самодисциплина, это ты ещё сам себе гендиректор, продажник, маркетолог, переговорщик с клиентами, по совместительству человек-пароход и оркестр в одном лице. Мой тебе совет, начни с работы на дядю, но на релевантном месте. Питонист так питонист, а не чистильщик сортиров в конторе где есть питонисты.
Стандартных средств хватит с головой. От джанги у тебя только формочки и модельки потребуются.
Я нашел скрэпи этот вчера. Сказано он проще чем суп. Попробую разобраться. Там вроде мини-гайд такой, если норм, то потом ссылку кину
У него там внутри суп или аналог. Скрэпи это скорее фреймворк, где конвейер уже поставили за тебя, добавили асинхронность и возможность установить готовые части этого конвейера.
Нинужнитка. Хоспаде, сколько нейронов ньюфажики тратят на покраску сарая для велосипеда. Нет бы программы писать, нет, хочу пердолиться и запаковать всё в один exe с красивой иконочкой.
Да не спойлери, а то мне не интересно будет читать
Если нет опыта в программировании или близких вещах, то сложно. Ребёнка зачать и родить быстрее.
кстати да, и за это 400к дадут
сколько ты эти деньги будешь на питоне зарабатывать еще хуй знает
>Их хотят чуть ли не за бесплатно.
Мне кажется, это общая проблема всех массовых заказчиков. Они хотят продукт за копейки, не понимают, что за этим стоит большая и сложная работа. Плюс заходят на фриланс сайты, видят непонятные объявления о заказах за 500 рублей, когда кто-то заказывает, и получает предложения на исполнение, и искренне считают, что вот столько это и стоит. Ну может если в два раза больше заплатить, то точно.
При этом какие-то услуги так за копейки возможно получить, школьникам-студентам, живущим за счёт родителей, хочется попробовать чего-нибудь заработать, кому-то хочется влезть вот фриланс и они ради этого что-то почти бесплатно готовы делать.
В итоге у одних возникает моральный настрой на копеечность и отношение к исполнителю как ко дну, они не готовы платить даже за сложные вещи, которые за копейки не сделают (но могут пускать пыль в глаза, что сделают), а другие быстро бросают занятие за бесперспективностью, уступают место другим.
if a <= 10 and b <= 10 and c <= 10 and d <= 10: в более удобоваримом виде.
if (all([True if ch > 10 else False for ch in [a,b,c,d]]))
если так больше нравиться то пжлста
О, вот так заебэга, спасибо.
Бдять, чет через пип ставить начал, под конец высралось все красным и там одни ошибки. Почитал, пишут мол надо накатывать на 2.7, с остальными тип ебано, а я 3.9 скачал вот только и 3.8 стоит старая. Ну и бля в другом месте вообще пишут мол надо в виртуальном окружении это делать. Попробовал virtualenv поставить, потом хуй знает че делать. Нихуя не могу разобраться чет, скачал книгу про скрапинг, но она 16 года. Полистаю бдядь
Я прочитал укус питона и нихуя не понял. Теперь читаю Лутца и благодаря первой книге во всё врубаюсь. Но там 1600 страниц.
Ты хочешь изменить после применения декоратора? Тогда, наверное, только если вот так https://ideone.com/f7xgzl но это наркомания какая-то.
А если просто добавить дополнительный параметр к декорируемой функции, то, наверное, вот так: https://ideone.com/H4Qsiv
Я наоборот по укусу заебись пробежался, а с лутца обзмеился и засыпал блять пока читал
Пробежался то я пробежался. Я книжку понял. Я не понял питон.
Скучно читается только вводная часть, а потом уже идёт конкретика. Очень подробная и дельная. Я из тех людей, кого больше обламывает чувство неопределённости, а не объём информации. Лутц не оставляет вопросов, которые не знаешь как задать. Если чего-то не понял, то знаешь что не понял и куда гуглить. Но он конечно заебал объяснять что 2+2=4 и повторять это 3 раза чтоб я не забыл. На третий раз уже сомневаешься что понял. Ведь такую простую вещь три раза повторять не будут? Будут. Ещё четвёртый раз объяснит падла такая. Ещё про питон 2.хуйморжа расскажет, как они в 40е годы писали это не так как сейчас. Но мне по кайфу.
спасибо. очень помогло.
вот то что он везде пистон 2 вставляет, ет да бесит в книге. А так то что нужно для понимания всего базиса. Дальше уже К вершинам мастерства читать и Книгу рецептов питона.
А потом все это смазать алгоритмами Кормена.
Дальше уже в специализацию можно уходить.
А что ты хочешь обсудить? Одно дело если ты хочешь вкатиться в ботописатели, другое если тебе надо по-быстрому бота написать, чтобы одноклассников удивить. Опиши задачу, чтобы знать куда тебя посылать.
Я хочу, чтобы бот подписался на каналы на Ютуб и присылал мне не видео, а аудио с них, например.
Ещё хочу ленту из нескольких рсс источников с instant view.
Я сунул в свою группу бота, который присылает видео из каналов на Ютуб, и бота, который по ссылке на видео присылает аудио, но второй бот не реагирует на сообщения первого и мире нужно переслать сообщение первого в ту же группу, тогда второй пришлёт аудио. Ну хоть так, хотя хотелось бы лучше.
Тебе нужно будет примерно следующее:
- Любая библиотека для написания бота
>чтобы бот подписался на каналы на Ютуб
- Любая библиотека для общения с youtube api
>присылал мне не видео, а аудио с них
youtube-dl такое умеет, например.
Если раньше не программировал, то будет сложно, да и не стоит оно того, ради одного бота страдать. Проще найти готового.
>>25232
Они и не должен реагировать https://tlgrm.ru/docs/bots/faq#pocemu-moj-bot-ne-vidit-soobsenij-ot-drugih-boto
Если эти боты на гитхабе валяются, то можно попробовать их объединить.
Если написать "python iebalmamash.py", то все библиотеки запустятся, но судошные права программа не не получит.
А если написать "sudo python iebalmamash.py", то питон не найдет библиотеки. Почему? Как дать судошные права проге?
(В общем то м.б. это XY проблема. У меня ардуина с большой вероятностью шлет нахуй при попытке подключиться к ней. Малина говорит что порт занят.)
Нужно создать .exe из кода. Делал по инструкции через pyinstaller --onefile main.py
А по итогу такая залупа. Как сделать .exe из .py?
Пользуюсь Anaconda. Pyinstaller до последней версии обновил
Тогда непонятно. Видимо питончик устанавливает библиотеки куда-то в домашнюю директорию пользователя. Гугл говорит, что надо sudo с ключом -E запускать.
- репост из тг-канала в мой канал с вайтлистом либо блеклистом содержимого
- подписка на ветку форума 4пда с вайтлистом парсинг
Посмотри что внутри этого /usr/bin/python
Уверен там йобаскрипт, который выбирает нужный питон через такую-то матерь.
И ещё, запусти каждый из питонов и напечатай sys.path
Казалось бы, причём тут телеграм..
abs((x2 - x1) ✱ (y2 - y1))
Ты лучше ошибочки почитай и погугли. Тебе скорее всего компилятор для какой-то хуйни нужен.
А какую книгу Лутца ты прочел?
Только не говори что "Изучаем Python" Том 1 и 2 Марка Лутца.
Я только что пытался ЭТО читать - и более занудной, неудобной для чтения и восприятия написанного книги я не встречал.
>>25069
>а с лутца обзмеился и засыпал блять пока читал
>Скучно читается только вводная часть, а потом уже идёт конкретика. Очень подробная и дельная. Я из тех людей, кого больше обламывает чувство неопределённости, а не объём информации. Лутц не оставляет вопросов, которые не знаешь как задать. Если чего-то не понял, то знаешь что не понял и куда гуглить. Но он конечно заебал объяснять что 2+2=4 и повторять это 3 раза чтоб я не забыл. На третий раз уже сомневаешься что понял. Ведь такую простую вещь три раза повторять не будут? Будут. Ещё четвёртый раз объяснит падла такая. Ещё про питон 2.хуйморжа расскажет, как они в 40е годы писали это не так как сейчас.
Наверное придется эту занудную книгу прочесть...
Но я наверное с ума сойду пока буду читать это...
>Наверное придется эту занудную книгу прочесть...
>Но я наверное с ума сойду пока буду читать это...
Мне кажется, что такие книги ещё более-менее можно читать с нуля. А когда уже что-то знаешь и умеешь, читать их невозможно.
Мы с тобой точно про одну и ту же книгу говорим?
Цитата из "Изучаем Python" том 1, Часть II. Глава 4. "Введение в типы объектов Python":
"В настоящей главе начинается наше путешествие по языку Python. Неформально в Python мы делаем дела с помощью оснащения. “Дела” принимают форму операций, подобных сложению и конкатенации, а “оснащение” относится к объектам, на которых мы выполняем такие операции. В этой части книги внимание будет сосредоточено на оснащении и на делах, которые наши программы могут делать с его помощью.
Простите за формальность. Я специалист в области компьютерных наук. Выражаясь чуть более формально, данные в Python имеют форму объектов — либо встроенных объектов, предоставляемых Python, либо объектов, которые мы создаем с применением классов Python или внешних языковых инструментов, таких как библиотеки расширений С."
Просто. Вчитайся. В. ЭТО.
Это ж постараться надо, чтоб такое написать.
У Лутца была цель чтоб никто ничего не понял? Если да - то он справился.
Ну хуй знает, я все понял и написано не так уж плохо. Сейчас читаю Фрэнка Герберта в переводе, вот там такой мафндфак иной раз. Почему я техническую литературу читаю так неохотно, пиздец.((
Скорее всего да.
Если это не в обертках над другими либами, где kwarg используется как проброс параметров, то скорее всего да
Да седня гляну. Кст еще вопрос, стоит ли накатывать анаконду? Я прост когда учил пистон, хуярил тупо в идле и в нотепад++. Про анаконду в книгах чет нихуя не было, а в треды не залазил чет
Анаконда это набор научных пакетов, которые бережно скомпилировали, добавили все нужные зависимости, которые через пип не ставятся, чтобы всякие машинные обучатели не ходили не форумы и не спрашивали почему у меня пип инсталл упал с ошибкой. Конечно же там далеко не всё, и выборка пакетов именно научная. Тебе оно скорее всего не нужно.
Хм, окей. Тогда повременю с этой херней пока что, а то и так слишком дохуя информации чет. Спасибо
Первый том дочитываю, да.
>Просто. Вчитайся. В. ЭТО.
>Это ж постараться надо, чтоб такое написать.
Это переводчики такие. Переводить книги давно уже разучились, была хорошая советская и постсоветская культура, когда переводили действительно хорошо, книги не уступали оригиналам. А сейчас говно, тяп-ляп, похоже на автопереводчики, надо в уме переводить обратно, чтобы смысл был ясен. В оригинале же всё лучше:
========
This chapter begins our tour of the Python language. In an informal sense, in Python, we do things with stuff. “Things” take the form of operations like addition and concatenation, and “stuff” refers to the objects on which we perform those operations. In this part of the book, our focus is on that stuff, and the things our programs can do with it.
Somewhat more formally, in Python, data takes the form of objects — either built-in objects that Python provides, or objects we create using Python or external language tools such as C extension libraries.
===========
Мой беглый перевод:
В этой главе мы начинаем наше путешествие в мир Питона. Неформально говоря, в Питоне мы "делаем что-то" с какими-то "вещами". "Что-то" это разного рода манипуляции, вроде сложения чисел или слияния строк, а "вещи" это объекты, над которыми мы производим эти манипуляции. В этой части книги мы сфокусируемся на этих "вещах" и на том, что наши программы могут с ними делать.
Более формально, в Питоне данные представляются в виде объектов — как тех, что предоставляет сам Питон, так и тех, что мы создаём сами на языке Питон или с помощью расширений, например на языке Си.
===========
Мой вариант тоже далёк от высокой культуры перевода, но ИМХО уже более понятен. Если переводить так или чуть лучше, то читать уже можно. Ну или надо читать оригинал.
Просто правило для любой технической или научной литературы. Нужно или читать ХОРОШИЙ перевод, или читать оригинал. С хорошими переводами сейчас тяжело. Какие-то индустриальные вещи иногда хорошо переведены, скажем по Postgres документация (несколько тысяч страниц!), но в основном переводы говно никуда не годное.
>Просто. Вчитайся. В. ЭТО.
>Это ж постараться надо, чтоб такое написать.
Это переводчики такие. Переводить книги давно уже разучились, была хорошая советская и постсоветская культура, когда переводили действительно хорошо, книги не уступали оригиналам. А сейчас говно, тяп-ляп, похоже на автопереводчики, надо в уме переводить обратно, чтобы смысл был ясен. В оригинале же всё лучше:
========
This chapter begins our tour of the Python language. In an informal sense, in Python, we do things with stuff. “Things” take the form of operations like addition and concatenation, and “stuff” refers to the objects on which we perform those operations. In this part of the book, our focus is on that stuff, and the things our programs can do with it.
Somewhat more formally, in Python, data takes the form of objects — either built-in objects that Python provides, or objects we create using Python or external language tools such as C extension libraries.
===========
Мой беглый перевод:
В этой главе мы начинаем наше путешествие в мир Питона. Неформально говоря, в Питоне мы "делаем что-то" с какими-то "вещами". "Что-то" это разного рода манипуляции, вроде сложения чисел или слияния строк, а "вещи" это объекты, над которыми мы производим эти манипуляции. В этой части книги мы сфокусируемся на этих "вещах" и на том, что наши программы могут с ними делать.
Более формально, в Питоне данные представляются в виде объектов — как тех, что предоставляет сам Питон, так и тех, что мы создаём сами на языке Питон или с помощью расширений, например на языке Си.
===========
Мой вариант тоже далёк от высокой культуры перевода, но ИМХО уже более понятен. Если переводить так или чуть лучше, то читать уже можно. Ну или надо читать оригинал.
Просто правило для любой технической или научной литературы. Нужно или читать ХОРОШИЙ перевод, или читать оригинал. С хорошими переводами сейчас тяжело. Какие-то индустриальные вещи иногда хорошо переведены, скажем по Postgres документация (несколько тысяч страниц!), но в основном переводы говно никуда не годное.
Да, перевод плохой. Есть даже термины, которые в таком контексте у нас никто не использует. Не вспомню примеры. Так что при любом затруднении надо открывать оригинал и смотреть что там было за слово.
Увы, если бы.
1) питон и джанго
2) шарп и дотнет
к обоим язык отношусь хорошо. Шарп привлекает чуть больше тем, что у него статическая типизация и по субъктивному моему мнение, он лучше для бекэнда заходит
Но на питоне вариант вкатиться прям на текущей работе, потому что стек в беке питон + го
Сори мисклик
Бамп вопросу, я с ума сойду скоро с этой дичью
Странно, пользуюсь пайинсталлером, нет таких проблем. Ты прямо батником делаешь?
У меня так:
@echo off
set file=имя_файла_без_расширения
set localpath="путь_до_папки_с_файлом\%file%.py"
set pythonpath="путь_до_пистона\Scripts"
cd /d %pythonpath%
pyinstaller.exe --onefile %localpath%
move %pythonpath%\dist\%file%.exe "путь_куда_поместить_итоговый_экзешник"
pause
Ccсука, на следующий октябрь перенесли.
Tg @yellowpearl
русс версия 2011 года выпуска вроде
en 2013.
На сколько информация в данной книге актуальна?
Или это золотая классика питониста?
Возможно есть более свежие, упитанные тома по питон(версии 3.6+)
Если читали и то и другое, то реквест-мнением поделитесь .
Русский язык вреден для обучения программированию. В терминологии страшная каша.
спасибо
Ну такое. Старое форматирование строк времён py2, ospath вместо pathlib, всякие технологии древних вроде CGI под апачем, tkinter вместо нормального тулкита, вместо PIL надо Pillow. Мне конечно нечего предложить взамен, я не спец по книгам для начинающих, в целом наверное даже всё что есть в этой книге сработает на современном питоне, но будет местами устаревшее.
Потому что никто кроме тебя это не решит. Максимальная субъективщина. Ну ещё в шарпе нет гила.
>называется cython
Использую эту штуку для защиты программ от декомпиляции. Очень здорово и просто.
> Идеально подходит
Нет ничего более постоянного чем временное. Потом люди пилят дофига всего под этот ткинтер и страдают.
[z for z in list123 if z in list 345]
У подобной конструкциии линейная временная сложность?
Алсо, всякие условия вроде if добавляют сложнотсь к циклам?
>[z for z in list123 if z in list 345]
>У подобной конструкциии линейная временная сложность?
O(mn), где m и n - размер первого и второго списка. В общем, можешь считать что квадратичная. Проверка есть ли элемент в списке сама по себе имеет линейную сложность. Хочешь быстрее - преобразуй второй список в сет - тогда будет O(m + n), то есть линейная.
А вообще, твою хуйню лучше переписать вот так: set(list123) & set(list345).
>>26248
>Алсо, всякие условия вроде if добавляют сложнотсь к циклам?
Зависит от того, что находится в этих условиях.
Спасибо.
>Зависит от того, что находится в этих условиях.
Ну, если дргой список, о вроде выяснили, что квадратичная.
А если константа - линейная?
Какую книжку по алгоритмам и их сложности почитать?
>А если константа - линейная?
Не понял вопроса. Проверка элемента в сете - константа, поэтому если второй список заменить на сет, то сложность изменится на линейную.
>Какую книжку по алгоритмам и их сложности почитать?
Гугли туториалы. Сложность алгоритмов без ненужных изъебов можно понять за один вечер, книги не нужны.
Из этих книг есть смысл читать что-то одно, и то, если ты совсем плохой в программировании. Заходит нормально — читай дальше. Те у кого уже есть опыт с другими языками, обычно читают docs.python.org и им всё понятно.
Я тебе могу предложить довольно трудоёмкий, но такой чтобы наверняка, метод. Напиши тестовый стенд для анализа алгоритмов. Попробуй бенчмаркать всякую хуйню увеличивая N, и с помощью matplotlib строить график как много времени занимал бенчмарк в зависимости от N. Построй на одной картинке несколько графиков разной реализации задачи. Вот самое простое: item in list против item in set против бинарного поиска в сортированном массиве. Будет очень наглядно и интересно. Если помнишь школьную матешу, то легко там найдёшь линейную, константную и логарифмическую сложности.
Это немного не то. Это можно интерактивно там спавнить себе процессы.
Я имею в виду что-то типа демона, т.е. чтобы сторонний софт управлял их запуском, количеством и т.д.
https://pm2.keymetrics.io/
Systemd, supervisord, docker-compose, тысячи их.
Celery
>>25335
Спасибо за советы, с этим разобрался, но дальше еще хуже, пиздец. Все отлично запускается и даже работает, но когда скрипт доходит до момента
img = ImageGrab.grab()
Перезапускает приложение. Нагуглил, что проблема в том, что виндовс не имеет команды spawn и нужно использовать multiprocessing.freeze_support()
, но я блять везде уже этот кусок кинул и не помогает.
bigger = lambda a, b: a if a > b else b
target = {'a': 2, 'b': 1}
print(bigger(target))
а етот крашится:
#bigger = lambda a, b: a if a > b else b
bigger = lambda x, y: x if x > y else y
target = {'a': 2, 'b': 1}
print(bigger(target))
Почему!??
бляя, сорян я тут новенький
Именно так, но ведь в анонимную функцию должны падать только значения из словаря... По крайней мере мне так казалось.
Тимлид на связи
Как сделать что бы переменная в функции(хп врага) обновлялась при каждом вызове функции ?
Мой дерьмовый код:
player_lvl = 1
hp_player = (player_lvl*80)
hp_enemy = (hp_player-10)
print(hp_enemy)
damage=random.randint(2,10)
#переменная для хп после нанесения урона
hp_damage = hp_enemy
def attack_act():
print("\nНанесено урона: ",damage)
#если хп полное то
if hp_damage == hp_enemy:
hp_damage = (hp_enemy)-(damage)
print("Здоровье врага: ", hp_damage)
else:
hp_damage = (hp_damage) - (damage)
print("Здоровье врага: ", hp_damage)
Приняли на работу в автоматизацию бизнес процессов на 192р/ч, после прохождения курсов по rpa, но когда прислал сертификаты мне сказали что у них проблемы и мне ответят к концу недели, так что даже не факт что работать буду, а остальные 100 откликов отказ, либо не просмотрели, либо тестовое сделай но отказ
Благодарю
Абсолютно неважно. Как удобнее так и делай.
Очень надо срочно, жопа горит сука!
Здесь же у тебя две звёздочки перед target в первом вызове?
Всё дело в том, что в первом случае переменные распаковываются из словаря аналогично bigger(a=2, b=1) и ключи словаря должны соответствовать именам переменных в теле функции bigger, а во втором случае ты просто передаёшь словарь в качестве первого аргумента x, а второй аргумент y оставляешь пустым.
Нет такого. Это занятие для конченых извращенцев. И они, чтобы не палиться, публичных мануалов не пишут.
Но вообще вот тебе библиотека https://pythonhosted.org/fbpy/
На фреймбуфер вроде бы можно даже Qt/Gtk завязать, но я не умею. Вон там какой-то qt for embedded linux https://doc.qt.io/archives/qt-4.8/qvfb.html
Чо это непонятно? Намного понятнее классов в большинстве случаев.
Почитай о классах
Мимо бекенд разработчик стек Python/Django. Перепробовал много дистрибьютивов, остановился на Linux mint - это что касается ос для разработки, а для деплоя CentOS или Ubuntu server. Для работы с виртуальным окружением использую pipenv.
О, заебись, практически то что нужно. Спасибо, Анонасий!
Этот def выполняется один раз при старте программы, определяя функцию.
Чем думал? Жопой?
На эту тему есть старый анекдот: научился ежик жопой дышать, сел на пенек и умер.
В чем космический эффект именованного параметра "a" с рандомным значением по умолчанию?
Используй a = random() в теле функции, а из ее параметра убери его нахер.
Он используется только среди модулей?(не скриптов)
Например есть такая схема
project-
--tuilet-
----__init__.py
----mo4a.py
----govno.py
--main.py
Я могу использовать относительный импорт из мочи в говно вида:
from . import mo4a
И вроде интерпретатор это сьест. А вот если я попытаюсь запустить говно, он выблевывает ошибку :
ImportError: attempted relative import with no known parent package
Так же пытаюсь через относительный импорт импортировать мочу в main
from .tuilet import mo4a
по идее должен сработать ведь оба на верхнем уровне проекта, но хуй. он опять сыпет ту же самую ошибку.
Но как только точку убрать, он это проглатывает.
Так вот, что за хуита с относительном импортом в питоне?
Его вообще хоть кто-то сейчас использует?
До него все кристально понятно было с импортами. Как только прочитал, решил как тру-кодер сразу использовать и все смешалось к хуям.
Мне тоже вот казалось что все понял пока сам с этим не столкнулся, импорты в питоне для новичка это какая-то неведомая хуйня, которая работает по непонятным правилам
Я, но еще даже не смотрел, что там нового
Спасибо.
Ну прости, что в питон не завезли человеческий тернарый оператор с проверкой на nullnone-овость.
Т.е. меня заёбывает каждый раз печатать:
$ python3
>>> import queue
>>> help(queue.Queue)
я хочу:
$ openpydoc queue.Queue
на второй картинке кода, в функции ClickButton2 есть строчка wayToFile = os.path.abspath(k), которая должна сохранять абсолютный путь к файлу, обрабатываемому циклом. Но загвоздка в том, что если скрипт пайтона не в той же директории(у меня это диск Д), то выбивает ошибку, в которой абсолютный путь к файлу определяется как директория скрипта + название обрабатываемого файла. Из-за этого скрипт не может найти файл.
Если скрипт в той же папке, то все робит...
x = int(input())
y = int(input())
x1 = int(input())
y1 = int(input())
if x == x1 and y1 == y + 1 or y1 == y - 1:
print("YES")
elif y == y1 and x1 == x + 1 or x1 == x - 1:
print("YES")
elif x1 == x - 1 or x1 == x + 1 and y1 == y + 1 or y1 == y - 1:
print("YES")
else:
print("NO")
У тебя operator precedence сломан. or выполняется после and.
Да и вообще
if (x, y) == (x1, y1):
..print("NO")
elif max(abs(x - x1), abs(y - y1)) <= 1:
..print("YES")
else:
..print("NO")
Лучше написать на JS. Но можно ещё соорудить гибрид, где JS отвечает за представление и ввод, а headless процесс на питоне управляет состоянием и логикой. Общение с питоном по stdin/stdout какими-нибудь жсонами.
Кстати ещё надо выход за пределы поля отсечь по идее.
Относительный путь, который тебе отдал диалог, скорее всего отсчитывается не от текущего каталога программы, а от какого-то другого.
Свежачок, ещё даже на радиот не обсудили. Выглядит интересно, но скорее всего будет нежизнеспособным говном, как и все подобные проекты.
Или через месяцок-другой?
Есть модуль, а есть пакадж. Пакаджи это такой маппинг имя→каталог. К примеру sqlalchemy превратится в /usr/local/lib/python/site-packages/sqlalchemy/.
Естественно, относительные пути возможны только внутри пакаджа, чтобы ты не делал всяких import ....etc.passwd. За пределы пакаджа ходить нельзя. А внутри пакаджа, таки да, всё почти как путь к файлам, и вниз и вверх и куда угодно.
Похуй. Там не так много нового. Да и в обучающих материалах этих фич ещё нет.
пацаны, решил проблему гениально:
wayToFile = folder_selected +'\\\\' + os.path.basename(k)
сделал переменную ""выбранная папка"" глобальной + добавил к ней \\(чтоб не было экранирования, надо еще \\) + добавил просто имя файла
все заработало
Спасибо
но модули в пакете(с относительным импортом) ,как скрипты запускать нельзя, так?
А как тогда тестирование проводить?
Единственное, что на ум пришло, это писать тесты внутри мода, потом этот мод импортировать за пределы пакета и его запускать через if __name__ == "имя мода"
Но больше похоже на кастыль.
Тот же анон
python -m pkg.subpkg.module
Вообще в пакадже можно создать аж целый файл --main--.py, который запустится от python -m pkg
Да хоспаде, че там переползать.
Вкатывальщик разницу между тройками не увидит. А когда увидит - будет уже уметь перекатываться между разными версиями за минуту.
Единственное, наверное, не стоит изучать на версии ниже 3.6.
Аналитический склад ума?
Там обычным питонячим синтаксисом все задачи решаются.
Ну, чтобы повыёбываться краткостью решений, надо уметь писать ванлайнеры, лямбды и пользоваться zip и map. Ну может ещё декораторы местами.
Пока PEP554 не примут можно на 3.7-3.8 сидеть, там хоть sec fix есть.
Что такое гит?
Знал. Я об другом.
настройки медиа сделал. Единственное, что в bulk_create я указываю расположение файла "ChapterImg.objects.bulk_create([ChapterImg
(img=c.extract(d, path=img_directory_path)" где img_directory_path это сохранение файла в папке media
за месяц поднял овер 1000 хонора, с 4 куя добрался почти до 2го (80%), решил 36 4ых куев и 6 3их. Ответ — никаких особенных знаний языка не нужно, я даже с классами не умею обращаться (self, init — шта?). Не использую никаких библиотек (кроме мб math), никаких вышеупомянутых zip, map и прочих лямбд. Так что там действительно все стандартными средствами решается.
Знаю я, естественно, больше, чем месяц назад. Какие-то методы, алгоритмы узнал и применил. Думаю поднять 1 куй на этой дрочильне и начинать писать свой проект.
Не имею ровно нихуя опыта в программировании, решил вкатиться в Питон, начал с книги "Python для детей" из здешнего списка, подумав, что выбрав книжку для детей точно не прогадаю. Большая часть книги читалась нормально, я без особых проблем решал задачки в конце и делал себе пометочки, в целом, изучение шло довольно гладко
Потом дело дошло до создания двух игр в конце книги - и на этом моменте всё пошло по пизде. Я перестал до конца понимать что нахуй делает автор, а уж задачки в конце это вообще забудьте. При этом нельзя сказать что я учил на похуе или без энтузиазма, наоборот - мне вполне доставляло. Вопрос такой: стоит ли мне бросать это дело, если я даже детскую книжку не в состоянии целиком осилить? Есть ли тут те, кто тоже эту книгу читал, были ли у вас похожие проблемы? Я совсем даун, или только олигофрен?
если у тебя встает член от правильной логики и от решения задачек на них и ты готов гнаться и поглощать новые зания до конца жизни, то программач это твое.
Если этого нет, ты выгоришь к хуям.
Так что можешь сразу пиздовать асфальт укладывать
дружок , ты тоже выгорешь!
А тебе точно до конца нужно понимать? Может стоит просто повторять и вникать только в то что автор объясняет?
У строки есть метод .startswith()
Попробуй "Изучаем программирование на Python", Пол Бэрри.
Я тоже очень мало понимаю из тех книжек, которые читаю. Прочел "Грохаем Алгоритмы" - понял только что такое бинарный поиск, все остальное - непонятно и сложно.
Прочел "Укус Питона" - понял что такое переменные и еще немного.
Прочел "Делаем игры на Python" (точно не помню как книга назывались) - вроде первые 20% книги понял, но когда пошли сами игры (Виселица, Угадай слово и др.) - нихрена не понял.
А Пол Бэрри вроде неплохо объясняет.
А вообще, не сдаваясь и не бросая это дело, я постепенно начинаю понимать что есть что в Python.
Постепенно.
Главное не сдаваться.
Ты осознаешь, что по сравнению с Прирожденным Программистом ты - ничтожество ?
Почему вы сопротивляетесь мистер Андерсон?
по каким материалам изучаешь?
Он вернулся
Можно ли изучать ООП, скипнув функциональщину? И если да, то посоветуйте какие-нибудь туторы. С написанием самого класса вроде проблем нет, а вот как при помощи ООП описать бизнес-логику, я вообще не понял.
можно, даже больше скажу, можно изучить ООП даже пропустив переменные, циклы, условия, и основные типы данных,
Гляди чичас быстренько пробегаешься глазками по SOLID'у дальше начинаешь изучать основные паттерны, такие как фабрика синглтон команда и тд. ну и можно подавать резюме на джуниор систем архитектор, алсо и сам питон нахуй тоже скипнуть можешь, можешь не благодарить
ну я серьезно по большей части ответил, ты написал что хочешь писать бизнес логигу через ООП только П в данном случае про проектирование, а не про программирование
Не, я говорил именно про программирование. Бизнес-логикой я называю структуру программы. В функциональщине все просто - функция обрабатывает ввод, через ретурн опционально отправляет результат обработки в другую функцию и так, пока информация не будет готова к выводу.
А как этот пайплайн выглядит в ООП - я вообще нихуя не понимаю. Т.е. вот я создал класс хуман, вызвал конкретный инстанс. И что?
>вот я создал класс хуман, вызвал конкретный инстанс. И что?
и все, поздравляю вы освоили ООП
а уж если писать ООП структуры извольте освоить типы данных, и прочую патерную солидохуйню на уровне чуть побольше чем просто глазками пробежаться
Или найди какой нибудь фреймворк который все за тебя сделает
БЛ это, что должна делать прога по мнению её заказчика.
Это не всегда выглядит как переработка исходных данных в результат.
Например управление псарней. Есть псы, будки, миски, корма и проч, и задача описана в этих терминах. Тогда создаёш классы пёс, будка и проч. Потом пишешь БЛ на Питоне так, какк она задана, используя объекты этих классов.
У меня складывается впечатление, что солиды и паттерны кодеры пытаются изучать гораздо раньше, чем они им реально потребуются. Если вообще потребуются.
Алхмия это хорошо... Но будет ли она хорошим выбором для нового проекта, когда есть tortoise, Gino, async-peewee
b = 427
c = 12000000
d = ((a b) + c) / 100 3)
e = (a 427 / 10)
print(d)
print(e)
Ошибка
Traceback (most recent call last):
File "D:/Python/pythonProject3/main.py", line 4, in <module>
d = ((a b) + c) / 100 * 3
TypeError: can only concatenate str (not "int") to str
В чем проблема? Помогите пожалуйста.
a = input(int())
b = 427
c = 12000000
d = ((a умножить b) + c) / 100 умножить 3
e = (a умножить b / 10)
print(d)
print(e)
Пофиксил
Разобрался вроде, надо было в 4-й строке сделать (int(c)) вместо c.
Но в 5-й строке вылезло
e = (a * b / 10)
^
SyntaxError: invalid syntax
В чем здесь ошибка синтаксиса?
Интересно, и в PyCharm и в стандартной питоновской IDLE вылазит ошибка синтаксиса.
a = input()
b = int(427)
c = 12000000
d = ((a b) + (int(c)) / 100 3
e = (a * b / 10)
print(d)
print(e)
Убрал. Все равно та же ошибка.
Вспомни зачем у тебя там вообще был инт, его не просто убрать надо. А в четвертой строке у тебя скобка незакрытая
Отладка вообще через жопу работает. Иногда нажимаешь на паузу - и просто всё виснет, ни на консоль отладки не реагирует, вообще ни на что. Нажимаю на треугольничек, типа продолжить, ноль реакции, прихоидится завершать отладку, а там долго работало и жалко всё.
Вобщем посоветуйте среду для пайтон + керас которая не говно.
Он правда лучше, чем вижуал студио код? Пользовался им? Расскажи про него пожалуйста.
>Он правда лучше, чем вижуал студио код?
Да. Вскод это вообще текстовые редактор на тормозном электроне, а не IDE.
>Пользовался им?
А ты как думаешь?
>Расскажи про него пожалуйста.
Что именно рассказывать? Конкретно по твоим вопросам - производительность во много раз лучше, чем у вскода, но моментального отклика все равно не ожидай. Если в классе пара сотен больших методов, то подсказка появится только через секунду. Аналогично с проверкой синтаксиса - некоторые вещи не моментальны, но по сравнению с вскодом вполне терпимо. Отладочные инструменты тоже намного лучше.
Спасибо за отзыв, попробую пайчарм.
Ну если с анонами хочешь - есть вариант.
Правда я сейчас немного не в состоянии его пилить, уже 2 месяца как.
Если ты вообще спрашивал - ищи либы/приложения какие питоновские на гитхабе, по близкой тебе тематике и читай как в них контрибутить.
Ссылочку бы.
С первыми двумя я работал в проде, ибо один еблан их туда притянул. Это пиздец и нахуй.
Gino - ебаное поделие от китайца, никогда не связывайся с китайцами, они скам хуже индусов, ибо производительней и более цпертые, документация, примеры и решение issues страдает.
Pewee - давно юзал, но тоже не зашло ибо были проблемы с пулом конектов и тоже проблемы с инфой о ней и доками.
В этом плане алхимия топчик, ибо ей уже хулиард лет и всё возможные и невозможные грабли она прошла.
По асинхронным НЕорм могу подсказать - asyncpg, использовал именно ее когда это надо было.
Фреймворк использую Fastapi
Может уже есть готовые либо чтобы не пилить велосипед?
настройки медиа сделал. Единственное, что в bulk_create я указываю расположение файла "ChapterImg.objects.bulk_create([ChapterImg
(img=c.extract(d, path=img_directory_path)" где img_directory_path это сохранение файла в папке media
Почему данный код отправляет двоечку на ардуино.
ser = serial.Serial('/dev/ttyUSB0', 9600, timeout=1)
ser.write('2')
А этот код отправляет мое очко в зрительный зал?
В общем, он ноль отправляет.
machinki = 0
machinki = output_count.get('car')
print("Car =", machinki) // вот здесь я вывожу значение листа и значение есть. Ноль перезаписывается.
ser.write('machinki') // отправляется аж нихуя, но целый ноль
Дополню что эта строчка есть и во втором варианте кода. ser = serial.Serial('/dev/ttyUSB0', 9600, timeout=1)
Почему там именно три переменные, типа root, dirs, files
Так сделали разрабы? Можно свои переменные, и важна ли последовательность обхода? root - это путь как я понял, остальное и так ясно.
import os
import shutil
os.chdir('/home/andrew/.local/share/Trash/files/')
if os.listdir() == []:
print('Trash is empty')
else:
for root, dirs, files in os.walk('.'):
for d in dirs:
shutil.rmtree(os.path.join(root, d))
for f in files:
os.unlink(os.path.join(root, f))
print('Now trash is empty')
def greet_all(names: list[str]) -> None:
for name in names:
print("Hello", name)
Какая-то нех в скобках. Что значит : и -> поясните плис.
Так Большие Дяди пишут
это аннотирование типов, чтобы ты знал что куда лучше подавать и что откуда возвращается
Где-то на уровне Hello world! Ну и всякие if/else и replace. Квест текстовый даже создал, но до компиляции в exe не дошел еще.
Видел упоминание Upwork, Fiverr, Toptal и Freelancer.com.
А вообще интересно, какие работы в данном контексте имеют спрос?
Так я у тебя и спрашиваю :3
Я кворке и фл ру встречал только парсер, сайт, еще odoo. И все. На хх ру надо уже знать фреймы типо фласка и джнаги. На ангельских смущает то что тз будет на ангельском. Да еще может и не понравится результат. И тд и тп. Я бы поработал чисто за еду, тк есть возможность пока. Чтобы тупо научиться.
Сам код работает.
Функция определена в модуле.
https://prnt.sc/uz3hzt
Как лечить?
плюсую, работал с CAN интерфейсом по повледовательному порту - только байтики и хуй соси
И вдогонку подскажите, поставил в вскод дополнение batisteo.vscode-django для джанги, оно подсказываетджанговские теги, но убивает все автодолнение хтмл, так и должно быть? Приходится для одного файла переключаться в разные language mode.
> Разве rmtree не удаляет и файлы тоже?
тащемта вроде только папки.
Открыл для себя pathlib и влюбился. Намного круче чем os, globe, shutil и прочее. Все в одном флаконе.
Предполагаю, что в книге, когда начинают делать игру, используют библиотеки, а осознание что такое методы, поля, классы придет позже. Я тоже не понимал, когда читал укус питона, что вообще происходит, когда автор начинает использовать непонятные методы строк и почему это так работает, так что просто повторяй и вникай в самые базовые понятия
Да. Я на бэшечке спросил, там намекнули что ардуина жрет только чары, и неипет.
собираюсь освоить django, написать парсер, на какой ОС будет удобнее/проще?
или нет разницы?
На Болджен ОС пиши. Там нескучные обои.
Линух.
Удобнее.
Я конечно и на винде писал хуйню, но мне не понравилось. Куда она там устанавливает говно, какие команды прописаны, ебал рот просто.
Хотя если ты собираешься писать скрипты рисования хуя в консоли, то можешь выбирать что хочешь. Хоть вышеупомянутый болген ос.
Хотя следует пиздануть, что болген вроде какой-то пижженый дистр линукса, поэтому да.
Пиши на болгене.
>Линух.
>Удобнее.
Не вводи людей в заблуждение. С точки зрения удобства один хуй на чем писать - работает одинаково. Разница лишь в том, что винда не поддерживает 0.1% библиотек, с которыми вкатывальщик никогда не столкнется. Ну и в некоторых деталях имплементации питона, влияющими на производительность, которые ты тоже скорее всего никогда не узнаешь.
Notepad++, конечно же. Обмазать плагинами — и лучше не завезли.
>а осознание что такое методы, поля, классы придет позже
Я их осознал, когда почитал книжку по Джаве, лол. А до этого хуярил десктопные аппы на PyQt5 по методичке без понимания, нахуя классы, инстансы, селфы - вот это все.
Что почитать для общего технического развития? Я уже работаю питонистом и хочу развиваться дальше. Есть смысл читать всякие "Идеальный код" и прочее?
https://pastebin.com/8NPWvpTG
Собственно вопрос, почему декоратор wraps из functools в данном случае не копирует оргументы исходной функции? и как сделать, чтобы копировал?
пили историю,как им стал
вопрос снят, все копирует. просто я тупой.
https://proglib.io/p/27-puzzle-websites-to-sharpen-your-skills/
из этого списка что самое лучшее для изучения питона?
Не знаю, честно говоря. Я просто codewars сборники решал в свое время, там были задачки на набивание руки, алгоритмические тренажеры и прочее.
Насколько я знаю, только так: [[i, -i] for i in range(n)].
А чтобы сделать список плоским используй more_itertools.flatten:
import more_itertools as mt
var = list(mt.flatten([[i, -i] for i in range(n)]))
А есть ли практическая польза от решения таких задач? Что это может дать, кроме как того же что и решение задачек по шахматам. В реальной жизни это пригодится? И как лучше юзать, выбирать по тегам, по ку, или задрачивать что-то одно? Я даже хз как подступиться к этому. Сам сайт понравился, сделан круто, воодушевлялет. Я вот изучил питон, и не знаю как это применить на практике, а уж тем более как заработать на этом, ко всему же, нету профильного, наподобии высшего математического, я пробовал пару раз вылаживать на хх ру, но видимо мое резюме, и образование не привлекают работодателя. Хз что делать, но знания есть и руки чешутся, ну и чет поверил в себя.
Ну, это вроде и ответ на вопрос, но ответ мне не нравится. Если уж юзать костыли, то лучше [i//2 if i%2==0 else -(i-1)//2 for i in range(2*n)]
самое лучше в таких сервисах это смотреть самые топовые решение.
И перенимать стилистику написания у них.
Например если нужно выполнить некое кол-во действий, в задаче, имеет смысл ее разбивать на функции. а уж темболее если твой код дублируется 2 и более раз, то сам боженька велел.
Так же и с ООП если строишь дерево, то делай так, чтобы если тебе пришлось сопроваждать код, то для изменения его всей логики, тебе бы пришлось код править в одном месте. а не бегать по всем классам и исправлять ручками.
Говнокод нужно исправлять с детства.
Либо твой ответ бессмыслен, либо я не понимаю его. Можешь написать пример применения zip для создания списка из моего примера?
чтобы получить плоский массив, то нужно писать функцию.(добавлять через .append или срез)
а во включении ты вложенный список получишь. тк генерируется один объект и это елемент списка.
Этика написания кода. pep8 для петона, например, а pep7 для c.
Заучишь как надо, совместно с упражнениями codewars и пет проектами, до автоматизма, считай что ты лучше многих джунов.
>программе нужно произвести некоторые действия с функционалом сайта, что-то отправить сайту, что-то скачать
Гугли например Flask и изучай ну или Django.
А если сайт не на питоне написан, а на условном php?
Везде, где пишется что-то сложнее одноразового скрипта.
selenium
Так-с, блэт, для начала поставь конечную цель, что тебе надо.
А то один фласк советует, лол, а второй - селениум. Вообще две разные степи.
Если ты создаешь веб-сервис И сайт к нему, то фласк/джанго, да.
Если тебе нужно автоматикой прокликать формочку на сайте, то селениум. Это именно графическое (т.е. UI) взаимодейтсвие.
Если достаточно просто получать данные с сайта посредством REST-запросов, то requests. Если нужно аж прям невъебись как распарсить этот сайт на молекулы, то Beautiful_Soup.
Если все настолько просто, чтобы просто залогиниться и скачать что-то по ссылке, то достаточно requests.
как сделать проще зипом?
Массив = []
Фор ай ин раньж(число):
_____массив.аппенд(ай)
_____массив.аппенд(-ай)
Все блять просто и понятно
Нужно чтобы по нажатию 1 кнопки на форуме "двач" создавался аккаунт и в темке зарплатотреда писалось "300к нс программист". Это Beautiful_Soup получается.
На гитхабе куча либ по работе с апихой двоща есть, даже думать не надо.
Спасибо огромное, друг, я раньше в collections не залезал, думал придется свой алгоритм писать, а тут и слово и каунтер есть и все дико просто
какой проект в портфолио ебануть? чтобы все было по-взрослому: многопоточность, шоб средней величины был и тд
Это бессмысленно. Забей хуй на эту ебалу.
Асинхронный инстаграм. Настоящий-то инстаграм на джанге написан, они твой код себе возьмут, а тебе поставят лойс на гитхабе.
Серьезно на джанге. Я сам был удивлен.
Такая задача
Create a function (or write a script in Shell) that takes an integer as an argument and returns "Even" for even numbers or "Odd" for odd numbers.
Я решил ее так
even = range(-1500,1500,2)
odd = range(-1501,1500,2)
def even_or_odd(n):
if n in even:
print('Even')
elif n in odd:
print('Odd')
even_or_odd(-539)
Я даун? Посмотрел решения, там меньше строчек и как-то проще. Но у меня получилось. Но вот проблема будет если ввести 5236. Так что хз решил я или нет. Что думаете?
Я уже переписал) все получилось, надо было четное и нечетное представить как 1 и 0, те n%2, но за поддержку спасибо. Это всегда вдохновляет.
Ты не решил, подумай как можно математически проверить четное ли число. Минусы твоего решения по сравнению со стандартным: отсутствие универсальности (работает не для всех целых чисел), очень медленное (у тебя может быть перебрано 3000 вариантов)
Да не вроде стало получаться. Например, такое задание
You get an array of numbers, return the sum of all of the positives ones.
Example [1,-4,7,12] => 1 + 7 + 12 = 20
Note: if there is nothing to sum, the sum is default to 0.
Я решил так
def positive_sum(numbers):
if numbers == []:
print('0')
else:
suma = sum([i for i in numbers if i >= 1])
print(suma)
positive_sum(numbers = [1,-4,7,12])
Получилось заебком. Но чет кодворз глючит. Не выдает результат типо я охуенен. Но у меня на пайчарме все отработало.
Теперь это госдолг США тред.
Да, есть, даже статью нашел с готовым решением, спасибо
app.run(debug=True)
Всё нормально, ошибок нет, но страница не грузится, сервер не отвечает вообще (в режиме разработчика). Если сервер остановить, то говорит что попытка соединения не удалась, а иначе просто крутится загрузка, типа оджидание ответа сервера. Как победить?
Заработало, лишняя библиотека в импортах торчала. Странно что ошибок не было.
* в моем мозгу возникает только мысль о том то нужно покупать домен, чтобы браузер через dns мог понять на какой ip ему запрос делать
У меня есть такая задача, а я, в свою очередь, не знаю, как к ней правильно подойти.
Дано: hex-массив переменной ЧЁТНОЙ длины.
Примерный вид такой:
DD120134A1A2B3E588 и тд, в среднем len() в районе 200.
Каждый блок из двух символов на фиксированном месте что-то означает.
Например, первый блок DD всегда должен быть DD, означает начало пакета.
Следующий блок, он же байт, 12, означает номер версии ПО (шестнадцатеричная)
Следующие два байта 0134 означают в шестнадцатеричной номер запроса
Следующий байт 1A означает статус операции (возможны три варианта: 1A - принято, 2A - исполняется, 3А - отвергнуто)
И так далее
Вот это всё дело надо расшифровывать, разворачивать из этого пакета в осмысленный текст.
Помоги советом, как это лучше реализовать, как вообще называется правильно эта операция? Это парсинг или что это вообще?
>Что ты сделал сам?
На данный момент у меня несколько словарей, в которые забиты значения каждого байта, соответственно, я сплит по 2 символа делаю, каждый разбираю подряд.
Но код УЖАСНО громоздкий, выглядит так, что моё чувство прекрасного говорит мне, что я долбоёб и всё делаю неправильно. Отдельно хреново то, что некоторые байты не имеют расшифровки, как у статуса операции, а несут собой просто тупо число. Вот на этом я особенно завис.
Питоняши, как лучше организовать работу вот с такими данными? Спасибо:з
Бамп.
Короче скорее всего понадобиться у провайдера подключить услугу белый IP. Это значит, что адрес твоего наверное роутера будет доступен из внешней сети. На роутера тоже нужно будет прокинуть порты, типа чтобы кода приходили пакеты на 80 порты, они уходили на сервер
Нихуя не понял, у тебя одномерный массив байтов или строка?
Код свой покажи хотя бы чтобы было понятно что там у тебя на входе.
Можно и так, и так, но я решил работать как со строкой
https://pastebin.com/tNpRawVs
Вот, короче, так ужасно выглядит фрагмент работы с первым небольшим количеством символов. Учитывая, что их будет в районе 100+, этих полей, чувствую, что код будет ещё большим говном, чем есть сейчас
Обычно используется штатный модуль struct.
Кстати:
message_bytes = bytes(int(x, 16) for x in string.split())
да все ок, есть два замечания
предлагаю генерировать рандомное число, проверять равны ли числа между собой, и, если равны, то смореть в каком из массивов число
вот
ну и -1500 до 1500 маловато, хорош. Ты ведь в питоне: напиши 1e+100 и не парься
И я вот так и не понял, то ли меня похвалили то ли меня обосрали. Но у меня уже на кодворзе получается, юзаю уже методики феншуйные, меньше от сеябтиные, больше лупа, лист компрхеншена, и генераторов.
ну если серьезно, то решение пиздец
но правильно, что сделал работу над ошибками) удачи с этим
ап, где все таки редус?
Например.
Write a program that finds the summation of every number from 1 to num. The number will always be a positive integer greater than 0.
Я решаю так
import functools
def summation(n):
sum = n + 1
suma = range(1, sum)
suma_all = functools.reduce(lambda x, y: x + y, suma)
return suma_all
result = summation(100)
print(result)
Получается, балы засчитаюывают, но как-то громоздко чтоли. Посоветуйте, или тут нужна тупо практика.
Суть в том что у меня есть эксел файл куда я вписываю каждый месяц сколько у меня денег в трёх разных заначках. Решил сделать телеграм бота, который делает тоже самое.
Сам бот https://t.me/money_buckets_bot
Код https://github.com/gmovchan/PersonalFinance
У меня нет второго акка в телене, так что не знаю на сколько успешно бот работает с несколькими юзерами, возможно он сразу упадёт, сам он подниматься не умеет, обработчик исключений я не осилил. По идеи в консоле увижу что его свалило
Нет, стоп. Я только начал и освоил синтаксис. Решаю как могу, я не математик и нету профильного.
Я знаю свои слабые стороны. Не силен в математике. Но стараюсь и с знакомлюсь с алгоритмами, математику еще буду качать.
И все таки, хотелось бы конструктива. У меня получается, но я решаю не так как дургие аноны. Больше текста получается.
Например.
Create a function that checks if a number n is divisible by two numbers x AND y. All inputs are positive, non-zero digits.
ZЯ сильно не углялябся в математику питона и как ведут себя операторы и числа. Но решил так. На основе базвоых знаний.
def is_divisible(n, x, y):
res1 = n / x
res2 = n / y
if res1.is_integer() and res2.is_integer():
return True
else:
return False
result = is_divisible(48, 3, 4)
print(result)
HРешение зачли. Посмотрел у других, и понял на какой логике делали они. Туоп надо больше изучать как ведут себя всякие % и что дают. Жду дельных советов все таки. Я нюфаня.
Нет, стоп. Я только начал и освоил синтаксис. Решаю как могу, я не математик и нету профильного.
Я знаю свои слабые стороны. Не силен в математике. Но стараюсь и с знакомлюсь с алгоритмами, математику еще буду качать.
И все таки, хотелось бы конструктива. У меня получается, но я решаю не так как дургие аноны. Больше текста получается.
Например.
Create a function that checks if a number n is divisible by two numbers x AND y. All inputs are positive, non-zero digits.
ZЯ сильно не углялябся в математику питона и как ведут себя операторы и числа. Но решил так. На основе базвоых знаний.
def is_divisible(n, x, y):
res1 = n / x
res2 = n / y
if res1.is_integer() and res2.is_integer():
return True
else:
return False
result = is_divisible(48, 3, 4)
print(result)
HРешение зачли. Посмотрел у других, и понял на какой логике делали они. Туоп надо больше изучать как ведут себя всякие % и что дают. Жду дельных советов все таки. Я нюфаня.
Роботает хоть?
Типо да, самые легкие, 8ку, я за более сложные даже не берусь нах. Так как боюсь что неудачи подорвут мои стремления в купе с похвалами итт.
О боже, как ты меня выручил, сори за глупый вопрос
The first century spans from the year 1 up to and including the year 100, The second - from the year 101 up to and including the year 200, etc.
Given a year, return the century it is in.
Надо ввести год, а получить - век из функции. Ну ок, аноны решили элегантно. Но здесь range - оправдан, что не так много прошло тысячелетий например. Всего 2000. Остальное - задача других прогеров. Те - нахуй выебваться если есть rang и брутфорс?
Решил так
r = range(0, 5000, 100)
def centyry(year):
if year in r:
return year // 100
else:
return year // 100 + 1
result = centyry(1705)
print(result)
Заапрувили и дали хоноры. Изучаю более элегантные решения но они подвязаны на модулях, математике и тд и тп. Я еще пробовал всоввть четные и нечетные. Остановлися на переборе. Как то так.
А ты не пробовал, оп-пост читать? Или хотя бы сам посмотри как твой код выглядит без отступов
https://www.codepile.net/pile/GWJAjVxL
Задание было сделать простой калькулятор.
Your task is to create a function that does four basic mathematical operations.
The function should take three arguments - operation(string/char), value1(number), value2(number).
The function should return result of numbers after applying the chosen operation.
Я решил сам. Но много строчек, юзал лямбду. Потом посмотрел, пиздец как же просто решили это другие. Но получилось. Код распидарасило. Но в целом, остальные решали также, те логика такая же что радует.
Перекатывалку тредов напиши, у нас нехватка кадров, срочно необходимо внедрение автоматизированного решения.
потыкает кто-нибудть? никто не тыкал. мне интересно упадёт он или нет.
Всё, отбой, сломали. Бот хуёво с БД работает.
Почему однострочный не работает? В обычном все норм
Именно. Если есть возможность не пихать траи, то не пихаю. Зато узнал, что у max() есть параметр default, оно мне и нужно.
Можете пояснить за бэкенд? Читаю, некоторые пишут что тот же макакинг, что и во фронте с однотипными задачами?
Write a function to convert a name into initials. This kata strictly takes two words with one space in between them.
The output should be two capital letters with a dot separating them.
It should look like this:
Sam Harris => S.H
Patrick Feeney => P.F
КК слову такое задание может встретиться. Вот решение.
https://www.codepile.net/pile/8E6l3NQR
Хоноры дали, но опять получилось много строчек. Хотя вроде юзал те же техники что и другие. Только многословней получилось.
Сам как думаешь? Задача решается в одну строчку, например вот так:
".".join([word[0].upper() for word in name.split()])
Да именно, я уже посмотрел у других. Щас так бы и решил. Для себя уже вывели пару правил на подобные вещи. Но все равно решил же. Буду стараться в меньше строк решать. Но в целом, логика думаю была верная, даже методы брал верные. Спс.
я короче веду пары у детей 12-13 лет по питону. Наш ебанутый директор просто мечтает включить pygame в программу. Начал, значит, смореть я какие-нибудь простые игры
А там пиздец
Классы, хуяссы, ивент луп, скрипты по 300 строк
они нахуй научились у меня только недавно while писать без подливы
У вас ни у кого нет примеров каких-нибудь реально простых игор на пайгейме?
>как записать на питоне что x y z попарно не равны?
Что это означает?
Если надо проверить, отличается ли хотя бы одно из трех, то так: not x == y == z, или так: len({x, y, z}) > 1.
Если отсутствие двух одинаковых (все три не равны друг другу), то так: x != y and x != z and y != z, или так len({x, y, z}) == 3
Спасибо :)
В бэке нужно минимум знать работу с базами данных, писать алгоритмы несложные и знать работу с вебом(протколы, заголовки, mvc), начни изучать что-то из этого и подумай зайдет ли
Не нужно уменьшать количество строк, так потом сложнее прочитать и изменить чё ты там высрал.
да на самом то деле вся работа в конечном итоге рутина. Новомодные свежие задачи не так часто падают на голову: я вот работаю в супер пупер молодежном стартапе и также периодически заебываюсь рутину ебашить
как это относится к беку? ну на мой взгляд это более программирование, чем фронт, но будь готов к тому, что и он может подзаебать своей однообразностью
def maps(a):
return [x + x for x in a] if a else []
list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(list)
Даже с условием получилосль чему рад, так как обычно проверял в начале на 100500 строчек. Збс, решения других помогают.
а как было, если не секрет?
Траи же и нужны для ловли ошибков. Так что, использовать их - правильно.
Это смотря как тебе ошибку отдаёт. Если код состояния http при ошибке отличается, то смотри по нему. Если при ошибке тоже 200 возвращает, то наличие ошибки должно быть обозначено в теле ответа.
Это же распкаовка, я бы без нее не смог бы обратиться к объектам. Хотя можно было бы...
Попиксельное не требуется. Проще сделал, получил размер файла в байтах и сравнил.
просто
Это копия, сохраненная 1 апреля 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.