Это копия, сохраненная 12 ноября 2020 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Предыдущий: >>1699561 (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.
— Дайте нормальные книжки на русском! Мы, блядь, не в пиндосии живём
Брат, смотри книжки по ссылкам в шапке, там есть и русские. Но помни, без языка ангелов твоя жизнь проходит мимо и ты обречён быть на обочине знаний и технологий.
ps: анон, если ты вносишь изменения в шапку, оставляй ссылку на код с обновлённым исходником.
текущая шапка (90): https://dumpz.org/bASGKD8cCFDf
>Кстати, а как добавлять или убавлять обьекты поиска
Я не разбираюсь, но предполагаю, что нейроночке скармливается кадр и она просто выдает вероятности сразу по всем объектам, по которым была обучена. То есть убрать, скорее всего, нельзя. Вполне достаточно будет игнорировать ненужное, что-то вроде if CLASSES[idx] == 'dog': print('ne nujno').
>>1711241 →
Или она просто подумала, что ты через пару месяцев уйдешь на работу получше, а у нее и без тебя текучка.
Как я понял, придется писать скрипты, пайплайны.
Что лучше подучить чтобы не обосраться на испытательном сроке, ранее программистом не работал.
С чего бы это? Кто-то сталкивался?
Помогите ответами:
1. Какие задачи у вас были, когда вы были миддлом? Было бы круто с примером.
2. Норм ли просить такую сумму с моим опытом?
3. Что нужно знать и уметь, чтобы зарабатывать такую сумму?
3. нужно не смотреть эту старую пизду про анальников.
shutil.move(os.path.join(root,file),pathCopy)
Если запускать его через python.exe, то все ОК. Но если скомпилировать в exe через PyInstaller и запустить, то на директориях с определенными символами в названии ругается на несуществующий путь. В частности, с этим ’ (right single quotation mark).
Чует моя жопа, что проблема с кодировками, но не могу понять где.
Я не надеялся что меня возьмут, а тут оффер пришел.
Ну на дваче же всегда можно получить советов мудрых
я с принтами и выводил, путь был правильный и одинаковый в обоих вариантах. Даже делал обертку Path() на всякий случай.
Я умею в многопоточность на другом языке через обычные мьютексы и потоки и там мне всё понятно, но вот это понять не могу - просто не могу найти пример где параллельно выполняются две обычные блокирующие функции - а без такого примера я не могу понять в чём смысл этого await. Все статьи обрывочные, в одной идёт gather, в другой wait - одни и те же задачи выполняются разными способами и никакой цельной картины сложить не получается.
книг нет, статей дохуя, просто гуглишь и все.
Вообще если ты не понимаешь зачем тебе, то забей хуй, скорее всего тебе это не нужно
Это новая тема, так что мало пока понаписали.
Книга есть, но я пока не читал. По отзывам вроде хвалят.
https://www.amazon.com/Using-Asyncio-Python-Understanding-Asynchronous-ebook/dp/B084D653HW/
Мне нужно выполнять параллельно обычные блокирующие задачи (без модификации кода задач в виде расстановки async или ещё чего-то), при это задачи должны иметь возможность создавать новые задачи и ждать их завершения в некоторых случаях.
Вопрос не к концепции асинхронщины, а скорее к конкретным примерам кода и синтаксису - я пока даже не приблизился к.
Советы ты должен был получать у конкретного работодателя. У всех стек и принципы варьируются
На realpython (ангельский) ищи статью. Была где-то
Для полноценного понимания полезно опуститься в историю, посмотреть то же видео с "дедом", что в шапке. Это чтобы понять нюансы и какие-то подводные камни.
Если идти сверху, а не снизу, то await - это ожидание результата.
Если по общему смыслу, главное отличие от многопоточного программирования.
В многопоточном программировании у тебя переключение потоков исполнения происходит в произвольный момент времени. В схеме async-await у тебя переключение потоков возможно ТОЛЬКО на операции await.
То есть, когда ты видишь await, это значит ты говоришь "можно переключиться на другой поток, а этот поток исполнения будет ждать, пока не появится результат".
Так на всех платформах. А вот техническая реализация уже может сильно отличаться, свои нюансы везде. В питоне их довольно много.
>Мне нужно выполнять параллельно обычные блокирующие задачи (без модификации кода задач в виде расстановки async или ещё чего-то
Не получится. В таком варианте только многопоточное программирование.
Для async-await необходимо, чтобы код был асинхронным, чтобы блокирующие операции, сетевые, использовали специальные примитивы для асинхронности. Это совсем другой стек.
Просто расставить async-await не поможет совсем.
>В таком варианте только многопоточное программирование.
threading?
>Это совсем другой стек.
А, ну и отлично. Мне просто ирл посоветовали async-await для моей задачи - мол удобная штука, то что тебе нужно, а я всё не пойму каким боком её прикладывать. Видимо что-то попутали.
Правда изучить её тоже хотелось бы - для этого и спрашиваю, в первую очередь.
погугли что такое GIL, что такое celery
Просто сама Жаба каличная и многословная для 2020, щито поделать
Если хочешь в мобилках копаться, лучше иди в Котлин - Жаба скрещенная с Питонухом, а в Пистоне в основном либо веб-бэкенд либо машоб и датасоенс (но тут совсем иные приколы)
Вэб-бэкэнд подходит весьма. Мне не с кем поделиться, но я просто до сих пор в шоке от такой разницы и почему я столько лет не совал носа никуда, кроме жабы.
глянь также на flutter о мобильной разработке, очень чёткий, как бонус можно писать сразу на все мобильные платформы и веб.
Всем привет.
Есть некая задача - смотреть с сайта состояние некой переменной, при каком-то заданном её изменении - оперативно уведомлять меня. Как это можно сделать?
Пока что план такой:
запилить скрипт в крон
при первой прокатке скрипта сохранить значение переменной в файл
затем сравнивать значение с этим значением
Если оно расходится - аларм - активируем какой-то скрипт на ?????
На что-то, на какое-то оперативное оповещение меня. Например, в телеге сообщение написать
import telebot;
В теории что-то там может прокатить.
Получается, крон каждую минуту прокатывать? А есть какие-то иные варианты? Бох с ним с кроном (хотя интересно), тут скорее про телебот. Есть ли какое-то околотиповое решение?
Лул, знакомый удивился объему математики в этой теме.
У меня есть код например
cmd = 'ffmpeg -i file.mp4 newfile.mp4'
p = subprocess.call(cmd, shell = True)
Когда всё нормально программа ffmpeg отработает без вывода. Но если я допустим ошибусь в пути или параметрах ffmpeg должна выдать что-то типа "No such file or directory".
Я это всё делаю в блокноте юпитере. И в консоли откуда я сам юпитер запускаю это отображается. Как мне собственно это "No such file or directory" вывести уже в блокноте?
Хотя в 3.5 вроде добавили subprocess.run() и он по дефолту ждет пока процесс закончится и сохраняет в proc.sterr ошибки в указаной в функции кодировке.
> subprocess.run() и он по дефолту ждет пока процесс закончится и сохраняет в proc.sterr
у меня p.stderr() выдает 'NoneType' object is not callable
Нашел простой пример result = subprocess.run('ls'). Эта команда должна выдать список файлов. Но у меня вместо того чтобы в юпитере это отобразить отображается в консоли из которой я юпитер запустил.
>>12558
А это сработало. Как раз то что надо выводит. Но при замене Popen на call или run уже не работает.
Кстати что посоветуете из книг почитать, чтобы не для чайников но подробно и охуеть, как на питоне можно?
>в run укажи capture_output=True
Ну и да. Если не вкурсе еще, stdout - обычный вывод, stderr - ошибки.
Скорее всего ошибка в темплейте, смотри в нем, или сюда кидай кусок с пагинацией
А в чем между ними разница? Вот обе допустим возводят число в квадрат - какая разница между ними будет?
В словаре данные меняются, но потом, когда пытаюсь собрать ссылку, то возвращает прошлую.
[Output]:
Вот я распарсил ссылку
{'orgId': ['1'], 'from': ['1589972154000'], 'to': ['1589972739000'],....
Поменял параметры
{'orgId': ['1'], 'from': ['1555926954000'], 'to': ['1555938339000'],....
Пытаюсь собрать и выдает старую ссылку
http://192.168.150.138:3000/render/d-solo/htddR-gGz/jmeter-dashboard?orgId=1&from=1589972154000&to=1589972739000....
Одно находится в каком-то классе, а другое глобальное?
для быстрого переката сгодится A byte of Phyton, есть на русском и бесплатно. Марк Лутс Изучаем Python - эта уже поглубже. А дальше все завист от направления
На самом деле не обязательно лол
Декоратор хорош, когда у нас много вьюх, которые так надо кастомизировать. Когда вьюх мало но логика в зависимости от выбранного случая обширная, надо захерачить композицию (отдельный класс-посредник), ему и делегировать исполнение
Тут джавист тусовался, он подробнее пояснит, отдельный паттерн для этого говна был
model = Model
fields = ['file', 'file1']
def __init__(self, user, args, kwargs):
super(ModelForm, self).__init__(args, kwargs)
self.user = user
def clean(self):
Объясните, пожалуйста, что за фигня super? Встречается в некоторых формах.
ясно, опущ
Вызывается конструктор родительского класса.
Попробовал сделать urlStr = urlsStr._replace()
Теперь передает значения, но все значения в квадратных скобках
orgId=['1']&from=['1555926954000']&to=['1555938339000']&var-data_source=['InfluxDB-Jmeter']
>Тут джавист тусовался, он подробнее пояснит, отдельный паттерн для этого говна был
Это называется примеси, но суть в любом случае та же что у декораторов. Для class-based лучше миксины, для функций - декораторы.
Потому что ты пихаешь туда списки с одним элементом, убери квадратные скобки.
боюсь сложных уравнений
Котаны, трабла с добавлением записей через админку django
Есть у меня возможность добавления ссылки на сторонний ресурс, включает в себя собственно ссылку ref (кто бы мог подумать?), название title и сурс (source – ForeignKey на модель Site, по сути hostname самого ресурса, в примере на 1м пикриле это был бы yandex.ru) – сурсов ограниченное число – около 10
Как вы поняли, я хочу иметь возможность задать в некоторых случаях значение сурса=null, вроде как, судя по 2му пикрилу, в моделях я все прописал, но ебучая админка Джанги при попытке простого добавления записи ругается, что я должен обозначить поле source. С хера ли?
Да, я пробовал добавлять посты через python manage.py shell – все добавляется лол. То есть это что-то не то с формами админки
Для дебага прописал print(“save method”) внутри метода Post.save – он даже не вызывается, когда пытаюсь добавить запись в админке, то есть форма сразу выдает error и до ORM даже запрос не доходит
Для удобства эта фича будет только у зарегистрированных юзеров, очевидно что нужно вкинуть на страницу какую-то форму, которая будет обрабатывать данные, введенные юзером однако:
1. Где хранить эти данные? Внутри модели User? Это не зашквар? (да и надо учитывать что система будет часто расширяться и видоизменяться, поэтому надо в соответствии с этим пилить архитектуру)
2. Нужны норм виджеты, я не особо шарю в верстке и юзал немного Бутстрап, но тех же моднявых разномастных переключателей там не видал
null-то ты поставил, а blank - нет)
> Пока что у меня один вариант - выносить кусок кода за пределы питона
Это единственный вариант, наверное должен понимать почему без GIL начнется пиздец с памятью.
Т.е., есть у нас следующее:
URL - маршрутизатор
Views - контроллер
Models - модель
Templates - шаблон
Т.е., какая очередность написания/внесения корректировок в файлы? Сначала шаблон, потом модель, дальше контроллер и в конце маршрутизатор, так что ли?
Лучше сперва писать модель, потом вьюху, а шаблон тебе может и не понадобиться если у тебя api endpoint. Маршрутизатор это одна строчка в routes, хуле там писать? Модель будет для тебя опорой.
Практиковаться, делать что-нибудь полезное тебе. Скриптики там под комп и все такое.
Метод (не статический) работает в контексте объкета. В питоне ты этот контекст объекта можешь заметить по передаче self первым аргументом в метод. У функции по дефолту такого контекста нет, хотя ей за просто так можно передать объект или что вообще надо для работы. Ну и да, вызываются методы чаще всего через точку.
Твой пример с простым возведением числа в квадрат хуево наглядный. Но допустим у нас есть класс Float, который кое-какие методы имеет.
float_object = Float(10.0)
float_as_is = 10.0
float_object.square() -> метод, выполнит возведение в квадрат на собственном значении.
square(float_as_is) -> функция, выполнит возведение в квадрат на том, что ей явно передается в качестве аргумента.
Пример все равно хуевый и малопнятный, это же всего лишь флоат.
Есть модель с filefield, путь до файла выглядит примерно так media/files/user.id/123456.png, соответственно при смене id в url, можно получить файлы другого пользователя, что нежелательно.
Как обычно решается такое? Пока только придумал добавлять рандомную строку в url.
А в чем проблема? Хранишь и изменяешь.
1)
from django.contrib.auth.mixins import LoginRequiredMixin
...
class WhateverView(LoginRequiredMixin, View):
...
2)
from django.contrib.auth.decorators import login_required
from django.utils.decorators import method_decorator
...
@method_decorator(login_required, name='dispatch')
class WhateverView(View):
...
В общем, как лучше решить эту проблему, чтобы объекты были расставлены адекватно, а не наслаивались друг на друга?
Попробуй
https://github.com/edoburu/django-private-storage
Можно костылями сделать protected_serve. Что-то вроде
re_path(r'^{}(?P<path>.*)$'.format(settings.MEDIA_URL[1:]), protected_serve)
def protected_serve(request, path, document_root=settings.MEDIA_ROOT, show_indexes=False):
....obj = Модель.objects.get(file=path)
....if obj.user.pk != request.user.pk:
........return HttpResponseForbidden()
Но это очень плохая идея.
тебе зачем? и что ты хочешь от нас узнать? Типовый решений дохуя от celery и airflow, до скрипта в кроне
А меня пацаны за это пидором не назовут? А то потом будет такая кличка навсегда, мне батя говорил
Не, мне уровнем пониже.
Типовое решение как послать уведомление куда-то, например в телегу. Есть какой-то модуль, про который погуглить, который так делает?
https://mastergroosha.github.io/telegram-tutorial/docs/lesson_05/
вот только вместо check_new_post надо какое-то твое говно делать которое будет парсить
Значение переменной можешь просто кидать в файлик
Сцука, читаю про query_string и QueryDict. Если у этой хрени в значениях список, то она отдает всегда последний элемент, при обращении по ключу...
Вот нахера? В чем профит подобного? Хрен ли он не может мне сразу список отдать? json может, а это манда почему нет?
1. Стандартный вариант создать под это дело модель, прикрутить ее к модели user https://docs.djangoproject.com/en/3.0/topics/auth/customizing/#extending-user
2. Это тебе скорее всего нужен моднявый UI kit, вроде primeNG, попробуй поискать bootstrap ui kit, если так привычнее будет. Есть даже вероятность, что найдешь ui kit специально под джангу.
>>13787
Я бы поделил всё поле на квадраты и с помощью randint выбирал квадрат из списка и размещал объект на нем. Правда, я не уверен, что это разрешено условиями задачи.
В QueryDict (питоновский/джанговский объект из request.POST), согласно документации значения обрабатываются именно так: https://docs.djangoproject.com/en/3.0/ref/request-response/#django.http.QueryDict Чтобы достать список, надо юзать не get а getlist (опять же: нахуя?..)
А в куках блин вообще никаких Array нет, только string
Когда домой приду, скрины закину, чтоб яснее было
Хочу сделать игру в угадай слово. Инпутом собственно слова и хотел забивать.
Ну так почему word не виден и как вообще можно сделать то что я хочу?
бамп
>если внутри def event_message(ctx) написать "global word", то оно возможно заработает
Работает! И вроде даже делает что мне надо.
>Но это как-то совсем убого.
А это почему? Как можно еще решить мою задачу?
Слишком много ресурсов жрёт.
Бэк равномерно размазан между платформами и много разве что джавы, а всякие там шарп, пыха, питон, нода борятся за свои 10-15% рынка
>паттерны проектирования
По любым понятным.
>на python?
Вся эта хуета к языку вообще не привязана, общеязыковые конструкции, так что лучше даже не ищи на питоне.
Короче, не идёт.
https://pastebin.com/L2gB4nty
ВОт так примерно обстоят дела.
Потом нашел вот такую штуку
https://github.com/python-telegram-bot/python-telegram-bot
Говорят, что она даже лучше телебота, но я не могу найти для него никакого образца обычной отправки сообщения
Просто одно сообщение, там куча всякой непонятной хуерги.
https://github.com/python-telegram-bot/python-telegram-bot/wiki/Code-snippets
Раздел general code snippets — post a text message message
Учись читать документацию, анонче.
Не, ну я же не совсем валенок все же хоть немного уважаю сидящих здесь людей, и не читая и не попробовав разобраться самостоятельно, просто так спрашивать не буду
Там написана строка, которая позволяет отправлять сообщение
bot.send_message(chat_id=chat_id, text="I'm sorry Dave I'm afraid I can't do that.")
но описание (правильно ли сказать класса) bot нигде нет.
А еще что именно импортировать
А ещё нужен ли тот самый __name__ == '__main__'
например тут:
def compare(string1, string2):
..if len(string1) != len(string2):
....return False
..result = True
..for c1, c2 in zip(string1, string2):
....result &= c1 == c2
..return result
Тоже самое, что x += 1, но булевые значения.
Т.е. в твоем коде True & True или True & False.
Хотя довольно норкоманское решение.
Спасибо!
QueryDict, который ответственен за всю эту хрень
вкат всегда возможен. хочешь жить - умей вертеться
недавно начал учить змею, как раз начал с этой книги)
Декларативно объявить модель нельзя. Просто взять и кверисет получить нельзя. Какие то движки, какая то хуйня. У меня есть очень простой кусок кода на фласке, пытаюсь переписать на aiohttp, помоги мне антош..https://ru.stackoverflow.com/questions/1137172/Как-читать-и-писать-из-базы-с-aiopg-sa
Вот этот подход, что везде можно натыкать эксепт вместо предварительных проверок как-то пиздец странен.
Взять орм где это можно сделать, очевидно же.
1. Как сделать так, чтобы он реагировал не только на 'quit', но и на 'Quit', 'QUIT', 'QUit' и так далее? Я уже спрашивал про кейс-инсенситивы, но бля никак не могу усвоить как их решать. Мне нужно чтоб написанное сверялось с quit.lower(), но как хоть убей не пойму.
https://ideone.com/j9Zlv0
Есть хороший сайт - рефакторинг гуру. Там и примеры на пистоне есть.
<h2 class="pizda">
<div class="zalupa">content here</div>
</h2>
Это если элемент 1... А если их несколько? Через цикл for гонять список от pizda = soup.findAll("pizda")? Неужели лучше способа нет?
Есть вопрос попизже: как искать дата-атрибуты блэт?
Вот допустим есть у нас <ul data-creation="custom_style"> и че с ним делать? Как определить data-creation в поисковых критериях? Явно заданные дефис херится из-за синтаксиса
Во первых нахуй тебе СЛОВАРЬ сортировать? элементы в словаре захешированны и доступ по ключу к ним за О(1)
>>15057
import collections
dickt = {'AAA': 1, 'BBB': 5, 'CCC': 3}
sorted_x = sorted(dickt.items(), key=lambda kv: kv[1],reverse=True)
sorted_dict = collections.OrderedDict(sorted_x)
> OrderedDict([('BBB', 5), ('CCC', 3), ('AAA', 1)])
>> OrderedDict([('BBB', 5), ('CCC', 3), ('AAA', 1)])
Так и я могу. На выходе получается не словарь, а какая то хуйня вроде кортежа. А мне надо чтобы на выходе стало именно {BBB: 5, CCC: 3, AAA: 1} Можно ли так сделать?
чем тебя эта хуйня вроде кортежа не устраивает? фунционирует точно так же как и словарь
А что тогда? Утиный тест проходит Если нечто выглядит как утка, плавает как утка и крякает как утка, то это, вероятно, и есть утка.
С какой-то версии ОрдередДикт уже не нужен, сделали чтоб в дефолтном сохранялся порядок.
Это кусок бота для игры в крокодил. Полный текст игры выглядит вот так. Я имя победителя добавляю в словарь и присваиваю ему единицу. А потом сортирую словарь по убыванию и вывожу его в виде Имя - Очки.
Так что твой вариант выше не канает.
d = {'AAA': 1, 'BBB': 5, 'CCC': 3,'DDD':9}
for k,v in sorted(d.items(),key=lambda x: x[1],reverse=True):
print(f"{k} - {v}")
k - key , v - value , ключ-значение короче, их отдаёт объект d.items() когда по нему итерируешься
Годнота
А как работает key=lambda kv: kv[1]? Сам использую, но смысла не понимаю как оно работает.
Ты просто нашел все элементы h2.pizda, а что если этот заголовок не будет внутри себя содержать div.zalupa?
Внутри питона, при сортировке, вызывается эта функция/лямбда вместо того чтобы просто взять элемент.
https://ideone.com/7Qq20n
1 - отсортированы как есть
2 - отсортированны в зависимости от квадрата числа
dict.items выдает список туплей key,value, и элемент 1 это value, по которому и сортируется.
Анончики, выручайте
есть строка
time_now = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
Она записывает в файл время в формате 2020-06-06 21:06:25
А теперь мне нужно достать из файла это время и сделать некоторые действия с текущим временем, которое записано уже указанной командой
Когда я вычитаю, он ожидаемо пишет мне, что нельзя вычитать из str str
Как можно преобразовать эти самые стр?
datetime(time_now) - тоже не преобразовывает, говорит, что нужен инт, а не str
urlparse
from datetime import datetime
today = datetime.today()
current_month = today.month
НО мне нужен месяц именно в строчном формате (здесь today.month выдаст число 6). Например сейчас я хочу чтобы вывелась строка "June". Мне че, словарь для этого делать? (выглядеть будет ппц ущербно)
на самом деле мне надо получать лишь первые 3 английские буквы месяца (чтобы потом их передавать в api), но это уже частности, любой довен замутит срез строки
Потому что есть еще div'ы с классом zalupa, но вот они уже не лежат внутри h2 и нафик не сдались, лишь засирают результаты парсинга
Также внутри h2 иногда может не оказаться этого div.zalupa, что снова поднасирает
Просто в css-селекторах Белый Человек может задать условие, которое будет выполняться только если один селектор является дочерним для другого, как на пикриле да, такая нотация в питонухе не сработает и через findAll вернется пустой список
Я офигею, если узнаю что такого нет в bs4 и надо обязательно плодить циклы вручную
ты бы лучше реальный кусок html кода выдал, а не тот искусственный пример, может бы и высрали тебе решение
Там что-то про http написано - но мне оно не нужно, я хочу просто принять пакеты по udp со своим собственным протоколом общения, как если бы я у себя дома двойным кликом запустил py-файл. Это возможно на pythonanywhere.com?
И зачем это нужно, если оно ничего не может?
А где мне тогда проверить мою программу на 40 строк с общением по udp кроме локалхоста?
Это как шаред хост для пхп, сайтики и любые скрипты выдающие текст может.
Ты можешь поднять виртуалку с бриджем, например. Будет как отдельный хост в локалочке.
Блять я заебался. Как пофиксить эту ошибку?
Но это же ничем не отличается от локалхоста. Я скорее хочу проверить как оно будет работать с маленькой скоростью соединения и пингом, каким образом будут теряться пакеты или перемешиваться их очерёдность, и всё в таком роде.
Как мне отфильтровать посты Post, группа которых называется определенным образом, скажем где Group.name == "Solid"?
Фильтрация через Q(group.name="Solid") не катит, т.к. точечная нотация там запрещена синтаксисом
Да, спс, все так
Копипастил всё с оф. сайта, а получил гору ошибок непонятных. Хотел им отписать, но там пикрилейтед.
Я не ойтишник если что, просто для одной программы эта шляпа идёт в зависимостях.
Дано:
- tuple вида x =( 'A', 'B', 'A', 'C', 'A' ).
- список вида b = [ '1', '2' ]
Необходимо получить список tuple вида ( порядок tuple внутри списка неважен )
c = [ ( 'A1', 'B1', 'A1', 'C1', 'A1' ),
( 'A2', 'B1', 'A1', 'C1', 'A1' ),
( 'A1', 'B2', 'A1', 'C1', 'A1' ),
...
( 'A2', 'B2', 'A2', 'C2', 'A2' ) ]
itertools.product мне сделает:
C = [ ( 'A', '1' ),
( 'A', '2' ),
( 'B', '1' ),
( 'B', '2' ),
.......
( 'A', '2' )
А мне нужно
c = [ ( 'A1', 'B1', 'A1', 'C1', 'A1' ),
( 'A2', 'B1', 'A1', 'C1', 'A1' ),
( 'A1', 'B2', 'A1', 'C1', 'A1' ),
( 'A2', 'B2', 'A1', 'C1', 'A1' ),
.......
( 'A2', 'B2', 'A2', 'C2', 'A2' ) ]
print("c = [ ( 'A1', 'B1', 'A1', 'C1', 'A1' ),
( 'A2', 'B1', 'A1', 'C1', 'A1' ),
( 'A1', 'B2', 'A1', 'C1', 'A1' ),
...
( 'A2', 'B2', 'A2', 'C2', 'A2' ) ]")
Break
писать код за тебя мы не хотим. не можешь? читай книжки. Не умеешь читать? пиздуй нахуй отсюда.
Прости, я до массивов не дошел, только закончил переменные и присвоение
Как мне это все дерьмо разобрать назад на отдельные элементы? Не имел до этого дело с JSON.
Держи братик, наговнокодил для тебя.
import itertools
import pandas as pd
import numpy as np
x = ('A', 'B', 'A', 'C', 'A')
b = ['1', '2']
y = [''.join(x) for x in list(itertools.product(x,b))]
c = np.array(pd.DataFrame(list(itertools.permutations(y,5))).drop_duplicates()).tolist()
Я почитал про json. Получается я неправильно написал что я хочу. Я использую готовый питоновский вебсокет. И он возвращает с сайта строку в виде что я выше писал. Это как я уже понял нихуя не json. И эту строку я уже сам разделил по ,. Но это получается коряво потому что некоторые параметры внутри себя имеют кучу запятых + само поле текст может иметь текст с пробелами.
Вопрос - как уже готовую строку разделить на отдельные элементы?
Если из твоей хуйни убрать одинарные кавычки то будет обычный жсон. Хз, откуда оно там взялись и зачем.
Всем привет
Запилил первый осознанный класс, и тут возникли проблемы
Грубо говоря, есть класс, на входе у него одна переменная, остальные высчитываются по разных хитровыдуманным методом на основе значения этой самой переменной
Но у данного класса есть пара значений, которые он берет из другого файла, если грубо, то это прошлые значения некоторых его параметров.
Так как экземпляров класса много, я не могу вписать в def __init__(self, name): забор переменной из текстового файла, ведь там будут лежать переменные для нескольких экземпляров.
При этом если задать пустую переменную, а потом поменять, то просто так не поменять =((((
Нашел какой-то хитровыдуманный способ
https://qna.habr.com/q/301659
а есть что-то попроще, чтобы не пилить новый класс, который обджект и что-то там делает?
Или как лучше сделать? Придумать хитровыдуманный алгоритм, чтобы изх текстового файла брало именно то, что нам нужно?
Была мысль объявить еременную global, но я объявляю переменные как self.permennaya, а self не объявить
Сессия хранится на сервере, а кука в браузере, это разные вещи вообще.
Можешь в печеньке хранить айди сессии и получить персистенцию.
Эм... а разве это не заебно - хранить данные сессий на серваке, забивая лишнюю память?
Главный аспект тут - это безопасность. С клиента тебе может любая хуйня приходить, а на сервере всё лежит спокойно.
Плюс есть лимиты на куки, они нужны для небольших значений, не будешь с каждым запросом пересылать портянку.
Ну и т.д. Почитай какую-то теорию, это фундаментальный вопрос для любых веб-приложений.
Хотя тот же ебанутый асп.нет всю свою хуйню пересылает в формах скрытыми полями, лол. Пришлось ещё поверху навешивать безопасность и прочее. Норкоманы.
Хранится в БД и всё себе масштабируется.
Я с декораторами не дружу, не получилось понять их.
Делаю проектик один, функция выдает элемент списка и в следующий раз выдает уже следующий
Есть решение через костыль (сделал класс) но мне кажется есть решение проще
django.db.utils.ProgrammingError: ОШИБКА: отношение "news_signature" не существует
Ну что этой падле надо? Каких к черту отношений не существует? (news - имя приложения, signature - имя одной из моделей в нижнем регистре) Их и не должно существовать блять, я же только первую миграцию провожу. Бомбит сука
Только попорядку
Обратился к функции - она отдала первый элемент
и так до последнего, где все начинается заново
наверно потому что ему нужно постоянное напряжение. я так и не понял в чём проблема.
Сейчас все работает, но решение мне не очень нравиться
self.i будет расти => память выделяться, не надо такого
Я не понимаю до конца как работает генератор значит)
Я обращаюсь к фунции, она возвращает элемент первый массива, и так до конца массива где снова возвращается первый элемент
Задача стоит максимально непонятно, знаю
что у тебя функция делает, давай показывай. будем думать, как генератор из неё бляднуть.
Через замыкание (nonlocal), на основе замыкания собственно пилится декоратор и все норм
Есть еще решение дауна (но рабочее): передавать в функцию mutable значение по дефолту и использовать стремное поведение питона себе на пользу - сохранять в этот словарь или список свои значения, правда главное не накосячить и случайно не положить туда что-то снаружи
Короче: убрал все файлы из проекта кроме models. Делал миграции для каждой модели отдельно. Вроде получилось. Хуй знает что это за залупа и как в принципе ее фиксить в крупных проджектах
ах, тебе нужна функция с внутренним состоянием. понятно.
не проще ли будет извне по глобальной переменной перебирать список? решение не такое ебливое, но такое же по стрёмности.
Красава, ща попробую переделать у себя
Што? Переменная класса одна на все инстансы, переменная инстанса у каждого своя. Что тебе надо-то?
А так мультилайном можно принтить? И разве можно так напрямую в textarea отправлять? Если ты имеешь в виду "render_template("intex.html", textarea=my_text)".
Спасибо большое!
Подскажи еще, плиз, как-то можно оставить только уникальные списки.
НО. Уникальность проверять без учета сортировки.
То есть, допустим список A = [ 'A1', 'B1', 'A1', 'B1' ] и список B = [ 'A1', 'A1', 'B1', 'B1'] будут считаться неуникальными, поскольку в них одни и те же элементы, пусть и в другом порядке.
А, например, списки A = [ 'A1', 'A1' ] и B = [ 'A1', 'A2' ] уникальными, так как в них различные элементы
Ну как Петян, дело? Я тут походу MVC придумал, да?
чёу, counter из collections нашёл?
Пробую работать с json по примерам. Запускаю и пишет что json не имеет атрибута .load. Что не так?
Тоже выдает ошибку в месте где я значение после двоеточия добавил.
Так а хули у тебя там квадратные скобки? Это для массивов. key-value с фигурными.
погугли что такое json и почему внутри квадратных скобок не мб двоеточия
Есть скрипт, проверяющий сотню тысяч строк данных на предмет валидности, необходимо записывать лог по каждой строке (номер строки и результат: success или fail), лог надо херачить во внешний файл (но можно и бд, мне похрену) csv или txt
Как это сделать наиболее производительно? Запись в файл либо вывод на экран отнимают время и ресурсы CPU, как "распаралелить" сами вычисления и запись данных?
Один хрен где у тебя этот error: sql, питонух, жс или лисп. Он говорит о том, что ты не знаешь синтаксиса языка, который юзаешь. Поэтому не надо плез действовать на нервы людям, юзай иде с помощью в синтаксисе и учи язык
Иная ситуация: у нас постоянно работает некий скрипт, проверяющий результаты поступающих на вход строк и записывающий результат в бд (либо отсылающий их на сторонний серв через REST), как замутить асинхронную либо параллельную обработку данных?
Основной скрипт принимает и складывает в очередь, остальные кушоют из нее и шлют куда надо.
Хм, кстати, а что это за зашкварная херня, что после отсылки request я обязательно должен тратить время и ждать response? Может мне похеру, дошли данные или нет? Как не получать ответов и продолжить исполнение скрипта?
На веб-сервере только как это будет выглядеть интересно... flask или django потянут такое? (я других фреймворков не знаю прост) Они оба синхронные по своей природе а с очередями там я не особо знаком
celery
>>16601
первая ссылка в гугле
https://stackoverflow.com/questions/27021440/python-requests-dont-wait-for-request-to-finish
или если асинх, то asyncio.ensure_task
или гугли udp
или открывай руками сокет и сам туда ебашь
itertools.cycle
{'detail': ErrorDetail(string='You do not have permission to perform this action.', code='permission_denied')}
Хотя я же делаю аутентификацию, и изменяю пользователя, созданного сетапе и на это разрешение должно быть.
Спасибо. Недавно вкатился и поставил такую задачу себе, но инфы не нашел нигде
В том смысле что токен там точно лежит
И я не могу добавить проверку age.lower() == 'quit'. Выскакивает ошибка AttributeError: 'int' object has no attribute 'lower'. Но мне то нужно чтоб если ввелись цифры, то они должны стать не str, а int, то есть на цифры нужно среагировать как на цифры, а на слово как на слово.
https://ideone.com/u50pgm
!= конечно же
У тебя инпут был вне цикла. Ты один раз вводил значение в age (в первой строке), а потом это значение проверял по кругу в цикле while. В итоге у тебя всего два варианта: либо age == 'quit' и ты сразу выходишь из цикла, либо ты бесконечно проверяешь age и живешь в проклятом мире, который сам же и создал.
Можешь попробовать еще вот сюда зайти: http://www.pythontutor.com/visualize.html , ввести свой код, нажать кнопочку "visualize execution" и пошагово смотреть что там у тебя происходит.
Хм, блять, поставил я такой себе сессии вместо куков понимаешь ли и теперь когда юзер разлогинивается, данные теряются нах. Куки-то в браузере хранились и поэтому после повторного логина данные никуда не девались
Это фишка сессий такая? Долговременное хранение данных в принципе невозможно? Кукам я сам выставлял время жизни
Ну если разлогинивается, то теряются. Если не разлогинивается, то не теряются, лол. Это настраиваемо.
Для постоянных данных есть БД, ты получашь нужные записи при логине и можешь настроить сессию.
Вообще, я тебе рекомендую прочитать какую-то книжку именно по вебдеву, там все эти процессы и подходы поясняются, потому что они уже давно изучены и обкатаны и в общем не меняются.
Ещё сразу же полезно читнуть литературку по нападению-защите на веб-приложения, это тоже очень многое проясняет.
Душим.
Не-не, я ж без претензии, тебе больше спасибо за ответы и сайт годный. Я только начал учить while цикл и плохо понимаю как он работает.
Сисадмины? Че?
Питон язык для веб-приложений, а не веб серверов лол. Если и юзается админом то только для облегчения доступа к сети, вместо десятка curl-ов или nmap-а из терминала
ansible
{"type":"string","data":{"someshit": 123, "anothershit": 456}}
Как получить значения someshit и anothershit?
тьфу, не type, а data конечно. Короче сперва ключ, в котором сидит другой словарь и сразу ключ следующего словаря.
Логично. Но почему когда я делаю это на тестовой строке(1) - все получается. А когда делаю тоже самое на реальных сообщениях(2) из чата - получается ошибка string indices must be integers?
Строка слева - это то что я получаю в message делая print.
Сделал chat_string = json.loads(message), а остальное оставил без изменений и заработало. Не понял в чем разница между message и json.loads(message)
разница между строкой и словарем примерно как между твоей шлюхой мамашей и арбузом
Сходи нахуй. Делаю print обоих и получаю:
{"type":"channel_counters","data"{"channel_id":"5","clients_in_channel":"735","users_in_channel":507}}
{'type': 'channel_counters', 'data': {'channel_id': '5', 'clients_in_channel': '735', 'users_in_channel': 507}}
В обоих вариантах словари, разница лишь в форматировании - в одинарных или двойных кавычках у элементов и пробелах после запятых.
Блядь. Двоеточие после data в первой строке это я случайно затер. Строки абсолютно одинаковые.
ебать ты тупой. то что ты там принтишь, никак не должно тебя ебать, в __repr__ хоть что можно засунуть.
Всем добра! Пустяковый вопрос (как мне кажется) (для матерых питонистов точно)
https://pastebin.com/SJEEeBBB
Лучше напиши, что вообще препдологается сделать, а не как.
А то ты явно переусложняешь с этими классами.
благодарю
А где читать/смотреть мануалы, как делать боевые бекенд штуки, если ты вкатыш?
Иными словами, меня интересует архитектура и использование паттернов проектирования наверное
Вот я хочу склепать асинк веб приложение (групповой чятик) с минимальным кол-вом тупого копипаста сниппетов в целях обучения
Я понимаю, что мне как минимум нужна бдшка, слой логики для работы с ней, хттп сервер
К примеру, я выбрал sanic + gino + какой-то менеджер задач + што-то ещё
Но дело в том, что во в гитхабах этих либ есть только узкие примеры, демонстрирующие их конкретные методы
А как это все собрать в полноценное приложение и чтобы оно не выглядело пиздец вырвиглазно, немного непонятно..
Если вкатыш, то надо забыть про асинк и чятики, потому что технологии не самые приятные, лучше напиши банально и синхронно с нуля какой-нибудь круд с админкой, регистрацией, авторизацией, подтягиванием по крону консольной командой инфы в бд, и т.д, очередью для чего-то
Что-то не так с хедерами?
Нихуя, ты там боевые картиночки постить начал. Надо адекватней реагировать на вопросы новичков
grpc
class A:
foo = "foo"
class B:
bar = "bar"
class A:
baz = "baz"
c = C()
можно ли c кастовать обратно в А? допустим, мне в одном месте нужна будет только та хуйня, что в c привнёс класс A.
Чет у тебя код не соответствует вопросу.
>можно ли c кастовать обратно в А?
Можно. Если там вообще под капотом кастинг происходит, а не утиная проверка.
Товарищи, тут ссылка с простым распознаванием. Можете запустить у себя?
У меня куча какой-то хуйни лезет и все, и не пойму почему.
Я вроде все пипнул, что требовалось.
Помогите пожалуйста.
ну мне надо будет что-то такое, пишу псевдокод:
> c = C()
> c.foo = "dicks"
> a = (A) c
> a.foo
'dicks'
> a.__dir__()
[..., 'foo', ...]
а так, это скорей всего XY-проблема, вы мне сейчас насуёте лучших решений если начну рассказывать зачем мне это, пока не рискну это делать.
Линтер вроде успешно подключился, а вот форматтер как-то не совсем
Почему может не работать?
Точнее оно работает, но явно не так, как должно
Допустим, вот этот фрагмент никак не форматируется, хотя на демо сайте yapf работает, как нужно.
Короче блин, как прикрутить исправления кода в духе пичарма?
перл и смузи, будешь рабом, беги
Смотрю вроде на примерах пока все, ну кроме разделения интерфейсов наверное, кажется лютым капитанством.
Когда смотришь антипримеры как делать не стоит - вообще не понимаешь каким надо быть дебилом что бы так писать.
Вроде и так понятно что надо делать так.
А кажется потому, что ресурсы, по которым все учатся, обычно следуют как раз SOLID. SOLID - это не новое изобретение, которому нужно учиться отдельно, а вполне себе самые общие принципы современного ООП. И их по ходу дела изучаешь, даже не зная, что это так называется.
Есть какой-то реальный пример применения последнего принципа? В джанге какой-нибудь возможно? Везде нахожу только совсем игрушечные примеры, не укладывается в голове как это применять.
SOLID - это тупо полиморфизм и здравый смысл.
С динамической типизацией интерфейсов нет.
Реализуешь сразу метод в классе.
Если только с макаками работаешь, то придется запиливать пустой класс, который бросается исключениями, если не реализовать методы.
2 Scoops of Django годная книга по best practise
Но насчет интерфейсов ебать себе мозги лишний раз не стоит хотя в 3.9 таки допиливают эту хрень
Можно
Но надо штудировать доки Джанги и возможно Postgres. Там большая мозгоебля с правильной имплементацией кастомных полей
Хз правильно ли так делать, но можешь сделать поле ArrayField, затем привязать к классу кастомный менеджер модели, в котором перепилить метод get. Он будет реализовывать icontains внутри себя, чтобы не заменять это везде в проекте.
Чувствую, что кроличья нора слишком глубока окажется.
>>18006
О, про менеджеры я как-то и забыл, кстати. Должно сработать, я думаю. Тут правда еще вопрос, можно ли индексировать ArrayField и будет ли эта схема такой же быстрой, как простой CharfField с db_index=True, но это потом бенчмарками померяю.
2 года работал бэкендером на питоне, но о таких вещах как solid даже не задумывался. Сейчас вникаю во все это, и кажется что интуитивно соблюдал все это, кроме инверсии зависимостей. Ее пока не могу постигнуть. Вроде все очень просто, но как и зачем это делается именно в питоне не понимаю.
Запустил всё работает, не лезь в датасаенс оно тебя сожрет дурак
https://colab.research.google.com/drive/1Rgn5jQwBFXpm42jfMG8sUEsd0liksoVA?usp=sharing
Звучит как XY Problem. Какая проблема решается? Если значения только два, то их нужно хранить в разных полях. Если нужно, чтобы пара была уникальна, их можно объединить в композитный ключ.
Например, https://stackoverflow.com/questions/28712848/composite-primary-key-in-django
Если значений много, то только отдельная таблица.
Там немного ебланская система, где у всех юзеров есть уникальные в пределах отдельной Txxxxx команды айдишники вида Uxxxxx и у некоторых юзеров глобально уникальные айдишники вида Wxxxxx. Т.е. однозначно юзера идентифицировать можно по паре Txxxxx + Uxxxxx либо по одному Wxxxxx, если он у него есть. Первая часть с T + U реализована, теперь надо добавить поддержку W. Желательно так, чтобы не переделывать весь проект. В связи с чем я хотел бы сделать поле, чтобы кверисету было все равно U или W айдишник ему передали, он сам внутри разберется, как искать.
идёшь на собеседование - заеби своего оппонента уточняющими вопросами на его кукарёхи. во-первых, сойдёшь за умного, во-вторых подчеркнёшь ничтожество его ёбнутые вопросы. пример:
ХУЙ: знаком ли вам solid и то, как эти принципы используются в питоне?
ТЫ : а для чего вам нужны эти принципы и как их используют у вас?
ХУЙ: да я сам не знаю, вот ищу кого, кто бы мне подсказал.
ТЫ : крайне вероятно, что с вашими маленькими проектами он вам нахуй не нужен. солид красивый концепт на бумажке, но на практике всё выходит, как выходит. простите блять за мат.
ХУЙ: но в книге про агильное программирование...
ТЫ : а я ебашу KISS расрашенным в стиле американской группы.
ХУЙ: а причём тут американская группа?
ТЫ : а причём тут агильное программирование?
ХУЙ: ладно. может квиксорт на листочке набросаете?
ТЫ: а вы синтактический анализ и интерпретацию тоже на листочке будете делать? зачем вам квиксорт? используете часто, но не нагуглили его? вас чем-то не устраивает встроенный тимсорт в питоне?
ХУЙ: нет.
ТЫ : тогда почему вы спрашиваете про квиксорт?
ХУЙ: я вижу, как-то не задалось у нас.
ТЫ : у вас часто так?
Я обычно в ответ на тупые вопросы сразу в лоб спрашиваю, сколько у собеседующего см член, если это кун. Пока он тупит, достаю смартфон и показываю фотки своего 21 см бойца. Чухан начинает краснеть и понимать, что проигрывает, тут-то я и занимаю доминирующее положэение
А если тян, спрашиваешь глубину?
Можно я тебе хуй отсосу? Хоть у меня все равно ничего не работает, но хоть инструкция к действию есть.
На винде просто ад и ужас и пакет не хочет устанавливаться вообще никак и ошибки непонятные, на распбиан ВМ версия Тенсорфлоу не хочет подниматься выше 0.11, но ошибка более осмысленная.
Видимо версия ТФ слишком маленькая, и чего-то не хватает. Что-то он не может найти.
(По факту мне нужен реалтаймовое распознавание машин и людей, с выводом всего говна в консоль.(Или в файл))
(Я сюда уже обращался с https://pastebin.com/B9JNBhuW таким говном, сказали что тут можно выводить label. Но выводит оно все по очереди, а не все сразу. И распознавание медленное, камера дерганная) Подумал что вот этот код с 10 строчками можно будет допилить до реалтайма, Он вроде как считается быстрым распознаванием, и выводит все.
Но чет хуйня.
Рекомендуют анаконду под дата сатанизьмы, млы и прочую хуйню. Типа там умные люди порешали все зависимости.
Сложно, сложно, нихуя не понятно.
Он у тебя из индексированных файлов был вытащен. А его зависимости у тебя уже установлены поэтому requirement already satisfied
С точки зрения строения БД, ни U (без T), ни W как главные ключи использовать нельзя. Композитный (T, U) можно, а W, я так понимаю, всегда опциональный.
В любом случае, должно быть два индекса - по (T, U) и по W. Соответственно, два-три поля (например, tid , userid и globaluserid) в модели.
Из приятных новостей, можно добавить новый Lookup наподобие iexact: https://docs.djangoproject.com/en/3.0/howto/custom-lookups/
С ним как минимум можно добавить возможность писать .get(userid with globals='W01').
Не уверен, но вероятно возможно добавить таким образом псевдо-поле. Т. е. у тебя есть поля localuserid и globaluserid, а искать все еще можно по .get(userid all types='W01').
Но это все страшно как-то.
Не понял.
Да в любом случае, он не видит.
Я пипаю его, он пипается, но всем насрать. Код не видит.
Как такое заделать в линухе? apt install python просто установит самую последнюю версию дистрибутива, обновив предыдущую же
Ну питон2 и питон3 живут одновременно, а вот с 3.7 + 3.8 легко и просто не получится. Ты уверен, что они оба тебе нужны? Там же вроде все обратно совместимо.
45к
sudo apt install python3.7 python3.8 python2.7
Далее создаешь venv указывая
virtualenv -p python3.7 py37
Смотря какую убунту будешь ставить. В 18.04 штатный питон 3.6, например.
Надо ставить специальный репозиторий, ищи по ключевым словам deadsnakes. Так ты можешь одновременно несколько разных питонов поставить.
Вызывать их будешь командой, например python3.8 proga.py
Другой вариант - поставить докер и через докер много питонов. Но тут много камней и грабель, только ради этого не стоит.
Свои папки тоже стоит создать, но уже для virtualenv.
Короче глянь на deadsnakes и ещё про виртуальные окружения, если вдруг с ними пока не работал, не знаю как на винде принято.
Ставь анаконду.
Внутри Фляги завёл глобальный словарь USERS, в USERS['username'] храню экземпляры юзеров, которые "онлайн". На каждом запросе имею объект USERS[session['username']] -> class User.
Да, мсье знает толк в извращениях и не хочет городить датацентр под редис ради пары десятков клиентов в день.
Так вот, на локальной машине всё просто замечательно, а у хостера эта глобальная несчадно уничтожается от запроса к запросу. Можно ли это как-то пофиксить? Или может есть более рациональный способ передавать экземпляр класса внутри сессии без использования глобальных переменных и всяких дачных овощей?
Короче говоря, как нативными средствами сохранить и передать увесистые данные пользователя (в куки всё не влезет), идентифицируемого посредством сессии?
То что я делаю вообще имеет смысл, или мне надо сделать перерыв и сходить на природу?
Что это?
Почему нет imageai в анаконде и нужно устанавливать отдельно?
И почему так долго идет проверка каких-то конфликтов?
Какая-то лютая херня, уже час где-то идет.
Чето сложно. Если совсем уж методами из коробки, то храни данные в sqlite. Если не совсем из коробки, то редис простой же. Или может хостер твой предоставляет какой-нибудь mysql бесплатно? Самостоятельные попытки что-нибудь собрать - в той или иной мере переизобретение изложенного выше. Вся инфраструктура веба расчитана на то, что процессы сервера можно без потерь уничтожать и пересоздавать. Идти против течения будет тяжело.
Ну, я бы не страдал хуйней, если бы не руководитель учебного проекта.
Кококо, делайте распознавание, там за день можно сделать, сам давно занимался, но там легко, чо вы такие тупые, где результат, ну и так далее
Каквсигда.
У меня нет мозгов, и я не занимался питоном, как таковым. Я чисто гуглом программирую.
Второй курс, при том что это мой долг, и со мной дрочат первокуры.
>Я чисто гуглом программирую.
Если умеешь в гугл, то проблем быть не должно.
Конкретно по твоему вопросу - в репозитории анаконды есть далеко не все библиотеки. Если чего нет - ставь через pip. Через анаконду проще ставить библиотеки, с зависимостями не только на питоне, например Tensorflow, которому нужен cudnn. Для всего остального разницы нет.
> Если чего нет - ставь через pip
Вроде если через пип, то устанавливает просто на питон.
И если вот так написать conda install -c powerai imageai как тут, то будут собственно конфликты.
Если conda install imageai то меня просто нахуй пошлют.
Ставь прыщинукс
Потом
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python3 get-pip.py --user
export PATH=$PATH:$HOME/.local/bin в .bashrc
python3 -m venv my_cool_proj/.venv
cd my_cool_proj
source my_cool_proj/.venv/activate
pip instal al you need
>python3 get-pip.py --user
>export PATH=$PATH:$HOME/.local/bin в .bashrc
можешь без этого
Это если хочешь глобально в хомяка ставить пакеты
pip install --user al you need
>Вроде если через пип, то устанавливает просто на питон.
Для начала активируй окружение созданное анакондой командой activate.
>И если вот так написать conda install -c powerai imageai как тут, то будут собственно конфликты.
Ты кроме этого ничего не ставил? Пересоздай заново окружение:
conda create -n temp python=3.7
Активируй его:
activate temp
И устанавливай библиотеку командой:
conda install -c powerai imageai
У меня все работает на винде, прыщи не нужны.
>>18262
ПОЛУЧИЛОСЬ ГОСПОДИ ПОЛУЧИЛОСЬ ГОСПОДИ АЛЛИЛУЯ ДАЙ БОГ ВАМ ВСЕМ ЗДОРОВЬЯ.
Шоб деньги водились, и там тыры пыры.
Но прыщеблядикс не понадобился, хоть и есть расбиан на виртуалочке. От скуки клацнул pip без троечки, и установилось куды надобно.Удивительно, бладжд. Я довен.
Тэк, интересно, а можно источником засунуть камеру, хммммммм.
Правда не знаю, варнинги какие-то лезли, хмммм. Хотя заработало.
есть один класс. а есть один словарь, который генерируется. можно быриком собрать это дерьмо так, чтоб ключи словаря стали полями класса?
ну я пока делаю так:
class belmando:
pass
bodyparts = {"arms": 2, "legs" : 2, "dicks": 1 }
b = belmondo()
for key, value in bodyparts.items():
b.__setattr__(key, value)
оно всё прекрасно и хорошо, но можно ж как-то слинковать,
чтоб при изменениях bodyparts менялись и поля, и наоборот.
хуй его знает, какой нить враппер повесить там, что при обращении
к полям, он сначала смотрел в словаре.
Фулстеки помидорами не становятся. Помидор должен знать глубоко. Фулстек это обычный раб на галере. Питон там или пых, без разницы
кстати спасибо за ссылку, вроде годно.
ну я хуй его знает, как бы всё это хитро сделать. короче расклад такой, есть ini файл с конфигами, который может переписать пользователь. есть у меня внутри дефолтные значения, там просто для большей части оказалось легче comprehension их нагенерировать в словарь. моя хуета будет запускаться, создавать этот словарь, потом щупать конфиг на предмет переопределения и всё это будет сохраняться в бельмандо. в бельманде ещё пару констант, настроеек и прочего говна будет держать. своего рода модель чтоли или state. а уже остальные части будут дёргать бельманду для работы. годно?
https://www.youtube.com/watch?v=1Lfv5tUGsn8
Как сделать чтобы выполнение шло параллельно? Что-то пробовал асинк, но нихуя не получилось.
Че пояснять? все сам понял. Делай асинк .
Зачем тебе вообще щупать ini файл? При запуске программы забирай из него значения, пихай их в бельмондо. Если настройки можно изменять не только через ini, то все изменения передавай в бельмондо, а по завершению программы сохраняй все в ini. Тебе, по большом счету, для этого нужно в бельмондо два метода .load_from_ini, .save_to_ini. В .load_from_ini и твори свою магию со словарями и setattr
>>18402
https://asyncio.readthedocs.io/en/latest/tcp_echo.html
Берешь пример, проверяешь, если работает, то накручиваешь сверху своих хотелок.
нихуя не совместимо, kivy под 3.8 не работает
Камеру можно через open cv подключить, потом фреймы из камеры подаешь в сетку, сетка делает аутпут в отдельную картинку, этот файл крутишь на показ в бесконечном цикле, но фпс будет дико хуевым сразу говорю, реал тайма 30фпс не будет
Использовать селениум или что-то подобное не могу, нужно делать много таких запросов одновременно, а там браузер открывается на каждый.
Может быть печенье, могут быть токены в заголовках.
Запрос подозрительный в каком смысле? Ололо, вы бот? Или 403 или
там ошибка какая-то?
Скачал заголовки запроса и куки, тепепь просто ждёт и кидает эксепшон про истечение времени и закрытие соединения на той стороне.
Насчет подозрительности ничего не сказано, просто не нравится и всё. Возвращает код 200 и жсон, в нем эта строка.
селениум можно запустить в headless режиме, тогда браузера ты не увидешь. и про много запросов ты наверно припезднул, много это несколько десятков тысяч в секунду, а тво сто это так, шутеечки.
По сабмиту формы сайт делает три пост запроса, яндекс, гугл, и на внутреннюю страницу, которая и отдаёт жсон с ответом. Так вот, если перейти на это страницу самому по ссылке с параметрами, тоже кидает отказ.
На нужную мне страницу передаётся капча, хотя я ничего не заполнял. Капча каждый раз разная.
Уже начал ковырять селениум, но проблема в том, что у меня ноут, и не самый мощный, а запросов пара тысяч в секунду примерно.
Если это рекапча, тогда понятно.
Она может быть невидима и спрашивать свои задачки только если ты подозрительный. Это хуевый вариант, но можно решить с помощью апи с обезьянками.
По сабмиту идёт вызов рекапчи через жабасрипт, это можно как-то фейкнуть или сделать самому?
Насколько я знаю, нет надежного метода автоматического решения.
Да и если ты будешь много отправлять, она всё равно быстро начнет сыпать задачки.
Как такое мутить?
Заделал, вроде работает, но к этому идет сопутствующий вопрос: как выйти разом из множества функций? Пока вижу только вариант с броском эксепшна, возвращать None и потом проверять результат каждого вызова на None лишь чтобы самому сделать return None - зашкварная херня
бамп вопросу
Если у тебя нештатная ситуация - то для этого исключения и нужны.
А у тебя нештатная, раз ты проверяешь промежуточные функции на None и меняешь ветвь исполнения на этом основании.
Не рекомендуется базовые ветви исполнения завязывать на исключения. Условный пример - ты делаешь рекурсивный поиск по дереву, и как только находишь что тебе надо, так делаешь исключение.
a = [0, 1, 2, 0, 1, 2, 3, 4, 0, 4]
b = [1, 2, 3, 4]
Нужно вернуть смещение b по отношению к a. Есть что-то готовое, или костылить свой метод на index и проверках?
Если надо за время O(len(a)), то самописное решение по аналогии с поиском подстроки.
Асинхронка конечно.
Я вот так извращался:
def say(i, text):
colors = [30, 32, 34, 35, 36, 93, 30, 32, 34, 35, 36, 93]
return log.info(f"\033[{colors}m Worker-{i} said: {text}")
Переделай под себя.
try:
a = 42/0
except:
return "хуй"
а вместо этого писать что-то вроде этого:
@exception("хуй")
a = 42/0
Круто же, ну! Реально это вообще?
Сорян, индекс отвалился, colors конечно же:
return log.info(f"\033[{colors}m Worker-{i} said: {text}")
И это на линуксе, на винде не знаю, будет ли работать.
Короче вакаба зачем-то режет индекс, сам найдёшь где он должен быть.
Если они небольшие, то можно заджойнить и искать подстроки, а так да, циклы-проверочки.
нет
Как сделать чтобы путь сохранялся при переносе папки в другое место?
Забыли дописать про зарплату в 30К
Надо ли там ловить эксепшены с файлами? Я щитаю, упадет и заебись, всё понятно.
Надо ли пихать контекстные менеджеры и вообще закрывать файлы? Вот я понаоткрывал файлов и пишу в них по ходу работы. Потом в конце они сами отвалятся.
Видел, что пишут в структуры, а потом в конце высирают всё сразу с with. По-моему, это какая-то хуйня.
Жопу тоже можно не подтирать, говно вылезло и заебись, вконце дня например всё равно мыться если, само все почистится. По-моему, вытирать жопу каждый раз это какая-то хуйня.
А ты для чего вообще прогаешь?
Если пишешь скрипт для личных разовых нужд, то можно и не ловить. Если хочется, чтобы в случае ошибок можно было сразу видеть, в чём проблема, а не вглядываться красными глазами в трейсбеки, то лучше ловить, писась сообщение об ошибке и выходить.
Если функционал программы сложный, то может потребоваться более сложная логика, когда тебе какие-то сложные действия надо в случае ошибки сделать. Может быть нужно транзакционное или атомарное поведение. Может ещё что.
Ты, блеядь, программист или кто? Ты должен сам понимать, что тебе нужно в конкретной задаче.
Если в вызываемой, то она может закрысить важную инфу и передавать неверные данные, а если в родительской, то тогда пропадает принцип единой ответственности.
Как правильно делать?
Да это всё понятно, мне интересны бест практисы, а не полтора простейших кейса из учебника.
Тебе надо думать о принципах инкапсуляции и замкнутости.
Функция должна делать свою работу и максимально изолировать вызывающий контекст от ненужной информации и головной боли.
Что нужно и не нужно уже зависит от логики программы.
В общем случае может быть подход, что твоя функция сама ловит ошибки низкого уровня, обрабатывает их, но потом порождает задокументированное исключение высокого уровня.
Например если твоя функция открывает либо файл, либо берёт данные из базы или сети, в зависимости от каких-то конфигурационных настроек, то не нужно наружу отдавать файловые-сетевые исключения, исключения json и другое. Правильнее их перехватить и выдать другое исключение наружу.
Потому что вызывающий код понятия не имеет, что ты там открываешь, в каком формате данные и т.п. Ему нужно получить результат или характер ошибки, если ошибка была.
Смотри, как реализованы разные библиотеки и пакеты, которыми ты пользуешься. Просто снаружи, для тебя как для пользователя.
Общий принцип - любой поведение должно быть понятным и документированным.
Такой синтетический пример. Допустим тебе надо получить данные из какой-то структуры, сохранённой где-то.
Эти данные могут лежать в файле или в сети. Формат хранения может быть json, yml, xml, pickle, sqlite или ещё какой-нибудь. В функцию ты просто передаёшь имя, а по префексу-расширению делаешь выводы.
Тебе нужно или получить данные, или код ошибки. При этом для тебя ошибка может быть или вида "не удаётся считать источник", или "в источнике нет данных".
Разработчику не нужно знать о всём том лесе ошибок, которые могут возникнуть. Поэтому каждую ошибку ты обрабатываешь внутри, а наружу кидаешь итоговую, и снаружи ловишь исключения только одного-двух видов, вместо нескольких десятков. Такой общий подход.
Спасибо. Получается функция должна ловить у себя исключения и при невозможности принять меры по этому поводу, возбуждать и возвращать новые, более понятные?
И ещё вопросик:
Метод класса должен изменять переменную класса и возвращать ошибку, или возвращать значение, которое уже вне его присваивается перменной класса?
>Метод класса должен изменять переменную класса и возвращать ошибку, или возвращать значение, которое уже вне его присваивается перменной класса?
Тебе как разработчику решать, как удобнее.
Вообще общий принцип - данные должны быть или корректными, или их не быть вообще. Это критично для БД, файлов, сетевых пакетов и некоторых действий.
Вот если ты пытаешься обновить свой объект данными из какой-то структуры, в которых данные сбойные - лучше вообще не обновить, оставить старые и вернуть ошибку.
Если у тебя программа прерывает работу на ошибке, то без разницы, конечно. Но если она может продолжить работу и делает какие-то действия, то может быть критично.
Вот сам подумай, если у тебя по завершении работы программы данные сохраняются в базу. Ошибка в данных может привести к сбою в базе данных.
В общем тебе решать, в каких случаях как тебе удобнее. Может быть потом ты по своему сбойному объекту-файлу-базе может восстановить источник ошибки, например.
У меня среди знакомых есть 3 истории успеха, где люди реально с нуля вкатывались и довольно быстро устраивались, правда там шарпист, явист и тестировщик. Я сосу хуй, я относительно недавно вкатился и знаний у меня реально не хватает, поэтому пока даже не бомбит.
Получается, мы просто договариваемся (например, описываем в комментариях), что класс должен реализовывать такие-то методы и все?
ты про Protocol не погуглил даже
Правильно я понимаю что сделав вот так я получу путь к папке, в которой питоновский файл находится?
import os
my_path = os.getcwd()
my_dir = os.path.split(my_path)
my_dir = my_dir[0]
Я все правильно делаю?
Всем привет
Есть одна задача для души
Есть сложная функция, в которой есть х и у, известна сумма этих х и у, необходимо узнать, при каком соотношении этих xy будет получено максимальное значение.
Наверное, с этой задачей я сам как-то справился бы
Но задача несколько интереснее
Дальше речь про некоторую игру, так что кого смущает - не читайте
Есть сложная функция, описывающая урон персонажа в которой есть х и у, известна сумма этих х и у, а еще есть некоторое дерево талантов, которое влияет на эу самую формулу. Дерево по своей сути простое (просто меняет количество х, у или какой-то множитель формулы), но это именно дерево, т.е. некоторые таланты незлья взять, пока не взяты другие.
Подскажите, как оценить максимальное значение функции при заданных х,у и числе талантов?
Как вообще такое гуглить? Подскажите, в какую сторону смотреть. Наверняка есть какое-то типовое (хотя бы чуть-чуть) решение, чтобы хоть как-то сузить количество циклов
А как ещё можно запускать? Из консольки что-ли? А если через ярлык запускать .py файл - мой вариант все равно будет работать?
Просто пропиши относительный путь, тебе же дали ссылку.
Из "Питон" в "Данные" в твоем случае путь будет "../Данные"
А если сделать ярлык, который ссылается на батник, который запускает .py и находится в той же папке?
Пока что пришла мысль сделать перебор всех возможных талантов, просчитывать для них функцию и выбрать максимальное значение
как-то так
Я вообще по адресу тредом? Здесь такое практикуют?
А если вообще просто без os.getcwd() или __file__ прописать
f = open(f'../testfile.txt', 'r')
То файл, который в папке выше откроется в любом случае?
Нормальный вариант это chdir на __file__ и тогда уже относительно всегда будет отрабатывать.
os.chdir(os.path.dirname(os.path.abspath(__file__)))
Я понял, что вот редис - это типа такая база данных, только выглядит, как обычный словарь. Т.е это такой альтернативный более упрощенный способ хранения данных (вместо sql бд), правильно?
А вот для чего используется второе, не совсем понятно
Это в общем-то типичный минимакс/оптимизация/нелинейное погромирование. Гули его.
Если x и y целые, то вообще брутфорсом перебрать можно же.
>Т.е это такой альтернативный более упрощенный способ хранения данных (вместо sql бд), правильно?
Не только. Он еще гораздо быстрее, так как все данные храняться в оперативной памяти
>А вот для чего используется второе, не совсем понятно
Это брокер сообщений. К примеру, у тебя есть 2 сервиса, и тебе нужно выстроить коммуникацию между ними. Когда в одном происходит какое-то событие (например, создан новый товар), но этот сервис через рэббит отправляет сообщение во второй сервис, типа создай этот товар на складе.
Это менеджер очередей. У тебя есть синхронная апа1, которая активно срёт данными, и синхронная апа2, которая эти данные потребляет. Чтобы сбаласировать их напрямую через апи надо много поесть говна.
Раббит - это ящик, первая апа складывает в этот ящик данные, вторая апа из него берёт данные. Как только в ящике становится больше N сообщений ты можешь это отследить и запускает ещё один экземпляр апы2, чтобы брать из ящика сообщения в два потока.
Еще фишка рэббита в том, что если сервис, который читает сообщения, не будет доступен на момент отправки, то он сохранит сообщение в очереди, пока сервис не станет доступен. Еще он масштабируется на несколько серверов, если нагрузка большая. Впрочем, как и редис.
есть имена из стандартной либы вроде hash, id, json их лучше не перекрывать
общепринято для переменных добавлять _ в конце hash_, id_, json_
для файлов сложнее, обычно просто называют по другому, мол, json_utils или json_validators, либо в кровавом ентерпрайзе могут разруливать такое через тот факт, что запускаемый файл лежит в родительской папке и импортят вроде project.json
>>19269
типичный...
Я чет даже не знаю, как запрос составить.
Да, х и у целые. Даже натуральные.
Первая часть решается следующим коротеньким циклом
https://pastebin.com/JFKX3Jyg
МОжет, не очень филигранно, но зато действует.
А вот как пришить сюда таланты ебаные? Хуй знает
Какая мысль меня посетила: для всех вариантов талантов просчитать этот цикл, но как просчитать все варианты талантов?
К примеру, у нас есть талант А Б С Д, у каждого из этих талантов 10 уровней, каждый уровень таланта Б требует уровень таланта А. Как можно взять все вариации для 10 талантов?
Это уже уже ояебу вариантов, а в каждом этом варианте нужно всять еще варианты для первого цикла, бля, это майнинг уже какой-то.
>общепринято для переменных добавлять _ в конце hash_, id_, json_
Так именуют только мудаки, которые ничего тяжелея хера в руках не держали длиннее print('Hello, world') не писали.
>в кровавом ентерпрайзе
Каким образом нормальная структура проекта соотносится обязательно с тырпрайзом?
Встречается или имеет место? Стиль такой блевотен по одной причине - белые люди читают слева направо, так что id и id_ выглядят практически одинаковыми, отсюда _ никакой полезной нагрузки не несет.
ты предлагаешь перекрывать видимость? или писать длинные имена?
пробовал, не помогло
Мне бы аутпут в консольку шоб выводило. Чтобы типо всю хуйню что программа видит на кадре, пусть срет в консолью
Нашел код-образец видео захвата, и хотел на сделать по аналогии, ибо занимаюсь методом научного тыка, так сказать,
for eachObject in detections:
print(eachObject["name"] , " : " , eachObject["percentage_probability"] )
Засунул это в конец SD.py файлика. Хотел чтобы получилось как в FD. Нихуя не выводит.
Наверно обьекты при видео сьемке не так называются. Какие-нибудь .VideoObject
Кстати, если запускать, то по итогу вообще 1 фрейм, каждые 5 сек, лул.
Но этого в принципе должно хватить. Мне "умные светофоры" делать, там хоть каждые 10 секунд, не важно.
Надо правда убрать запись видео, а то она тоже жрет ресурсы.
Но выводит крайне грязно. Скобачки))), Букафки. Но меня все равно радует.
Ну надо наверно написать конвертер отпут строки в что-то полезное, и выводить как белый человек.
> работаю в pycharm, если он влияет, то как пофиксить или обойти?
либо нажимать мышкой на красный квадратик, либо что-то вроде такого гуглить
https://stackoverflow.com/questions/5160577/ctrl-c-doesnt-work-with-pyqt
>>19406
Ага благодарю спасибо!
У меня тут просто переходный период от чтения док и решения задачек на алгоритмы к написанию первого осмысленного пет-проекта (онлайн голосовалку с аутентификацией, статистикой, защитой от дублирования голосов и прочих штуковин)
Но первое, что приходит в голову - просто написать кучу обычных реквестов... пук-среньк...
А хочется сразу прикрутить "взрослых" технологий
Мне нужно что-то вроде пропуска ненужных символов или их удалении.
Или я неправильно пользуюсь? Вроде питон имеет в своем распоряжении охуенный иструментарий из функций, которые я не знаю :(
На сишке я бы как долбоеб прогнал бы всю строку, и принудительно убрал бы ненужные символы.
Как из обычной командной строки вылезти в анакондовскую?
Заебало cdхаться до нужной папки.
Я видимо долбоеб. Так еще и ctrl+c почему-то не работает.
А то мне тут печёт с однокашника по физфаку, с которым мы потом вместе мнс'ами в нии были. Учился он не очень, работу делал тоже не очень, статей в первый-второй квартиль в отличии от меня не писал, кандидатскую тоже не сделал. Свалил в дс на пистон в ML или в AI, причём пока работали вместе он каких-то результатов в кодинге не показывал, может конечно он на работе не усирался. Хотя computational materials scince, где мы работали, вполне интересная область, и есть куда пайтон приложить.
Говорит, сейчас у него через год работы 150к+, позицию не знаю. Как так?
кадровый голод
половина кандидатов вообще не понятно какого хуя отзываются на пайтон девелопера, не знаю про args/kwargs например а хотят 200к, другая половина какие-то ебанутые чуваки вроде тех что пишут по 10к в одном файле или используют венгерскую нотацию. Таким образом чуваков, которых хоть как-то можно во что-то напрячь ну из 10 собесов будет 1 и тот съебет в другую контору.
Работа в industry везде оплачивается лучше, чем в академии. Это даже от страны не зависит. Computational materials scince - звучит круто, думаю, вполне можно поторговаться за ЗП.
> звучит круто
Поэтому и не написал "компьютерное моделирование" или дословно "вычислительное материаловедение".
Академия, действительно, оплачивается средне. Я много работаю и получаю 75к в нии, работая нс'ом со степенью кфмн. Немного, но для науки норм.
Что-то не нашел функцию специально для листа. Только для стрингов понапридумали.
Может я бака?
>Фигурные скобки, одинарные кавычки.
Все равно непонятно, в чем заключается задача. Каждый элемент листа состоит из одного символа или из нескольких? По-моему тебе нужно что-то вроде этого (для листа l):
[x for x in l if re.match('[a-zA-Z]+', x)]
Может это ХУ проблема, так сказать.
У нас есть вот такой допустим лист.
{'cup': 1, 'bottle': 1, 'person': 2}
Мне нужно подсчитать сколько челиков.
Позже этим же алгоритмом подсчитать допустим кол-во челиков здесь
{'bottle': 1, 'cup': 1, 'person': 1, 'vase': 1}
А после и здесь
{'bottle': 2, 'person': 1, 'toothbrush': 1, 'vase': 1}
И так далее пока я не стопну.
Я думал что если убрать кавычки и скобки, написать считывалку будет проще.
Хотя похоже одинаково.
>{'cup': 1, 'bottle': 1, 'person': 2}
Это не лист, а словарь. Просто вытаскиваешь количество людей и всe.
n_people = d['person']
ПАСИБА :3 Я просто тупая бака и языка не знает.
Поискал что такое словарь, и сделал такъ.
rng = 0
rng = output_count.get('person')
print(rng)
Получилось.
Штош, осталось сделать вывод этого говна на ардуину.
Вот задача: Напишите программу, которая получает три вещественных числа в одной строке, разделенных пробелом, как-то преобразует их и выводит их на экран как показано в примере:
В выводе используйте 1 функцию print()!
Input 1:
3.14 2.718 10.0
Output 1:
32 103 210
Input 2:
1.0 2.0 3.0
Output 2:
12 31 23
Вот код:
a, b, c = map(float, input().split())
a = int(a)
b = int(b)
c = int(c)
print((a, b, sep=''), (c, a, sep=''), (b, c, sep=''))
Пишет: SyntaxError: invalid syntax в пятой строке
sep='' и пробелы явно a,b,' ', 'c'
openpyxl
> если эксель
В том то и дело, что нужно для екселя и опенофиса одновременно, тк файлы в перемешку
ну тогда или pyexcel/pyexcel-ods или как уже писали openpyxl
a, b, c = map(float, input().split())
a = int(a)
b = int(b)
c = int(c)
print ((a, b), (c, a), (b, c), sep='')
не?
> Есть шанс вкатится после 33?
Да, но учти, кадровый голод не просто так. Не смотря на огромное количество вкатывальщиков ситуация принципиально не меняется.
> 3дэ моделинг, как то можно с пистоном совместить?
Сам не моделер, но какие-то плагины на блендера вроде на питоне пишутся. Ты должен лучше знать
второй день не могу победить пикрил.
Сначала всё норм, но где-то на 2 группе данных вываливается ошибка на выделенной строке. Смотрю содержимое element_group_through - одинаковые значения как в первой так и во второй колонке присутствуют, т.е. успешно записались, значит проблема не в этом. Кто сталкивался? Что ей от меня нужно?
Если и для группы, и для элемента выполнится ветка "get", то ты действительно попытаешься засунуть точно такую же связь, которая была вставлена, когда в предыдущий раз группа или элемент (или обе сущности) были созданы.
А вообще:
1. Посмотри, какие constraints тебе нагенерировал фреймворк в таблицах : http://docs.peewee-orm.com/en/latest/peewee/playhouse.html#print_model
2. Выведи в терминал конкретные запросы, которые ты делаешь (https://stackoverflow.com/questions/32691602/how-to-get-sql-query-from-peewee) и посмотри, что из этого может нарушать целостность.
3. Не уверен, что тебе это нужно, но у тебя нет ограничений на уникальность групп и элементов. Группу с одним и тем же названием можно создать несколько раз.
Работает в pycharm на винде. В обычном терминале - офк нет
Это копия, сохраненная 12 ноября 2020 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.