Счётчик правильных и неправильных ответов
Хочу создать викторину в виде интерфейса. Вроде бы все сделано, но не знаю как добавить счётчик правильных ответов, который будет показываться снизу и в messagebox в самом конце. Код:
<code>
from tkinter import *
from tkinter import messagebox

root = Tk()
root.title('Викторина')
root.geometry('600x600')
root["bg"] = "#FFD700"

correctCount = 0
incorrectCount = 0

def que_one():
    question = Label(root, text='Тут будет вопрос', font='20', fg='#000000', bg='#FFE4B5')
    question_2 = Label(root, text='Введи ответ цифрой: ', font='15', fg='#000000')
    answer = Entry(bg='#C0C0C0')
    btn = Button(root, text='Ответить', command=lambda: game1(que_two))
    btn.grid(row = 0)
    btn.place(relx=.5, rely=.8, anchor="c", height=30, width=500, bordermode=OUTSIDE)
    question_3 = Label(root, text='1. Тут будет ответ', font='15', bg='#DC143C', fg='#FFFFFF')
    question_4 = Label(root, text='2. Тут будет ответ', font='15', bg='#DC143C', fg='#FFFFFF')
    question_5 = Label(root, text='3. Тут будет ответ', font='15', bg='#DC143C', fg='#FFFFFF')
    question_6 = Label(root, text='Правильных ответов: 0', font='5', bg='#FFD700')
    question_6.place(relx=.2, rely=.9, anchor="c", height=25, width=200, bordermode=OUTSIDE)
    question.grid(row = 0)
    question.place(relx=.5, rely=.1, anchor="c", height=50, width=500, bordermode=OUTSIDE)
    question_2.place(relx=.5, rely=.6, anchor="c", height=50, width=500, bordermode=OUTSIDE)
    answer.grid(row = 1)
    answer.place(relx=.5, rely=.7, anchor="c", height=30, width=500, bordermode=OUTSIDE)
    question_3.grid(row = 1)
    question_3.place(relx=.5, rely=.2, anchor="c", height=50, width=500, bordermode=OUTSIDE)
    question_4.grid(row = 1)
    question_4.place(relx=.5, rely=.3, anchor="c", height=50, width=500, bordermode=OUTSIDE)
    question_5.grid(row = 1)
    question_5.place(relx=.5, rely=.4, anchor="c", height=50, width=500, bordermode=OUTSIDE)

    def game1(que_two):
        if answer.get().lower() == '1':
            correctCount = correctCount + 1
            que_two()
        else:
            incorrectCount = incorrectCount +1
            que_two()

def que_two():
    question = Label(root, text='Тут будет вопрос', font='20', fg='#000000', bg='#FFE4B5')
    question_2 = Label(root, text='Введи ответ цифрой: ', font='15', fg='#000000')
    answer = Entry(bg='#C0C0C0')
    btn_1 = Button(root, text='Ответить', command=lambda: game2(que_two))
    btn_1.grid(row = 0)
    btn_1.place(relx=.5, rely=.8, anchor="c", height=30, width=500, bordermode=OUTSIDE)
    question_3 = Label(root, text='1. Тут будет ответ', font='15', bg='#DC143C', fg='#FFFFFF')
    question_4 = Label(root, text='2. Тут будет ответ', font='15', bg='#DC143C', fg='#FFFFFF')
    question_5 = Label(root, text='3. Тут будет ответ', font='15', bg='#DC143C', fg='#FFFFFF')
    question.grid(row = 0)
    question.place(relx=.5, rely=.1, anchor="c", height=50, width=500, bordermode=OUTSIDE)
    question_2.place(relx=.5, rely=.6, anchor="c", height=50, width=500, bordermode=OUTSIDE)
    answer.grid(row = 1)
    answer.place(relx=.5, rely=.7, anchor="c", height=30, width=500, bordermode=OUTSIDE)
    question_3.grid(row = 1)
    question_3.place(relx=.5, rely=.2, anchor="c", height=50, width=500, bordermode=OUTSIDE)
    question_4.grid(row = 1)
    question_4.place(relx=.5, rely=.3, anchor="c", height=50, width=500, bordermode=OUTSIDE)
    question_5.grid(row = 1)
    question_5.place(relx=.5, rely=.4, anchor="c", height=50, width=500, bordermode=OUTSIDE)

    def game2(que_two):
        if answer.get().lower() == '2':
            que_three();
            correctCount = correctCount + 1
        else:
            que_three();
            incorrectCount = incorrectCount +1

def que_three():
    question = Label(root, text='Тут будет вопрос', font='20', fg='#000000', bg='#FFE4B5')
    question_2 = Label(root, text='Введи ответ цифрой: ', font='15', fg='#000000')
    answer = Entry(bg='#C0C0C0')
    btn_1 = Button(root, text='Ответить', command=lambda: game3(que_two))
    btn_1.grid(row = 0)
    btn_1.place(relx=.5, rely=.8, anchor="c", height=30, width=500, bordermode=OUTSIDE)
    question_3 = Label(root, text='1. Тут будет ответ', font='15', bg='#DC143C', fg='#FFFFFF')
    question_4 = Label(root, text='2. Тут будет ответ', font='15', bg='#DC143C', fg='#FFFFFF')
    question_5 = Label(root, text='3. Тут будет ответ', font='15', bg='#DC143C', fg='#FFFFFF')
    question.grid(row = 0)
    question.place(relx=.5, rely=.1, anchor="c", height=50, width=500, bordermode=OUTSIDE)
    question_2.place(relx=.5, rely=.6, anchor="c", height=50, width=500, bordermode=OUTSIDE)
    answer.grid(row = 1)
    answer.place(relx=.5, rely=.7, anchor="c", height=30, width=500, bordermode=OUTSIDE)
    question_3.grid(row = 1)
    question_3.place(relx=.5, rely=.2, anchor="c", height=50, width=500, bordermode=OUTSIDE)
    question_4.grid(row = 1)
    question_4.place(relx=.5, rely=.3, anchor="c", height=50, width=500, bordermode=OUTSIDE)
    question_5.grid(row = 1)
    question_5.place(relx=.5, rely=.4, anchor="c", height=50, width=500, bordermode=OUTSIDE)

    def game3(que_two):
        if answer.get().lower() == '2':
            correctCount = correctCount + 1
            messagebox.showinfo('Правильных ответов: ' + str(correctCount))
        else:
            incorrectCount = incorrectCount +1
            messagebox.showinfo('Правильных ответов: ' + str(correctCount))

que_one()

root.mainloop()
</code>

Предлагаю такой вариант кода (хотя его можно еще лучше оптимизировать):

from tkinter import *
from tkinter import messagebox

root = Tk()
root.title('Викторина')
root.geometry('600x600')
root["bg"] = "#FFD700"

correctCount = 0
incorrectCount = 0
answer_counter = Label(root, text='Правильных ответов: 0', font='5', bg='#FFD700')
answer_counter.place(relx=.2, rely=.9, anchor="c", height=25, width=200, bordermode=OUTSIDE)

def create_field(root, question, answer1, answer2, answer3):
    Label(root, text=question, font='20', fg='#000000', bg='#FFE4B5').place(relx=.5, rely=.1, anchor="c", height=50, width=500, bordermode=OUTSIDE) #поле с вопросом
    Label(root, text='Введи ответ цифрой: ', font='15', fg='#000000').place(relx=.5, rely=.6, anchor="c", height=50, width=500, bordermode=OUTSIDE)
    Label(root, text=f'1. {answer1}', font='15', bg='#DC143C', fg='#FFFFFF').place(relx=.5, rely=.2, anchor="c", height=50, width=500, bordermode=OUTSIDE) # поле с ответом 1
    Label(root, text=f'2. {answer2}', font='15', bg='#DC143C', fg='#FFFFFF').place(relx=.5, rely=.3, anchor="c", height=50, width=500, bordermode=OUTSIDE) # поле с ответом 2
    Label(root, text=f'3. {answer3}', font='15', bg='#DC143C', fg='#FFFFFF').place(relx=.5, rely=.4, anchor="c", height=50, width=500, bordermode=OUTSIDE) # поле с ответом 3
    answer = Entry(bg='#C0C0C0')
    answer.place(relx=.5, rely=.7, anchor="c", height=30, width=500, bordermode=OUTSIDE)
    return answer

def que_one():
    answer=create_field(root, 'Вопрос', 'Ответ1', 'Ответ2', 'Ответ3')
    Button(root, text='Ответить', command=lambda: game1()).place(relx=.5, rely=.8, anchor="c", height=30, width=500, bordermode=OUTSIDE) # кнопка ответить
    def game1():
        global correctCount, incorrectCount, answer_counter
        if answer.get().lower() == '1':
            correctCount = correctCount + 1
        else:
            incorrectCount = incorrectCount +1
        answer_counter['text']=f'Правильных ответов: {correctCount}'
        que_two()

def que_two():
    answer=create_field(root, 'Вопрос', 'Ответ1', 'Ответ2', 'Ответ3')
    Button(root, text='Ответить', command=lambda: game2()).place(relx=.5, rely=.8, anchor="c", height=30, width=500, bordermode=OUTSIDE) # кнопка ответить

    def game2():
        global correctCount, incorrectCount, answer_counter
        if answer.get().lower() == '2':
            correctCount = correctCount + 1
        else:
            incorrectCount = incorrectCount +1
        answer_counter['text']=f'Правильных ответов: {correctCount}'
        que_three()

def que_three():
    answer=create_field(root, 'Вопрос', 'Ответ1', 'Ответ2', 'Ответ3')
    Button(root, text='Ответить', command=lambda: game3()).place(relx=.5, rely=.8, anchor="c", height=30, width=500, bordermode=OUTSIDE) # кнопка ответить

    def game3():
        global correctCount, incorrectCount
        if answer.get().lower() == '2':
            correctCount = correctCount + 1
        else:
            incorrectCount = incorrectCount +1
        messagebox.showinfo('Результат викторины','Правильных ответов: ' + str(correctCount))

if __name__ == '__main__':
    que_one()
    root.mainloop()

Либо такой вариант, ближе к вашему:

from tkinter import *
from tkinter import messagebox

root = Tk()
root.title('Викторина')
root.geometry('600x600')
root["bg"] = "#FFD700"

correctCount = 0
incorrectCount = 0
answer_counter = Label(root, text='Правильных ответов: 0', font='5', bg='#FFD700')
answer_counter.place(relx=.2, rely=.9, anchor="c", height=25, width=200, bordermode=OUTSIDE)

def que_one():
    question = Label(root, text='Тут будет вопрос', font='20', fg='#000000', bg='#FFE4B5')
    question_2 = Label(root, text='Введи ответ цифрой: ', font='15', fg='#000000')
    answer = Entry(bg='#C0C0C0')
    btn = Button(root, text='Ответить', command=lambda: game1())
    btn.grid(row = 0)
    btn.place(relx=.5, rely=.8, anchor="c", height=30, width=500, bordermode=OUTSIDE)
    question_3 = Label(root, text='1. Тут будет ответ', font='15', bg='#DC143C', fg='#FFFFFF')
    question_4 = Label(root, text='2. Тут будет ответ', font='15', bg='#DC143C', fg='#FFFFFF')
    question_5 = Label(root, text='3. Тут будет ответ', font='15', bg='#DC143C', fg='#FFFFFF')
    question.grid(row = 0)
    question.place(relx=.5, rely=.1, anchor="c", height=50, width=500, bordermode=OUTSIDE)
    question_2.place(relx=.5, rely=.6, anchor="c", height=50, width=500, bordermode=OUTSIDE)
    answer.grid(row = 1)
    answer.place(relx=.5, rely=.7, anchor="c", height=30, width=500, bordermode=OUTSIDE)
    question_3.grid(row = 1)
    question_3.place(relx=.5, rely=.2, anchor="c", height=50, width=500, bordermode=OUTSIDE)
    question_4.grid(row = 1)
    question_4.place(relx=.5, rely=.3, anchor="c", height=50, width=500, bordermode=OUTSIDE)
    question_5.grid(row = 1)
    question_5.place(relx=.5, rely=.4, anchor="c", height=50, width=500, bordermode=OUTSIDE)

    def game1():
        global correctCount, incorrectCount
        if answer.get().lower() == '1':
            correctCount += 1
        else:
            incorrectCount += 1
        answer_counter['text']=f'Правильных ответов: {correctCount}'
        que_two()

def que_two():
    question = Label(root, text='Тут будет вопрос', font='20', fg='#000000', bg='#FFE4B5')
    question_2 = Label(root, text='Введи ответ цифрой: ', font='15', fg='#000000')
    answer = Entry(bg='#C0C0C0')
    btn_1 = Button(root, text='Ответить', command=lambda: game2())
    btn_1.grid(row = 0)
    btn_1.place(relx=.5, rely=.8, anchor="c", height=30, width=500, bordermode=OUTSIDE)
    question_3 = Label(root, text='1. Тут будет ответ', font='15', bg='#DC143C', fg='#FFFFFF')
    question_4 = Label(root, text='2. Тут будет ответ', font='15', bg='#DC143C', fg='#FFFFFF')
    question_5 = Label(root, text='3. Тут будет ответ', font='15', bg='#DC143C', fg='#FFFFFF')
    question.grid(row = 0)
    question.place(relx=.5, rely=.1, anchor="c", height=50, width=500, bordermode=OUTSIDE)
    question_2.place(relx=.5, rely=.6, anchor="c", height=50, width=500, bordermode=OUTSIDE)
    answer.grid(row = 1)
    answer.place(relx=.5, rely=.7, anchor="c", height=30, width=500, bordermode=OUTSIDE)
    question_3.grid(row = 1)
    question_3.place(relx=.5, rely=.2, anchor="c", height=50, width=500, bordermode=OUTSIDE)
    question_4.grid(row = 1)
    question_4.place(relx=.5, rely=.3, anchor="c", height=50, width=500, bordermode=OUTSIDE)
    question_5.grid(row = 1)
    question_5.place(relx=.5, rely=.4, anchor="c", height=50, width=500, bordermode=OUTSIDE)

    def game2():
        global correctCount, incorrectCount
        if answer.get().lower() == '2':
            correctCount +=1
        else:
            incorrectCount += 1
        answer_counter['text']=f'Правильных ответов: {correctCount}'
        que_three()

def que_three():
    question = Label(root, text='Тут будет вопрос', font='20', fg='#000000', bg='#FFE4B5')
    question_2 = Label(root, text='Введи ответ цифрой: ', font='15', fg='#000000')
    answer = Entry(bg='#C0C0C0')
    btn_1 = Button(root, text='Ответить', command=lambda: game3())
    btn_1.grid(row = 0)
    btn_1.place(relx=.5, rely=.8, anchor="c", height=30, width=500, bordermode=OUTSIDE)
    question_3 = Label(root, text='1. Тут будет ответ', font='15', bg='#DC143C', fg='#FFFFFF')
    question_4 = Label(root, text='2. Тут будет ответ', font='15', bg='#DC143C', fg='#FFFFFF')
    question_5 = Label(root, text='3. Тут будет ответ', font='15', bg='#DC143C', fg='#FFFFFF')
    question.grid(row = 0)
    question.place(relx=.5, rely=.1, anchor="c", height=50, width=500, bordermode=OUTSIDE)
    question_2.place(relx=.5, rely=.6, anchor="c", height=50, width=500, bordermode=OUTSIDE)
    answer.grid(row = 1)
    answer.place(relx=.5, rely=.7, anchor="c", height=30, width=500, bordermode=OUTSIDE)
    question_3.grid(row = 1)
    question_3.place(relx=.5, rely=.2, anchor="c", height=50, width=500, bordermode=OUTSIDE)
    question_4.grid(row = 1)
    question_4.place(relx=.5, rely=.3, anchor="c", height=50, width=500, bordermode=OUTSIDE)
    question_5.grid(row = 1)
    question_5.place(relx=.5, rely=.4, anchor="c", height=50, width=500, bordermode=OUTSIDE)

    def game3():
        global correctCount, incorrectCount
        if answer.get().lower() == '2':
            correctCount += 1
        else:
            incorrectCount += 1
        messagebox.showinfo('Результат викторины', 'Правильных ответов: ' + str(correctCount))

que_one()

root.mainloop()


Singleton -- оптимальная реализация
В PEP0318 приведен такой паттерн одиночки:

def singleton(cls):
    instances = {}
    def getinstance():
        if cls not in instances:
            instances[cls] = cls()
        return instances[cls]
    return getinstance

@singleton
class MyClass:

Сразу же бросается в глаза некоторая неоптимальность данной каноничной реализации (простите что святотатствую). Так, если это паттерн "одиночка", то зачем нам словарь инстансов (причем сам термин во множественном числе)?
Недолго думая я набросал свой собственный велосипед:

def Singleton(f):
    instance = f()
    return lambda : instance

@Singleton
class Some:
   def __init__(self):
        print(str(self.__class__) + " init here.")

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

first = Some()
second = Some()
third = Some()

print("first == second ?", first == second)
print("first == third  ?", first == third)

Вывод:

<class '__main__.Some'> init here.
first == second ? True
first == third  ? True

А вопрос будет такой: какие вы видите недостатки в подобной реализации? Может быть я чтото не учел? Заранее благодарю за конструктивные ответы.

Upd. Здесь доработанный вариант синглтона с учетом всех замечаний.

В реализации из PEP0318 для каждого класса с декоратором @singleton экземпляр будет создан только в тот момент, когда он будет в первый раз запрошен.
В вашей реализации экземпляр создаётся в тот момент, когда в коде встречается определение класса, даже если по факту дальше в коде экземпляр класса никогда явно не создаётся.
Более того, если в одном модуле определено много классов с вашим декоратором, а другой модуль импортирует из первого только один класс, то экземпляры будут созданы сразу для всех.
Это может быть нежелательным поведением по следующим причинам:

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


Удаление из 1 списка другого по не точному вхождению
Имею 2 списка:

a_one = ['работа','школьный','учиться','работать','портфель']
b_one = ['раб', 'школ']

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

for i in a_one:
    if i in b_one:
        print(i)

У меня вот так получилось простыми циклами сделать
<code>
a_one = ['работа', 'школьный', 'учиться', 'работать', 'портфель']
b_one = ['раб', 'школ']
res = set()

for i in a_one:
    for j in b_one:
        if j in i:
            res.add(i)
        else:
            continue

print(list(set(a_one) ^ res))   # ['учиться', 'портфель']
</code>


Превратить символы "+" "-" в операторы + -
Дано:

случайное количество чисел от 2 до 4;
значение чисел так же случайное от 10 до 99;
между числами случайные операторы "+" или "-"

Требуется вывести результат:

А1 +/- А2 +/- А3 +/- А4

Код:

import random

b = []
n = random.randint(2, 4)

for i in range(n):
    b.append(random.randint(10, 99))
    b.append(random.choice(['+', '-']))

print(''.join(map(str, b[:-1])))

Выводится красиво, только не вычисляет:

85-67+43+11

Попробуйте функцию eval. Хоть она и небезопасна, т.к. может выполнить любой код, но раз ее код формируете вы, то проблем не вижу:
<code>
import random

b = []
n = random.randint(2, 4)

for i in range(n):
    b.append(random.randint(10, 99))
    b.append(random.choice(['+', '-']))

calc_text = ''.join(map(str, b[:-1]))
print('{} = {}'.format(calc_text, eval(calc_text)))
# 29-93-21 = -85
</code>


Несколько языков на сайте Django
Помогите пожалуйста разобраться с этой темой.
Переводы сделал
получил файлы .po и .mo
при смене в settings.py LANGUAGE_CODE = 'ru' на LANGUAGE_CODE = 'en' и обновлении страницы все переводится и работает.
Как добавить чтобы была возможность на главной странице выбирать какой язык использовать
Добавил в urls.py

urlpatterns += i18n_patterns(
    path('', include('registers.urls')),
)

И шаблон смены языков в base.html

 {% load i18n %}
 {% get_current_language as LANGUAGE_CODE %}
 {% get_available_languages as LANGUAGES %}
 {% get_language_info_list for LANGUAGES as languages %}
 <div class="languages">
  <p>{% trans "Language" %}:</p>
  <ul class="languages">
    {% for language in languages %}
    <li>
      <a href="/{{ language.code }}/" {% if language.code == LANGUAGE_CODE %} class="selected"{% endif %}>
      {{ language.name_local }}
    </a>
  </li>
 {% endfor %}
 </ul>
 </div>

в адрессной строке теперь меняется url  на ru и en  но перевод не делается, подскажите в чем проблема
при этом если использовать перевод простых фраз как  {%trans 'Отправить' %} фраза переводится при выборе языка английского
не переводятся только названия которые перевожу в forms.py

from django.utils.translation import ugettext as _
date_visit = forms.DateTimeField(input_formats=['%d.%m.%Y %H:%M'], label=_('Дата'))

Подскажите почему так

в общем отвечу сам на свой вопрос.
вместо
from django.utils.translation import ugettext as _
написал
from django.utils.translation import gettext_lazy as _
и все работает, может будет кому интересно


Записать строку в 3 разных файлов [закрыт]

Закрыт. Этот вопрос необходимо уточнить или дополнить подробностями. Ответы на него в данный момент не принимаются.

Хотите улучшить этот вопрос? Добавьте больше подробностей и уточните проблему, отредактировав это сообщение.

Закрыт 3 года назад.

                        Улучшить вопрос

Дана строка
пример: 'kcBZmaXiUOVScAnkPMlzmpOXIj'
Записать строку в 3 разных файлов (1-й символ в первый, второй во второй, третий в  третий и т.д)

Разделите строку на три строчки и запишите в требуемые файлы. Для разделения можно воспользоваться slice notation (не знаю перевода устоявшегося). Так как строка это массив, то этот метод вполне подойдет.
Что такое slice notation. Допустим есть массив:

array = [10, 20, 30, 40, 50, 60]

Можно взять элемент массива

a = array[0]

Тут а станет равно 10. Можно взять последовательность

a = array[0:3]

Тут а будет списком [10, 20, 30]. А можно взять не просто часть массива, а пройти по нему с некоторым шагом.
a = array[::3]
Тут берем каждый третий элемент и на выходе получаем список [10, 40]. В общем виде запись будет выглядеть так:

a[начало:конец:шаг]

начало - это откуда начать итерацию
конец - где остановиться
шаг - шаг итерации

В общем, в вашем случае три нужных строки можно получить вот так:

incoming = 'kcBZmaXiUOVScAnkPMlzmpOXIj'

out1 = incoming[0::3]
out2 = incoming[1::3]
out3 = incoming[2::3]


Как реализовать в Telegram боте на Python, чтобы он брал посты со словом Whyred с определённых каналов? [закрыт]

Закрыт. Этот вопрос необходимо уточнить или дополнить подробностями. Ответы на него в данный момент не принимаются.

Хотите улучшить этот вопрос? Добавьте больше подробностей и уточните проблему, отредактировав это сообщение.

Закрыт 3 года назад.

                        Улучшить вопрос

необходимо сделать так чтобы когда на определённых телеграмм канале делается пост с указанным словом бот уведомлял пользователя

Можно, используя tgApi, получать список сообщений из заданных канало, после проверять есть ли в них это слово и соответственно сохранять их


Проверка QLineEdit на заданный текст и после нажатия pushButton совершается действие
Помогите сделать проверку на введенную в
lineEdit строку, после чего при нажатии на
pushButton открывалась бы некая ссылка.

def si():
    if ??? == "123":
        webbrowser.open('link', new=2)

ui.pushButton.clicked.connect(si)

def si():
    if ui.lineEdit.text() == "123": # здесь lineEdit - имя, которое вы дали объекту
        webbrowser.open('link', new=2)

ui.pushButton.clicked.connect(si)


Функция Counter (python) не работает для списка со словарем
Есть список  неуникальных (повторяющихся) кортежей, каждый из которых в одной позиции содержит словарь
Пример одного из кортежей списка:

('Проволока Вр-1 ГОСТ 6727-80', {'size': '2,4 мм'}, '45 780', 'руб/т с НДС, свыше 5 тонн', 'abinmetall.ru')

И таких кортежей в этом списке может быть несколько.
Нужно составить словарь, который бы содержал уникальные кортежи (т.е., уникальные элементы списка) в качестве ключа, а в качестве значения - количество повторов этого кортежа в списке.
Например:

{('Проволока Вр-1 ГОСТ 6727-80', {'size': '2,4 мм'}, '45 780', 'руб/т с НДС, свыше 5 тонн', 'abinmetall.ru'): 7, }

Знаю, что есть функция collections.Counter, которая позволяет генерировать такие словари одним легким вызовом. Но в данном случае эта функция выдает ошибку

unhashable type: 'dict'

Можете ли подсказать альтернативные способы или функции?
Спасибо

Нельзя использовать нехешируемые типы для ключа в дикте.
Можно попробовать преобразовать ваш ключ к какому-либо immutable type
Если дикт принципиален для ключа, советую попробовать frozendict


Вывод кириллицы на python 2.7 под Windows с английском локализацией [дубликат]

На этот вопрос уже даны ответы здесь:

Слетела кодировка парсер python 2.7 [закрыт]

                                (3 ответа)

Закрыт 3 года назад.

У меня английский Windows. Возможно ли вывести в командную строку кириллицу?
Пример:

#! /usr/bin/env python
# -*- coding: utf-8 -*-
print('тест')

Результат:

╤ï╤ï╤ï

Уже разобрался. Как отмечается в этом ответе, ошибка кодирования происходит не от python, а от кодировки, которую использует консоль. Поэтому способ исправить это - запустить команду (в windows):
<code>
chcp 65001
</code>
который устанавливает кодировку UTF-8, а затем снова запускает программу. Или, если вы работали над pycharm, как я, перейдите в «Настройки»> «Редактор»> «Кодировки файлов» и соответственно установите кодировки IDE и Project.


Как добавить сообщение об ошибке?
Подскажите, как добавить в этот фрагмент сообщение об ошибке, тк если в вике не находится нужной статьи приложение падает.

elif re.search(r'\Подскажи\b', Message['text']):
    api.messages.send(
        peer_id=Message['peer_id'],
        random_id=Message['random_id'],
        message='Вот, держи! \n\n' + str(wikipedia.summary(Message['text'][9:]))
    )

Сами ошибки, сейчас столкнулся с двумя:
Первая если по запросу находит несколько статей на разные темы:

Warning (from warnings module):
  File "C:\Users\Елена\AppData\Local\Programs\Python\Python38-32\lib\site-packages\wikipedia\wikipedia.py", line 389
    lis = BeautifulSoup(html).find_all('li')
UserWarning: No parser was explicitly specified, so I'm using the best available HTML parser for this system ("html.parser"). This usually isn't a problem, but if you run this code on another system, or in a different virtual environment, it may use a different parser and behave differently.

The code that caused this warning is on line 389 of the file C:\Users\Елена\AppData\Local\Programs\Python\Python38-32\lib\site-packages\wikipedia\wikipedia.py. To get rid of this warning, pass the additional argument 'features="html.parser"' to the BeautifulSoup constructor.

Traceback (most recent call last):
  File "C:\Users\Елена\Desktop\test\рабочая версия.py", line 66, in <module>
    message='Вот, держи! \n\n' +str(wikipedia.summary(Message['text'][9:])))
  File "C:\Users\Елена\AppData\Local\Programs\Python\Python38-32\lib\site-packages\wikipedia\util.py", line 28, in __call__
    ret = self._cache[key] = self.fn(*args, **kwargs)
  File "C:\Users\Елена\AppData\Local\Programs\Python\Python38-32\lib\site-packages\wikipedia\wikipedia.py", line 231, in summary
    page_info = page(title, auto_suggest=auto_suggest, redirect=redirect)
  File "C:\Users\Елена\AppData\Local\Programs\Python\Python38-32\lib\site-packages\wikipedia\wikipedia.py", line 276, in page
    return WikipediaPage(title, redirect=redirect, preload=preload)
  File "C:\Users\Елена\AppData\Local\Programs\Python\Python38-32\lib\site-packages\wikipedia\wikipedia.py", line 299, in __init__
    self.__load(redirect=redirect, preload=preload)
  File "C:\Users\Елена\AppData\Local\Programs\Python\Python38-32\lib\site-packages\wikipedia\wikipedia.py", line 393, in __load
    raise DisambiguationError(getattr(self, 'title', page['title']), may_refer_to)
wikipedia.exceptions.DisambiguationError: "Устройство" may refer to:
прибор
Устройство (радиотехника)
землеустройство
порядок
↑

Вторая когда запрашиваемую статью не находит:

Traceback (most recent call last):
  File "C:\Users\Елена\AppData\Local\Programs\Python\Python38-32\lib\site-packages\wikipedia\wikipedia.py", line 272, in page
    title = suggestion or results[0]
IndexError: list index out of range

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\Елена\Desktop\test\рабочая версия.py", line 66, in <module>
    message='Вот, держи! \n\n' +str(wikipedia.summary(Message['text'][9:])))
  File "C:\Users\Елена\AppData\Local\Programs\Python\Python38-32\lib\site-packages\wikipedia\util.py", line 28, in __call__
    ret = self._cache[key] = self.fn(*args, **kwargs)
  File "C:\Users\Елена\AppData\Local\Programs\Python\Python38-32\lib\site-packages\wikipedia\wikipedia.py", line 231, in summary
    page_info = page(title, auto_suggest=auto_suggest, redirect=redirect)
  File "C:\Users\Елена\AppData\Local\Programs\Python\Python38-32\lib\site-packages\wikipedia\wikipedia.py", line 275, in page
    raise PageError(title)
wikipedia.exceptions.PageError: Page id "арараоао" does not match any pages. Try another id!

Полный код:

import os
from random import randint
from requests import *
import vk
import wikipedia
import re

# Указываем ключи доступа, id группы и версию API
VK_API_ACCESS_TOKEN = 'токен'
VK_API_VERSION = '5.103'
GROUP_ID = ид группы

wikipedia.set_lang("RU")

session = vk.Session(access_token = VK_API_ACCESS_TOKEN)
api = vk.API(session, v = VK_API_VERSION)

# Первый запрос к LongPoll: получаем server и key
longPoll = api.groups.getLongPollServer(group_id = GROUP_ID)
server, key, ts = longPoll['server'], longPoll['key'], longPoll['ts']

while True:
    # Последующие запросы: меняется только ts
    longPoll = post('%s'%server, data = {'act': 'a_check',
                                         'key': key,
                                         'ts': ts,
                                         'wait': 25}).json()

    if longPoll['updates'] and len(longPoll['updates']) != 0:
        for update in longPoll['updates']:
            if update['type'] == 'message_new':
                Object = update['object']#выуживаем из множества update множество object
                Message = Object['message']#выуживаем из множества bject множество message

                print(Message['peer_id'],'\n',Message['from_id'],'\n',Message['text'])
                print ('---------------------------------')
                # Отправляем сообщение
                if Message['text']== 'Команды':
                    api.messages.send(
                    peer_id = Message['peer_id'],
                    random_id = Message['random_id'],
                    message='1.Конь \n2.Пшел \n3.Подскажи'
                    )

                elif Message['text']== 'Конь':
                    api.messages.send(
                    peer_id = Message['peer_id'],
                    random_id = Message['random_id'],
                    message='Нет, Лось'
                    )
                elif Message['text']== 'Пшел':
                    api.messages.send(
                    peer_id = Message['peer_id'],
                    random_id = Message['random_id'],
                    message='Куда?'
                    )
                elif re.search(r'\Подскажи\b',Message['text']):
                     api.messages.send(
                     peer_id = Message['peer_id'],
                     random_id = Message['random_id'],
                     message='Вот, держи! \n\n' +str(wikipedia.summary(Message['text'][9:])))

    # Меняем ts для следующего запроса
    ts = longPoll['ts']

заключить в блок try-except, вот так:

elif re.search(r'\Подскажи\b',Message['text']):
    try:
       api.messages.send(
                    peer_id = Message['peer_id'],
                    random_id = Message['random_id'],
                    message='Вот, держи! \n\n' +str(wikipedia.summary(Message['text'][9:])))
    except:
        print('Not found')

И желательно после except указать какую именно ошибку выдает программа, если она известна. Например, при деление на ноль программа выдает ошибку:
ZeroDivisionError, значит блок будет выглядеть так:

elif какое-то условие:
    try:
        a=5/0
    except ZeroDivisionError:
        print('Div by zero')


Как остановить проект PyCharm, что бы срабатывал atexit?
Предыстория
Я написал чат бота, который при его запуске рассылает сообщения о начале своей работы, а при прекращении работы - о прекращении
Бот работает через LongPoll API, так что просто закрывать его через
ctrl+c не удобно, может пройти большое время, пока
KeyboardInterrupt долетит (25 секунд)
Запускаю я код через
shift+f10, т.е. обычный запуск в PyCharm и останавливаю с помощью
ctrl+f2
Настройка atexit

atexit.register(self.api.tell_all, data=self.data, message='Бот выключен')
PyCharm
При остановке PyCharm говорит, что завершил процесс с кодом -1, но
atexit не срабатывает. Он срабатывает только если написать явно в коде
exit(КОД), ну или при получении эксепшена
Вопрос
Это я как-то не так настроил
atexit и всё должно работать, либо это PyCharm так убивает процесс?
Хотелось бы иметь возможность останавливать бота со срабатыванием
atexit, не ожидая 25 секунд каждый раз

Остановка проекта через
Shift+F2 завершает скрипт, а не интерпритатор

atexit вызывается при закрытии интерпритатора
Можно попробовать блок

try: ...
finally: ...


Конвертация .py в .exe в Python 3.7.3
Имею самый обыкновенный код на
python.
Хотел поделиться этим кодом для другого компьютера. (на другом ПК нет python)
Искал много информации по данной теме. Пользуюсь
pip pyinstaller. Однако, когда я запускаю в cmd:  pyinstaller test.py - то получаю ошибку синтаксиса
<<Вывод консоли>>

C:\Users\Pavel\AppData\Local\Programs\Python\Python37-32\Scripts>pyinstaller tes
t.py
1017 INFO: PyInstaller: 3.6
1017 INFO: Python: 3.7.3
1018 INFO: Platform: Windows-7-6.1.7601-SP1
1021 INFO: wrote C:\Users\Pavel\AppData\Local\Programs\Python\Python37-32\Script
s\test.spec
1023 INFO: UPX is not available.
1032 INFO: Extending PYTHONPATH with paths
['C:\\Users\\Pavel\\AppData\\Local\\Programs\\Python\\Python37-32\\Scripts',
 'C:\\Users\\Pavel\\AppData\\Local\\Programs\\Python\\Python37-32\\Scripts']
1032 INFO: checking Analysis
1033 INFO: Building Analysis because Analysis-00.toc is non existent
1034 INFO: Initializing module dependency graph...
1040 INFO: Caching module graph hooks...
1117 INFO: Analyzing base_library.zip ...
25954 INFO: Caching module dependency graph...
27584 INFO: running Analysis Analysis-00.toc
27742 INFO: Adding Microsoft.Windows.Common-Controls to dependent assemblies of
final executable
  required by c:\users\pavel\appdata\local\programs\python\python37-32\python.ex
e
35733 INFO: Analyzing C:\Users\Pavel\AppData\Local\Programs\Python\Python37-32\S
cripts\test.py

Syntax error in C:\Users\Pavel\AppData\Local\Programs\Python\Python37-32\Scripts
\test.py

                                  ^
 SyntaxError: invalid syntax

Искал ответы на этот вопрос и в итоге просят переместить Python в дерево, где не будет русских символов, однако на этом пути нет ни 1 символа. Смотрел так же видео ролики и у них работало со стандартным путём. Прошу помочь, мучаюсь уже вторую ночь. Даже успел переустановить систему
Windows 7 (не сборка = чистая Windows)
x86

    import random, time
n=int(input('\n\n\nсколько раз повторять?      \n'))
i = int(0)
while i < n:
    time.sleep(3)
    f = random.random()
    if f > 0.8:
        print('''

            Text

        ''')    if f < 0.8:
        print('''

            Text

        ''')
    elif f < 0.6:
        print('''

            Text

            ''')
    elif f < 0.4:
        print('''

            Text

            ''')
    elif f < 0.2:
        print('''

            Text

            ''')
    i =i+1
time.sleep(5)
print('The hacking process has begun')
time.sleep(3)
print('Closing a program will not end this process')
time.sleep(3)
print('Connecting libraries')
#print('5%\n10%\n20%\n30%\n40%\n50%\n60%\n70%\n80%\n90%\n95%\n96%\n97%\n98%\n99%')
#print('5%','10%','20%','30%','40%','50%','60%','70%','80%','90%','95%','96%','97%','98%','99%')
time.sleep(1)
print('Loading... 5%')
time.sleep(1)
print('Loading... 10%')
time.sleep(1)
print('Loading... 15%')
time.sleep(1)
print('Loading... 20%')
time.sleep(1)
print('Loading... 25%')
time.sleep(1)
print('Loading... 30%')
time.sleep(1)
print('Loading... 40%')
time.sleep(1)
print('Loading... 50%')
time.sleep(1)
print('Loading... 60%')
time.sleep(1)
print('Loading... 70%')
time.sleep(1)
print('Loading... 75%')
time.sleep(1)
print('Loading... 85%')
time.sleep(1)
print('Loading... 90%')
time.sleep(3)
print('Loading... 95%')
time.sleep(3)
print('Loading... 96%')
time.sleep(3)
print('Loading... 97%')
time.sleep(3)
print('Loading... 98%')
time.sleep(3)
print('Loading... 99%')
time.sleep(3)
print('Данная программа не причинит вреда вашему компьютеру.')
time.sleep(3)
print('''

    Хорошего дня :D

    ''')
input()

в коде были явные синтаксические ошибки, если, конечно, вы приложили исходный\точный вариант. я поправил:
<code>
import random, time
n = int(input('\n\n\nсколько раз повторять?      \n'))
i = int(0)
while i < n:
    time.sleep(3)
    f = random.random()
    if f > 0.8:
        print('''

            Text

        ''')
    if f < 0.8:
        print('''

            Text

        ''')
    elif f < 0.6:
        print('''

            Text

            ''')
    elif f < 0.4:
        print('''

            Text

            ''')
    elif f < 0.2:
        print('''

            Text

            ''')
    i += 1
time.sleep(5)
print('The hacking process has begun')
time.sleep(3)
print('Closing a program will not end this process')
time.sleep(3)
print('Connecting libraries')
#print('5%\n10%\n20%\n30%\n40%\n50%\n60%\n70%\n80%\n90%\n95%\n96%\n97%\n98%\n99%')
#print('5%','10%','20%','30%','40%','50%','60%','70%','80%','90%','95%','96%','97%','98%','99%')
time.sleep(1)
print('Loading... 5%')
time.sleep(1)
print('Loading... 10%')
time.sleep(1)
print('Loading... 15%')
time.sleep(1)
print('Loading... 20%')
time.sleep(1)
print('Loading... 25%')
time.sleep(1)
print('Loading... 30%')
time.sleep(1)
print('Loading... 40%')
time.sleep(1)
print('Loading... 50%')
time.sleep(1)
print('Loading... 60%')
time.sleep(1)
print('Loading... 70%')
time.sleep(1)
print('Loading... 75%')
time.sleep(1)
print('Loading... 85%')
time.sleep(1)
print('Loading... 90%')
time.sleep(3)
print('Loading... 95%')
time.sleep(3)
print('Loading... 96%')
time.sleep(3)
print('Loading... 97%')
time.sleep(3)
print('Loading... 98%')
time.sleep(3)
print('Loading... 99%')
time.sleep(3)
print('Данная программа не причинит вреда вашему компьютеру.')
time.sleep(3)
print('''

    Хорошего дня :D

    ''')
input()
</code>


Для чего в ui-файле, созданном в Qt Designer, создается метод retranslateUi?
Я создал ui-файл в Qt Designer и ковертировал его в python-файл. Когда пытался разобрать получившийся код, наткнулся на метод retranslateUi. Вот весь код:
<code>
from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(596, 575)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.listWidget = QtWidgets.QListWidget(self.centralwidget)
        self.listWidget.setGeometry(QtCore.QRect(10, 10, 256, 471))
        self.listWidget.setObjectName("listWidget")
        self.ButtonBrowse = QtWidgets.QPushButton(self.centralwidget)
        self.ButtonBrowse.setGeometry(QtCore.QRect(90, 500, 75, 23))
        self.ButtonBrowse.setObjectName("ButtonBrowse")
        self.ButtonPlay = QtWidgets.QPushButton(self.centralwidget)
        self.ButtonPlay.setGeometry(QtCore.QRect(310, 20, 75, 23))
        self.ButtonPlay.setObjectName("ButtonPlay")
        self.ButtonStop = QtWidgets.QPushButton(self.centralwidget)
        self.ButtonStop.setGeometry(QtCore.QRect(470, 20, 75, 23))
        self.ButtonStop.setObjectName("ButtonStop")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 596, 21))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):  #ИНТЕРЕСУЮЩИЙ МЕНЯ МЕТОД
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.ButtonBrowse.setText(_translate("MainWindow", "Browse"))
        self.ButtonPlay.setText(_translate("MainWindow", "Play"))
        self.ButtonStop.setText(_translate("MainWindow", "Stop"))
</code>
Пожалуйста, подскажите, для чего нужен этот метод, и как избежать его использования(имеет ли это смысл?)?

В классе
Ui_MainWindow создаются два метода, setupUi и retranslateUi.

setupUi создает объекты виджета в соответствующих контейнерах и присваивает им правильные имена объектов.

retranslateUi устанавливает текст и заголовки виджетов.
WARNING! All changes made in this file will be lost!
Я бы вам не советовал сильно рассматривать код сгенерированный
Qt Designer.
Вы можете загрузить в приложение
файл.ui напрямую, без конвертации
и все будет работать.
Теперь посмотрите
файл.ui - зачем в нем разбираться?
Я бы рекомендовал НИКОГДА НЕ ИЗМЕНЯТЬ код, сгенерированный Qt Designer.
Относитесь к данному файлу как к файлу ресурсов, например как к изображению.


Получить количество появлений объекта подряд, начиная с определённого дня
Требуется посчитать количество появлений подряд по дням для каждой cell_name, начиная с текущей даты (От новой к старой). Пример DataFrame:

     cell_name    date_kpi
0    cell1  2019-04-17
1    cell2  2019-04-17
2    cell3  2019-04-17
3    cell4  2019-04-18
4    cell1  2019-04-18
5    cell1  2019-04-19
6    cell2  2019-04-19

Ожидаемый результат по данным из примера:

cell_name  qty
cell1      3
cell2      1

Если я правильно понял вопрос, то решение может быть таким:

df['date_kpi']= pd.to_datetime(df['date_kpi'])
df['diff'] = df.groupby('cell_name')['date_kpi'].diff().dt.days.fillna(1)
df = df.drop(df[df['diff'] != 1].index)
print(df.groupby(['cell_name'])['diff'].sum())

Результат:

cell_name
cell1    3.0
cell2    1.0
cell3    1.0
cell4    1.0
Name: diff, dtype: float64


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

bot.message_handler(commands=['start'])
def welcome(message):
    sti = open('static/welcome.webp', 'rb')
    bot.send_sticker(message.chat.id, sti)

    # keyboard
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
    item1 = types.KeyboardButton("🎲 Рандомное число")
    item2 = types.KeyboardButton("😊 Как дела?")
    item3 = types.KeyboardButton("☁ Погода")

    markup.add(item1, item2, item3)

    bot.send_message(message.chat.id, "Добро пожаловать, {0.first_name}!\nЯ - <b>{1.first_name}</b>, бот созданный чтобы быть подопытным кроликом.".format(message.from_user, bot.get_me()),
        parse_mode='html', reply_markup=markup)

@bot.message_handler(content_types=['text'])
def lalala(message):
    if message.chat.type == 'private':
        if message.text == '🎲 Рандомное число':
            bot.send_message(message.chat.id, str(random.randint(0,100)))
        if message.text == '☁ Погода':
            weather = bot.send_message(message.chat.id, "Введи название своего города пожалуйста.")

            @bot.message_handler(content_types=['text'])
            def prognoz(message):
                try:
                    observation = owm.weather_at_place(message.text)
                    w = observation.get_weather()
                    temp = w.get_temperature('celsius')["temp"]

                    answer = "В городе " + message.text + " сейчас " +  w.get_detailed_status() + "\n"
                    answer += "Температура сейчас в районе " + str(temp) + "\n\n"

                    if temp < 10:
                        answer += "Оденься потеплее"
                    elif temp < 20:
                        answer += "Сейчас холодно, надень шапку!"
                    else:
                        answer += "Погода класс!"

                    bot.send_message(message.chat.id, answer)
                except:
                    bot.send_message(message.chat.id, "Такого города не существуе, или я его ещё не знаю)\nПожалуйста введите другой город.")
        elif message.text == '😊 Как дела?':

            markup = types.InlineKeyboardMarkup(row_width=2)
            item1 = types.InlineKeyboardButton("Хорошо", callback_data='good')
            item2 = types.InlineKeyboardButton("Не очень", callback_data='bad')
            item3 = types.InlineKeyboardButton("Балдежь", callback_data='baldez')
            markup.add(item1, item2, item3)

            bot.send_message(message.chat.id, 'Отлично, сам как?', reply_markup=markup)

@bot.callback_query_handler(func=lambda call: True)
def callback_inline(call):
    try:
        if call.message:
            if call.data == 'good':
                bot.send_message(call.message.chat.id, 'Вот и отличненько 😊')
            elif call.data == 'bad':
                bot.send_message(call.message.chat.id, 'Бывает 😢')
            elif call.data == 'baldez':
                bot.send_message(call.message.chat.id, 'Великий балдежь')

            # remove inline buttons
            bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id, text="😊 Как дела?",
                reply_markup=None)

            # show alert
            bot.answer_callback_query(callback_query_id=call.id, show_alert=False,
                text="Боты захватят мир!!11")

    except Exception as e:
        print(repr(e))

# RUN
bot.polling(none_stop=True)

@bot.message_handler(commands=['city'])
def cmd_city(message):
    send = bot.send_message(message.chat.id, 'Введи город')
    bot.register_next_step_handler(send, city)
    log(message)

def city(message):
    bot.send_message(message.chat.id, 'Ищу погоду в городе {city}'.format(city=message.text))


Django 3 в чем проблема шаблонизации?
Структура папок такая:
Папка templates  в ней 2 файла index.html(основной элемент вывода) и base.html(для шаблона)
Файл base.html

 {% extend "index.html" %}
    {% block style %}
    <link rel="stylesheet" href="{% static 'css/styles_articles_tpl.css' %}"/>
    <link rel="stylesheet" href="{% static 'css/owl.css' %}"/>
    <link rel="stylesheet" href="{% static 'css/highslide.css' %}"/>
    <link rel="stylesheet" href="{% static 'css/calendar.css' %}"/>
    <link rel="stylesheet" href="{% static 'css/styles.css' %}"/>
    <link rel="stylesheet" href="{% static 'css/seo.css' %}"/>
    <link rel="stylesheet" href="{% static 'css/fast.css' %}"/>
    <link rel="stylesheet" href="{% static 'css/patch.css' %}"/>
    <link rel="stylesheet" href="{% static 'css/slick.css' %}"/>
    <link rel="stylesheet" href="{% static 'css/slick-theme.css' %}"/>
    <link rel="stylesheet" href="{% static 'css/index.css' %}"/>
    {% endblock %}

Файл index.html

<!DOCTYPE html>
{% load static %}
<html>
<head>
    {% block style %}{% endblock style %}

В файл index.html не добавляется содержимое блока style находящегося в base.html

Ошибка в первой строке base.html
У вас:

{% extend "index.html" %}

Нужно:

{% extends "index.html" %}

[Доки по Jinja]
И убедитесь, что вы рендерите
base.html, а не
index.html


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

Так не устроит?

def isCube(x):
    y = int(x**(1/3)+0.5)
    return y*y*y == x

Ну, а с учетом того, что кубический корень можно брать и из отрицательных чисел...

def isCube(x):
    y = int(x**(1/3)+0.5)
    return y*y*y == x

count = 0

for i in range(1000,10000):
    y = i-int(str(i)[::-1])
    if y < 0: y = -y
    if isCube(y):
        count = count + 1

print(count)

Но - по напоминанию @V.March - тогда это уже не натуральные числа (0 - тоже не натуральное число...), так что

def isCube(x):
    y = int(x**(1/3)+0.5)
    return y*y*y == x

count = 0

for i in range(1000,10000):
    y = i-int(str(i)[::-1])
    if y <= 0: continue;
    if isCube(y):
        count = count + 1

print(count)

И вообще :) -

print(126)


Передача значения переменной в другой модуль
Подскажите что делаю неправильно. Без использования потока и задержки времени значение передается нормально. А при исполнении mod1.py, через mod3.py вообще ничего не выводится.
Вообще хотел сделать что бы mod1.py работал самостоятельно, сохранял и обновлял значения переменной по времени, а через mod3.py когда необходимо мог получить данное значение для дальнейшего использования.
Заранее Спасибо!
mod1.py

import time
from threading import Thread
import mod2

def func(a, b):
    c = a + b
    return c

def func1():
    while True:
        var = funс(3, 2)
        mod2.var = var

        time.sleep(5)

thread1 = Thread(target=func)
thread1.start()
thread1.join()

mod2.py

var = 0

mod3.py

import mod1
import mod2

print(mod2.var)

А разве не проще будет эту переменную сделать глобальной в mod1.py и брать её оттуда, соответственно.
Дополнено:
Все дело в том, что thread1.join() должен быть в самом конце кода.
Дополнено №2:
вот так должны выглядеть файлы
mod1.py

import time
from threading import Thread
import mod2

def add(a, b):
    c = a + b
    return c

def func1():
    while True:
        var = add(3, 2)
        mod2.var = var

        time.sleep(5)

thread1 = Thread(target=func1)
thread1.start()

mod3.py

import mod1
import mod2

while True:
    print(mod2.var)
    time.sleep(5)

mod1.thread1.join()


Python как можно связать строку с функцией?
Столкнулся со следующей проблемой:
Часто при создании чат-ботов нужно обрабатывать самые разные команды пользователей и в основном я делаю следующее шаги:

Создаю функцию, которая будет обрабатывать определенную команду
Принимаю сообщение от пользователя и отправляю в нужную функцию с помощью конструкции if-elif

Но у этого способа один большой недостаток: Нужно городить множественное if-elif, например:
<code>
new_message = 'персики'

if new_message == 'клубника':
    get_strawberry(new_message)
elif new_message == 'апельсины':
    get_orange(new_message)
elif new_message == 'персики':
    get_peaches(new_message)
</code>
И так далее.
Есть ли для избежания этого какой-то способ?
Когда-то встречал в Flask декораторы, которые писались над функциями (которые должны были вернуть страницу пользователю) и в эти декораторы передавались пути на сайте, когда путь совпадал с текущем путём пользователя, то эта функция срабатывала. Но как такое можно реализовать и есть ли у этого название? Чтобы можно было найти информацию или возможно кто-то сможет показать на примере. Так как мне совершенно непонятно, как можно заставить функцию вызваться просто передав "путь" или в моем случае строку в декоратор, написанный над этой самой функцией.

Можно хранить словарь ссылок на функции:
<code>
def default_action():
    pass

actions = {
    'клубника': get_strawberry,
    'апельсины': get_orange,
    'персики': get_peaches
}

actions.get(new_message, default_action)(new_message)
</code>


Как преобразовать список со временем открытия и закрытия во временную шкалу?
Есть список заказов для двух филиалов A и B:

import pandas as pd
df1 = pd.DataFrame({'Office':['A','A','B','B','A','A','B'],
                'Start':['2019-12-01','2019-12-02','2019-12-02','2019-12-04','2019-12-05','2019-12-06','2019-12-06'],
                'End':['2019-12-03','2019-12-04','2019-12-07','2019-12-09','2019-12-08','2019-12-10','2019-12-10'],
                'Sum':[1.5,2,1,2.2,3.6,4,3.8]})

#   Office  Start   End         Sum
#0  A   2019-12-01  2019-12-03  1.5
#1  A   2019-12-02  2019-12-04  2.0
#2  B   2019-12-02  2019-12-07  1.0
#3  B   2019-12-04  2019-12-09  2.2
#4  A   2019-12-05  2019-12-08  3.6
#5  A   2019-12-06  2019-12-10  4.0
#6  B   2019-12-06  2019-12-10  3.8

Для каждого заказа есть время начала
Start и время окончания
End.
Нужно преобразовать во временную шкалу заказов в работе на каждый день.

#           A Sum_A B   Sum_B
#2019-12-01 1   0.0 0   0.0
#2019-12-02 2   0.0 1   0.0
#2019-12-03 2   1.5 1   0.0
#2019-12-04 1   2.0 2   0.0
#2019-12-05 1   0.0 2   0.0
#2019-12-06 2   0.0 3   0.0
#2019-12-07 2   0.0 3   1.0
#2019-12-08 2   3.6 2   0.0
#2019-12-09 1   0.0 2   2.2
#2019-12-10 1   4.0 1   3.8

A - количество открытых заказов:

Sum_A - сумма в день закрытия заказа:

B - количество открытых заказов:
Sum_B- сумма в день закрытия заказа:
Получил решение с помощью цикла вида:

for index, row in df1.loc[df1['Office']=='A'].iterrows()

Но на больших объемах расчет очень долгий.
Вот мое решение с циклами, совершенно не в стиле Pandas:

# создание DataFrame с результатами, первоначально заполняем 0.0
StartDate = df1['Start'].min()
EndDate = df1['End'].max()
idealTime = pd.date_range(StartDate, EndDate, freq='D')
df2 = pd.DataFrame({'A':[0],
                    'Sum_A':[0.0],
                    'B':[0],
                    'Sum_B':[0.0]},
                    index = idealTime)

# цикл по строкам с Office='A'
for index, row in df1.loc[df1['Office']=='A'].iterrows():
    # Создание временного DataFrame
    StartDate_temp = row['Start']
    EndDate_temp = row['End']

    idealTime_temp = pd.date_range(StartDate_temp, EndDate_temp, freq='D')

    df_temp = pd.DataFrame({'A':[1],
                            'Sum_A':[0.0]},
                            index = idealTime_temp )

    # Для последней даты заказа запоняем сумму заказа
    df_temp.iat[-1, 1] = row['Sum']

    # Прибавляем временный DF к DF c результатами
    df2 = df2.add(df_temp, fill_value = 0)

# цикл по строкам с Office='B'
for index, row in df1.loc[df1['Office']=='B'].iterrows():
    StartDate_temp = row['Start']
    EndDate_temp = row['End']

    idealTime_temp = pd.date_range(StartDate_temp, EndDate_temp, freq='D')

    df_temp = pd.DataFrame({'B':[1],
                            'Sum_B':[0.0]},
                            index = idealTime_temp )

    df_temp.iat[-1, 1] = row['Sum']

    df2 = df2.add(df_temp, fill_value = 0)

Есть ли более быстрое решение, например с использованием
apply(), или векторное?

Попробуйте так:

def fun(df):
    df["Date"] = df.apply(
        lambda row: pd.date_range(row["Start"], row["End"]).values,
        axis=1)
    t = df.drop(columns=["Start", "End"]).explode("Date").reset_index()
    idx = t.groupby(["index", "Office"]).apply(lambda x: x.index[-1])
    t["x"] = 0
    t.loc[idx, "x"] = df["Sum"].to_numpy()
    res = (t
           .groupby(["Date", "Office"])
           .agg(count=("Office", "count"), Sum=("x", "max"))
           .unstack(fill_value=0))
    res.columns = ["A", "B", "Sum_A", "Sum_B"]
    return res

res = fun(df1)

результат:

In [386]: fun(df1)
Out[386]:
            A  B  Sum_A  Sum_B
Date
2019-12-01  1  0    0.0    0.0
2019-12-02  2  1    0.0    0.0
2019-12-03  2  1    1.5    0.0
2019-12-04  1  2    2.0    0.0
2019-12-05  1  2    0.0    0.0
2019-12-06  2  3    0.0    0.0
2019-12-07  2  3    0.0    1.0
2019-12-08  2  2    3.6    0.0
2019-12-09  1  2    0.0    2.2
2019-12-10  1  1    4.0    3.8

замеры времени для фрейма, сосотоящего из 7.000 строк
весь ваш код я оформил как функцию
fun2() для удобства сравнения времени выполнения

big = pd.concat([df1] * 10**3, ignore_index=True)

In [393]: %timeit fun(big)
1.71 s ± 9.22 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

In [394]: %timeit fun2(big)
27.8 s ± 113 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

In [395]: big.shape
Out[395]: (7000, 5)

разница по времени выполнения на моем железе - 16 раз:

In [396]: 27.8 / 1.71
Out[396]: 16.257309941520468

PS подозреваю, что можно еще ускорить код, воспользовавшись numba, но мне лень ;)


Чем отличаются value += 5 и value = value + 5? [дубликат]

На этот вопрос уже дан ответ здесь:

В чём разница между a += b и a = a + b

                                (1 ответ)

Закрыт 3 года назад.

После того, как я нашёл различия между arr.append() и arr = arr + [5] при передаче arr как параметра функции, я задался вопросом, имеют ли какое-то подобное отличие, связанное с ссылками на объекты и локальностью переменных, комбинированные операторы += и оператор + с присваиванием, когда выполняются внутри функции. В интернете ответа не нашёл, поэтому пишу сюда.

Для неизменяемых объектов результат этих операторов будет один и тот же. После изменения придется явно возвращать значение или же передавать значение в функцию внутри list.
Похоже у вас есть пробел в изменяемых/неизменяемых объектах Python, советую изучить подробнее.


Помогите решить задачу, цикл for с вложенными циклами
Нужно вывести таблицу умножения, на вход идут 4 числа, Программа должна вывести фрагмент таблицы умножения для всех чисел отрезка [a; b] на все числа отрезка [c;d]. Почти решил сам, но у меня не получается вывести все в одной таблице, в зависимости от количества переменных c,d, увеличивается количество таблиц. Вот мой код:
<code>
a=int(input())
b=int(input())
c=int(input())
d=int(input())
a<=b
c<=d
for i in range(c,d+1):
  print('\t',*range(c,d+1),sep='\t')
  for j in range(a,b+1):
      print(j,j*i)

Пример на выходе:
7
10
5
6
    5   6
7 35
8 40
9 45
10 50
    5   6
7 42
8 48
9 54
10 60
Должно быть:
  5 6
7 35 42
8 40 48
9 45 54
10 50 60
Третий день мучаюсь!
</code>

Где-то я уже это видел
<code>
a = int(input())
b = int(input())
c = int(input())
d = int(input())
for g in range(c, d+1):
    print('\t'+str(g), end='')
print(end='\n')
for i in range(a, b+1):
    print(str(i)+'\t', end='')
    for j in range(c, d+1):
        print(str(i*j), end='\t')
    print(end='\n')
</code>


Почему не меняется шрифт текста на кнопе, созданной с помощью PyQt5?
Я пытался учиться создавать приложения с разделенными GUI и логикой.
Для начала хотел создать только одну кнопку и изменить в ней шрифт.
На кнопке появился текст, но шрифт оказался не тем, что мне нужен.
Я делал то же самое с помощью модуля tkinter, проблем не возникало. Т.е. шрифт существует, с ним нет проблем, и я пишу правильное название.
design.py:

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_MainWindow(object):

    def setupUi(self, MainWindow):

        MainWindow.setObjectName("Player")
        MainWindow.setMinimumSize(800, 600)
        MainWindow.setMaximumSize(800, 600)

        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")

        self.choose_directory_button = QtWidgets.QPushButton("Choose Directory", self.centralwidget)
        self.choose_directory_button.setFont(QtGui.QFont('CeraPro-Bold', 8)) #ТУТ Я УКАЗЫВАЮ ШРИФТ
        self.choose_directory_button.setGeometry(QtCore.QRect(350, 10, 100, 30))
        self.choose_directory_button.setObjectName("choose_directory_button")

        MainWindow.setCentralWidget(self.centralwidget)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("Player", "Player"))

main.py:

import os
import sys

import design
from PyQt5 import QtCore, QtGui, QtWidgets

class Browse(QtWidgets.QMainWindow, design.Ui_MainWindow):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        self.choose_directory_button.clicked.connect(self.choose)

    def choose(self):
        dirlist = QtWidgets.QFileDialog.getExistingDirectory(self,"Выбрать папку",".")
        print(str(dirlist))

def main():
    app = QtWidgets.QApplication(sys.argv)
    window = Browse()
    window.show()
    app.exec_()

if __name__ == '__main__':
    main()

Пожалуйста, подскажите, что я делаю не так?

попробуйте так:
<code>
font = QtGui.QFont()
font.setFamily('CeraPro-Bold') # сам шрифт
font.setPointSize(14) #  размер шрифта
self.choose_directory_button.setFont(font)
</code>


Как объединить функции подсчёта в одну?
Делал калькулятор с помощью tkinter, но не понимаю как мне объединить почти полностью совпадающие функции
plus,
minus,
um,
dell в одну. Сама программа рабочая.

from tkinter import *
def is_digit(string):
    if string.isdigit():
       return True
    else:
        try:
            float(string)
            return True
        except ValueError:
            return False
def plus(key):
    n1 = ent1.get().split()
    n2 = ent2.get().split()
    if not(is_digit(n1[0])==True and is_digit(n2[0])==True):
        lbl["text"] = "Вводите только числа!!"
    elif len(n1)>1 or len(n2)>1:
        lbl["text"] = "Вводите только одно число в строке!"
    elif key == "+":
        s = float(n1[0]) + float(n2[0])
        lbl["text"] = s

def minus():
    n1 = ent1.get().split()
    n2 = ent2.get().split()
    if not(is_digit(n1[0])==True and is_digit(n2[0])==True):
        lbl["text"] = "Вводите только числа!!"
    elif len(n1)>1 or len(n2)>1:
        lbl["text"] = "Вводите только одно число в строке!"
    else:
        s = float(n1[0]) - float(n2[0])
        lbl["text"] = s

def um():
    n1 = ent1.get().split()
    n2 = ent2.get().split()
    if not(is_digit(n1[0])==True and is_digit(n2[0])==True):
        lbl["text"] = "Вводите только числа!!"
    elif len(n1)>1 or len(n2)>1:
        lbl["text"] = "Вводите только одно число в строке!"
    else:
        s = float(n1[0]) * float(n2[0])
        lbl["text"] = s

def dell():
    n1 = ent1.get().split()
    n2 = ent2.get().split()
    if not(is_digit(n1[0])==True and is_digit(n2[0])==True):
        lbl["text"] = "Вводите только числа!!"
    elif len(n1)>1 or len(n2)>1:
        lbl["text"] = "Вводите только одно число в строке!"
    else:
        if float(n2[0])==0:
            lbl["text"] = "На ноль делить нельзя"
        else:
            s = float(n1[0])/float(n2[0])
            lbl["text"] = s

root = Tk()

ent1 = Entry(root, width = 30)
ent2 = Entry(root, width = 30)
btnp = Button(root, text = "+", command = plus, width = 20)
btnm = Button(root, text = "-", command = minus, width = 20)
btnu = Button(root, text = "*", command = um, width = 20)
btnd = Button(root, text = "/", command = dell, width = 20)
lbl = Label(root, width = 30)

ent1.pack()
ent2.pack()
lbl.pack()
btnp.pack()
btnm.pack()
btnu.pack()
btnd.pack()

root.mainloop()

from tkinter import *
from operator import add, sub, mul, truediv

def is_digit(string):
    if string.isdigit():
       return True
    else:
        try:
            float(string)
            return True
        except ValueError:
            return False

def operation(op):
    def inner():
        n1 = ent1.get().split()
        n2 = ent2.get().split()
        if not (is_digit(n1[0]) == True and is_digit(n2[0]) == True):
            lbl["text"] = "Вводите только числа!!"
            return
        if len(n1) > 1 or len(n2) > 1:
            lbl["text"] = "Вводите только одно число в строке!"
            return
        if op == truediv and float(n2[0]) == 0:
            lbl["text"] = "На ноль делить нельзя"
            return

        s = op(float(n1[0]), float(n2[0]))
        lbl["text"] = s

    return inner

root = Tk()

ent1 = Entry(root, width = 30)
ent2 = Entry(root, width = 30)
btnp = Button(root, text = "+", command = operation(add), width = 20)
btnm = Button(root, text = "-", command = operation(sub), width = 20)
btnu = Button(root, text = "*", command = operation(mul), width = 20)
btnd = Button(root, text = "/", command = operation(truediv), width = 20)
lbl = Label(root, width = 30)

ent1.pack()
ent2.pack()
lbl.pack()
btnp.pack()
btnm.pack()
btnu.pack()
btnd.pack()

root.mainloop()


Составить регулярное выражение для поиска ИНН
Требуется составить регулярное выражения для поиска ИНН в тексте.
Первый пример возможного текста:

Lorem Ipsum - это текст-"рыба", часто используемый в печати и
  вэб-дизайне. Lorem Ipsum является стандартной "рыбой" для текстов на
  латинице с начала XVI века. В то время некий безымянный печатник
  создал большую коллекцию размеров и форм шрифтов, используя Lorem
  Ipsum для распечатки образцов. Lorem Ipsum ИНН 3603006880 не только
  успешно пережил без заметных изменений пять веков, но и перешагнул в
  электронный дизайн. Его популяризации в новое время послужили
  публикация листов Letraset с образцами Lorem Ipsum в 60-х годах и, в
  более недавнее время, программы электронной вёрстки типа Aldus
  PageMaker, в шаблонах которых используется Lorem Ipsum.

Второй пример возможного текста:

Lorem Ipsum-этотекст-"рыба",частоиспользуемыйвпечатии
  вэб-дизайне.LoremIpsumявляется стандартной "рыбой" для текстов на
  латиницесначалаXVIвека.Втовремянекийбезымянныйпечатник
  создалбольшуюколлекциюразмеровиформшрифтовиспользуяLorem
  Ipsumдляраспечаткиобразцов.LoremIpsumИНН3603006880нетолько
  успешнопережилбеззаметныхизмененийпятьвеков,ноиперешагнулв
  электронный дизайн.Егопопуляризациивновоевремяпослужили
  публикациялистовLetrasetсобразцамиLoremIpsumв60-хгодахи,в
  болеенедавнеевремя,программыэлектроннойвёрсткитипаAldus
  PageMaker,вшаблонахкоторыхиспользуетсяLoremIpsum.

Дополнение:
ИНН всегда имеет фиксированную длину в 10 цифр.


Добавление данных в спискок при условии
Имеется список:

mylist = [(1, 6), (2, 2), (3, 1), (5, 1), (6, 2), (8, 2)]

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

mylist = [(1, 6), (2, 2), (3, 1), (4, 0), (5, 1), (6, 2), (7, 0), (8, 2)]


Каждые пять минут выдавать случайную строку из .txt файла
Создаю бота на Python 3.8 для Telegram. Необходимо, чтобы бот каждые 5 минут выдавал сообщение, содержанием которого будет случайная строка из небольшого (10 KB) .txt файла. Каждая строка вмещает в себя небольшое текстовое сообщение на кириллице.
Подскажите, пожалуйста, как реализовать подобное действие.

import time

handle = open("test.txt", "r")
for line in handle:
    print(line)
    time.sleep(ваше время в секундах)
handle.close()


Django/PDF изоброжение не грузится
Прошу помочь, посмотрел кучу туторилав и форумов, только вы поможете
есть заранее написанный на бутстрапе html хочу генерировать в pdf что бы сразу скачал, скажу заранее что у меня там изоброжение и кириллица
как мне достичь целей, попробовал reportlab и xhtml2pdf, ну никак.

Нашел ответ, может кому то пригодится
окозалось все очень просто!
<code>
from django.http import HttpResponse
from django.template.loader import get_template
import pdfkit
def pdf(request,id):
    bus = Buses.objects.get(id=id)
    template = get_template('buses/pdf.html')
    html = template.render({'bus': bus})
    options = {
        'page-size': 'Letter',
        'encoding': "UTF-8",
    }

    pdf = pdfkit.from_string(html, False, options)
    response = HttpResponse(pdf, content_type='application/pdf')
    response['Content-Disposition'] = 'attachment; filename="driver_{}_route_{}.pdf"'.format(bus.name, bus.route)

    return response
</code>


Как отправить данные из двух разных форм на одной странице через ajax?
На странице имеется форма поиска, обработка через ajax:

<body>
<script>
    function get_data() {
        $.ajax({
            url: "/get_data",
            data: $('form').serialize(),
            type: 'POST',
            success: function(response) {
                var json = jQuery.parseJSON(response)
                $('#data').html(json.data)
                console.log(response);
            },
            error: function(error) {
                console.log(error);
            }
        });
    }
</script>
<form onsubmit="get_data();return false" action="" method="post" id="form" name="form">
            <div class="input-group mb-3">
                <div class="input-group-prepend">
                    <span class="input-group-text" id="basic-addon1">{{count}}</span>
                </div>
                <input type="text" class="form-control" id="name" name="name" aria-describedby="button-addon2"
                required
                oninvalid="this.setCustomValidity('Заполните это поле')" oninput="setCustomValidity('')">
                <div class="input-group-append">
                    <button class="btn btn-outline-secondary" type="submit" name="finduser" value="Validate" onclick="get_data();">
                        Поиск
                    </button>
                </div>
            </div>
        </form>
<div id="data"></div>

Она прекрасно работает, передаёт данные в мой python и возвращает данные обратно на страницу:

        @app.route('/get_data', methods=['POST'])
        def get_data():
        if request.form['name'] == '':
           lst = search_user(request.form['name'].lower())
           return json.dumps({'data': render_template('response.html',
           lst=lst, len=range(0, len(lst)))})

Мне понадобилось добавить еще одну форму, я создал

@app.route('/add_data', methods=['POST'])
def add_data():
  print(request.form['l_name'])

добавил на страницу новую форму, а так же скопировал функцию:

<script>
    function add_data() {
        $.ajax({
            url: "/add_data",
            data: $('adduser').serialize(),
            type: 'POST',
            success: function(response) {
                console.log(response);
            },
            error: function(error) {
                console.log(error);
            }
        });
    }
</script>

    <form onsubmit="add_data();return false" action="" method="post" id="adduser" name="adduser">
  <div class="form-row">
    <div class="col-md-4 mb-3">
      <input type="text" class="form-control" id="l_name" name="l_name" placeholder="Фамилия" required oninvalid="this.setCustomValidity('Заполните это поле')" oninput="setCustomValidity('')">
  </div>
  </div>
  </form>
  <button class="btn btn-success" type="submit" name="adduser" value="Validate" onclick="add_data();">Добавить</button>

Но это не сработало. Я получаю ошибку в консоли PyCharm:

print(request.form['l_name'])
raise exceptions.BadRequestKeyError(key)
KeyError: 'l_name'

Как мне получать данные в python с разных форм через ajax?

        $(function() {
      $('form').submit(function(e) {
        var $form = $(this);
        $.ajax({
          type: $form.attr('method'),
          url: $form.attr('action'),
          data: $form.serialize()
      }).done(function(response) {
        var json = jQuery.parseJSON(response)
        $('#data').html(json.data)
        console.log('success');
    }).fail(function() {
      console.log('fail');
  });
    //отмена действия по умолчанию для кнопки submit
    e.preventDefault();
});
  });

Правильный пример Ajax запроса для отправки формы c помощью jQuery и JavaScript
Изменил формы таким образом:

<form action="/get_data" method="post" id="finduser" name="form">
<form action="/add_data" method="post" id="adduser" name="form">

<button type="submit" name="finduser" value="Validate">Поиск</button>
<button type="submit" name="adduser" value="Validate">Добавить</button>


Как в PyQt5 при нажатии на кнопку закрыть окно и открыть новое?
У меня на
PyQt есть меню игры. При нажатии на кнопку начать игру открывается окно, где должна быть игра и закрывается окно главного меню.
Только вот после нажатия на кнопку, когда закрывается главное меню, перед появлением следующего окна на долю секунды закрывается вообще вся игра.
Т.е. бывает момент,когда вообще нет открытых окон.
Как решить эту проблему? Или для моих целей можно реализовать переход к другому окну по другому?Вот функция,которая работает при нажатии на кнопку.

def go_start(self):
        self.g = Game('s','r','f','d','map1.jpg')
        self.close()

Функция создает экземпляр класса Game, который создает новое окно и показывает его на весь экран. Потом сама же функция закрывает окно класса
Main, создающего меню и чьим методом является функция
go_start.

Я не смог получить то, что вы написали, но я бы делал это так:
(установите свое изображение при создании экземпляра
self.g и попробуйте)

import sys
from PyQt5.Qt import *

class Game(QWidget):
    def __init__(self, s, r, f, d, img, parent):
        super(Game, self).__init__()

        print(s, r, f, d, img, parent)
        self.parent = parent

        self.label = QLabel()
        self.label.setPixmap(QPixmap(img))
        self.button = QPushButton('End', clicked=self.go_end)

        self.grid_layout = QGridLayout(self)
        self.grid_layout.addWidget(self.label)
        self.grid_layout.addWidget(self.button)

    def go_end(self):
        self.parent.show()
        self.hide()

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        centralWidget = QWidget()
        self.setCentralWidget(centralWidget)

        self.button = QPushButton('Start', clicked=self.go_start)

        self.grid_layout = QGridLayout(centralWidget)
        self.grid_layout.addWidget(self.button)

    def go_start(self):
        self.g = Game('s','r','f','d','im.png', self)   # 'map1.jpg'
        self.g.showFullScreen()
        self.hide()    # close()

if __name__=="__main__":
    app = QApplication(sys.argv)
    w = MainWindow()
    w.show()
    app.exec_()


Вызов одной функции в разные промежутки времени
Подскажите пожалуйста каким образом вызвать func_call(), в разные промежутки времени?
<code>
def func_call(a, b):
    print(a + b)

def f1():
    while True:
        func_call(1, 2)
        time.sleep(3)

def f2():
    while True:
        func_call(2, 3)
        time.sleep(10)

f1()
f2()
</code>

Как вам уже подсказали, используйте мультипоточность:
<code>
import time
from threading import Thread

def func_call(a, b):
    print(a + b)

def f1():
    while True:
        print('Func f1')
        func_call(1, 2)
        time.sleep(3)

def f2():
    while True:
        print('Func f2')
        func_call(2, 3)
        time.sleep(10)

thread1 = Thread(target=f1)
thread2 = Thread(target=f2)

thread1.start()
thread2.start()
thread1.join()
thread2.join()
</code>


Я хочу загрузить в бота список товаров с yml файла. Это возможно или нет?
У меня есть yml файл, и я хочу чтобы этот yml файл был подключен к моему боту, который в свою очередь будет выгружать эти файлы на телеграм канал. Это возможно? Если да, то куда вообще смотреть? И да, бота я делаю на Python

Довольно абстрактный вопрос. Если вы разрабатываете скрипт бота для телеграмма, вы должны иметь сервер, где будет лежать скрипт, обрабатывающий запросы и ответы бота. В данном скрипте должен присутствовать функционал, считывающий информации из файла формата YAML, что да, конечно возможно через python. Cмотрите документацию по обработка информации из yaml-файлов Работа с файлами в формате YAML.
Если же файлы в формате YAML будут просто загружаться в телеграмм-канал, то вам так же необходимо, что бы этот список файлов находился на сервере бота, и функционал, выгружающий эти файлы в скрипте самого бота. Например так.


Django не видит статические файлы при выключенном debug'е
Когда выключил debug (debug = False), все css исчезли с сайта.

Документация по теме:

Managing static files.
Deploying static files.

DEBUG=True предназначен только для разработки и не подходит для прода.
При
DEBUG=False вам нужно статичные файла раздавать вашим веб-сервером (Apache/nginx), а не с помощью Django.


Найти в списке минимальный и максимальный элемент
Не используя функций Python (min, max и т.п.) необходимо:
   Найти в списке минимальный элемент.
   Найти в списке максимальный элемент.
   Найти среднее арифметическое.
Дополнительные требования:
   Массив должен вводиться с клавиатуры.
   Ввод должен заканчивать после введения ключевого слова “end”.
Прочих проверок на правильность ввода данных можно не делать.
Пример ввода:
 5
 2
 end

<code>
    listOfNumbers = input('Создайте список целочисленных значений: ').split()
    listOfNumbers = [int(c) for c in listOfNumbers[:listOfNumbers.index('end')]]
    maximumElementOfList, minimumElementOfList = listOfNumbers.copy(), listOfNumbers.copy()

    #Воспользуемся методом списков sort(). Метод списков sort() — сортирует целочисленные значения списка от наименьшего числа, к большему. Где первым элементом списка minimumElementOfList будет являться минимальное целочисленное значение списка listOfNumbers.
    minimumElementOfList.sort()
    #Воспользуемся методом списков sort() и методом списков reverse(). Метод списков sort() — сортирует целочисленные значения списка от наименьшего числа, к большему. Метод списков reverse() — переворачивает список. Где первым элементом списка maximumElementOfList будет являться максимальное целочисленное значение списка listOfNumbers.
    maximumElementOfList.sort()
    maximumElementOfList.reverse()

    print('Максимальный элемент списка: ', maximumElementOfList[0], '\nМинимальный элемент
    списка: ', minimumElementOfList[0], '\nСреднее арифметическое минимального и
    максимального значений списка: ', maximumElementOfList[0] + minimumElementOfList[0] // 2)
</code>
Вывод:
Создайте список целочисленных значений: 1 2 3 4 5 end 6
Максимальный элемент списка: 5
Минимальный элемент списка: 1
Среднее арифметическое минимального и максимального значений списка: 5


ошибка в шифре цезаря
Pешил сделать функцию шифра цезаря. В первом аргументе искомая строка, во втором сдвиг. Если второй аргумент больше 11 или слишком большой текст код зацикливается. Как можно решить данную проблему(если не сложно, можно не менять коренную структуру кода)
<code>
def match(text, alphabet=set('абвгдеёжзийклмнопрстуфхцчшщъыьэюя')):
    return alphabet.isdisjoint(text.lower())

def CesarCodeRu(text3, number):

    alphabet = ["а","б","в","г","д","е","ё","ж","з","и","й","к","л","м","н","о",
        "п","р","с","т","у","ф","х","ц","ч","ш","щ","ъ","ы","ь","э","ю","я"]
    # уборка лишних пробелов
    text2 = text3.replace(' ','')
    # преобразование к нижнему регистру
    text1 = text2.lower()
    # разбитие строки на массив
    text = list(text1)
    i = 0
    j = 0
    newText = []
    # Проверка на русский алфавит
    if match(text1):
        return 'invalid text'
    # проверка на валидность сдвига
    if number > 33 or number < -33:
        return 'invalid number'
    # Если число равно 0 или 33 или -33 то возвращение исходной строки
    if number == 0 or number == 33 or number == -33:
        return ''.join(text)
    # Первый цикл идет по text
    # второй меняет каждую букву на сдвиг
    while i < len(text):
        while j <= len(alphabet):
            stoping = j + number
            if  stoping >= 33:
                j = number - 32
            elif stoping <= -33:
               j = number + 32
            # Если буква в строке text равна букве алфавита
            # то добавляем в массив "сдвиг"
            elif text[i] == alphabet[j]:
                newText.append( alphabet[j + number])
                # Остановка цикла
                break
            j = j + 1
        i = i + 1
    return ''.join(newText)

print(CesarCodeRu('Мама мыла раму', 5))
</code>

Вот рабочий код, попытался сохранить общую структуру вашего кода:
<code>
def match(text, alphabet=set('абвгдеёжзийклмнопрстуфхцчшщъыьэюя')):
    return alphabet.isdisjoint(text.lower())

def CesarCodeRu(text3, number):
    alphabet='абвгдеёжзийклмнопрстуфхцчшщъыьэюя'
    # убираем лишние пробелы, приводим в нижний регистр
    text = text3.replace(' ','').lower()
    # проверяем текст на содержание иностранных букв
    if match(text):
        return 'invalid text'
    # проверка на валидность сдвига
    if number>33 or number<-33:
        return 'invalid number'
    # если сдвиг 0 или 33 или -33, то вернем введенную строку
    if number in [0,33,-33]:
        return text

    new_text=''
    # цикл идет побуквенно
    for letter in text:
        # создаем новую позицию: ищем позицию буквы и добавляем сдвиг
        new_pos = alphabet.find(letter)+number
        # если новая позиция больше длины алфавита - вычитаем из нее длину
        if new_pos > len(alphabet)-1:
            new_pos -= len(alphabet)
        # добавляем в новую строку полученный символ
        new_text += alphabet[new_pos]

    return new_text

print(CesarCodeRu('АБВ', 32))
</code>


Различие между словарем и списком
Прошу прощения если этот вопрос уже задавали но подскажите пожалуйста почему в
      этом коде на выходе будет [2,2,2], грубо говоря три двойки

A=[1,2,3,3,2,1,1,2]
res = list(filter(lambda x:x%2==0,A))
print (res)

А в этом [2], то есть одна двойка

A={1,2,3,3,2,1,1,2}
res = list(filter(lambda x:x%2==0,A))
print (res)

Может я конечно и ошибаюсь, но {} без ключей это множество, а в этом типе данных каждый элемент встречается только ОДИН раз , поэтому итератор и останавливается на первой встречной двойке.


Проблема c перетаскиванием окна и методом close() и showMinimized() PyQt5
Решил сделать окно без обычных кнопок windows (свернуть
-, закрыть
Х).
Сделал две круглые кнопки, на одну добавил функцию "закрыть", а на вторую функцию "свернуть".
Функции работают, но можно ли сделать так, чтобы не надо было кликать два раза чтобы свернуть и закрыть.
И еще нашел проблему с перетаскиванием окна, его нельзя перетаскивать.
open.py:

import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from untitled import Ui_MainWindow

class ExampleApp(QtWidgets.QMainWindow, Ui_MainWindow):
    def __init__(self):
        super().__init__()
        self.setupUi(self)

        self.setWindowFlags(QtCore.Qt.FramelessWindowHint)

        self.pushButton.clicked.connect(self.Close)

        self.pushButton_2.clicked.connect(self.Minimize)

    def Close(self):
        self.pushButton.clicked.connect(self.close)

    def Minimize(self):
        self.pushButton_2.clicked.connect(self.showMinimized)

if __name__=="__main__":
    app = QtWidgets.QApplication(sys.argv)
    window = ExampleApp()
    window.show()
    sys.exit(app.exec_())

untitled.py:

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(1100, 460)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(1074, 7, 16, 16))
        self.pushButton.setStyleSheet("border-radius: 7px;\n"
"background-color: rgb(255, 0, 4);")
        self.pushButton.setText("")
        self.pushButton.setObjectName("pushButton")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(0, 0, 1101, 31))
        self.label.setStyleSheet("background-color: rgb(65, 65, 65);")
        self.label.setText("")
        self.label.setObjectName("label")
        self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_2.setGeometry(QtCore.QRect(1049, 7, 16, 16))
        self.pushButton_2.setStyleSheet("background-color: rgb(255, 183, 0);\n"
"border-radius: 7px;")
        self.pushButton_2.setText("")
        self.pushButton_2.setObjectName("pushButton_2")
        self.label.raise_()
        self.pushButton.raise_()
        self.pushButton_2.raise_()
        MainWindow.setCentralWidget(self.centralwidget)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))

Как вариант:
<code>
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.Qt import *

#from untitled import Ui_MainWindow
class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(1100, 460)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(1074, 7, 16, 16))
        self.pushButton.setStyleSheet("border-radius: 7px;\n"
"background-color: rgb(255, 0, 4);")
        self.pushButton.setText("")
        self.pushButton.setObjectName("pushButton")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(0, 0, 1101, 31))
        self.label.setStyleSheet("background-color: rgb(65, 65, 65);")
        self.label.setText("")
        self.label.setObjectName("label")
        self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_2.setGeometry(QtCore.QRect(1049, 7, 16, 16))
        self.pushButton_2.setStyleSheet("background-color: rgb(255, 183, 0);\n"
"border-radius: 7px;")
        self.pushButton_2.setText("")
        self.pushButton_2.setObjectName("pushButton_2")
        self.label.raise_()
        self.pushButton.raise_()
        self.pushButton_2.raise_()
        MainWindow.setCentralWidget(self.centralwidget)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))

class ExampleApp(QtWidgets.QMainWindow, Ui_MainWindow):
    def __init__(self):
        super().__init__()
        self.setupUi(self)

        self.setWindowFlags(QtCore.Qt.FramelessWindowHint)

        self.pushButton.clicked.connect(self.myClose)

        self.pushButton_2.clicked.connect(self.myMinimize)

        self.start = QPoint(0, 0)    # +
        self.pressing = False        # +

    def myClose(self):
#        self.pushButton.clicked.connect(self.close)
        self.close()

    def myMinimize(self):
#        self.pushButton_2.clicked.connect(self.showMinimized)
        self.showMinimized()

# + vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
    def mousePressEvent(self, event):
        self.start = self.mapToGlobal(event.pos())
        self.pressing = True

    def mouseMoveEvent(self, event):
        if self.pressing:
            self.end = self.mapToGlobal(event.pos())
            self.movement = self.end-self.start
            self.setGeometry(self.mapToGlobal(self.movement).x(),
                                self.mapToGlobal(self.movement).y(),
                                self.width(),
                                self.height())
            self.start = self.end

    def mouseReleaseEvent(self, QMouseEvent):
        self.pressing = False
# + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    window = ExampleApp()
    window.show()
    sys.exit(app.exec_())
</code>


Connection error в вк боте
Язык:Python
Я сделал бота для вк. Сначало все было отлично бот работал, но на следующий день бот крашнулся.
Ошибка:

  File "Vk_bott.py", line 87, in main
    longpoll = VkLongPoll(vk_session)
  File "C:\Users\antonio_cra\AppData\Local\Programs\Python\Python37-32\lib\site-
packages\vk_api\longpoll.py", line 517, in __init__
    self.update_longpoll_server()
  File "C:\Users\antonio_cra\AppData\Local\Programs\Python\Python37-32\lib\site-
packages\vk_api\longpoll.py", line 531, in update_longpoll_server
    response = self.vk.method('messages.getLongPollServer', values)
  File "C:\Users\antonio_cra\AppData\Local\Programs\Python\Python37-32\lib\site-
packages\vk_api\vk_api.py", line 606, in method
    values
  File "C:\Users\antonio_cra\AppData\Local\Programs\Python\Python37-32\lib\site-
packages\requests\sessions.py", line 581, in post
    return self.request('POST', url, data=data, json=json, **kwargs)
  File "C:\Users\antonio_cra\AppData\Local\Programs\Python\Python37-32\lib\site-
packages\requests\sessions.py", line 533, in request
    resp = self.send(prep, **send_kwargs)
  File "C:\Users\antonio_cra\AppData\Local\Programs\Python\Python37-32\lib\site-
packages\requests\sessions.py", line 646, in send
    r = adapter.send(request, **kwargs)
  File "C:\Users\antonio_cra\AppData\Local\Programs\Python\Python37-32\lib\site-
packages\requests\adapters.py", line 516, in send
    raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPSConnectionPool(host='api.vk.com', port
=443): Max retries exceeded with url: /method/messages.getLongPollServer (Caused
 by NewConnectionError('<urllib3.connection.VerifiedHTTPSConnection object at 0x
0C0F7DB0>: Failed to establish a new connection: [Errno 11004] getaddrinfo faile
d'))

И эта ошибка переодически повторялась через 1-2 дня. Я не могу понять из-за чего она и как ее решить?
Код подомный моему:

import vk_api
from vk_api.longpoll import VkLongPoll, VkEventType
token = ""
vk = vk_api.VkApi(token=token)
longpoll = VkLongPoll(vk)
for event in longpoll.listen():
  if event.type == VkEventType.MESSAGE_NEW:
    if event.to_me:
       if event.text == "привет":
         vk.messages.send(user_id=event.user_id, random_id = get_random_id(), message= 'привет')
       elif request == "пока":
          vk.messages.send(user_id=event.user_id, random_id = get_random_id(), message='пока')

P.S
try except не помогают

Переопределите класс VkBotLongPoll и используйте его

class MyVkBotLongPoll(VkBotLongPoll):
    def listen(self):
        while True:
            try:
                for event in self.check():
                    yield event
            except Exception as e:
                print('Longpoll Error (VK):', e)

Создайте сущность нового класса

def __init__(self):
    ...
    self.longpoll = MyVkBotLongPoll(vk_session, group_id=self.group_id)

Используйте её

def listen_longpoll(self):
    for event in self.longpoll.listen():
    ...


Команды для QPushButton
Предположим что я добавил 2 кнопки
QPushButton в окно и хочу добавить на них такие функции как "Закрыть окно" и "Свернуть окно". Как это сделать?
Т.е. при нажатии первой кнопки окно полностью должно закрываться, а при нажатии второй кнопки должно сворачиваться

Тоесть при нажатии первой кнопки окно полностью должно закрываться,

Вызывайте метод close()

а при нажатии второй кнопки должно сворачиваться.

Вызывайте метод showMinimized()

Например:
<code>
button_close.clicked.connect(self.close)
button_minimize.clicked.connect(self.showMinimized)
</code>


Python проверка на русские буквы
Если в программе на python у меня есть массив

alphabet = ["а","б","в","г","д","е","ё","ж","з","и","й","к","л","м","н","о",
            "п","р","с","т","у","ф","х","ц","ч","ш","щ","ъ","ы","ь","э","ю","я"]
то могу я проверить переменную-строку text на отсутствие русских букв таким образом

if text not in alphabet:
    print('False')

Если нет, то как можно это сделать, (желательно без регулярных выражений). Заранее спасибо!

def match(text, alphabet=set('абвгдеёжзийклмнопрстуфхцчшщъыьэюя')):
    return not alphabet.isdisjoint(text.lower())

print(match('test')) # False
print(match('тест')) # True
print(match('123Ы')) # True
print(match(''))     # False


Циклы и рекурсия
Не могу остановить цикл в while True, break не срабатывает помогите плз.
<code>
x = []

def xxx(a):
    while True:
        if (a % 10) < 1:
            print(x)
            break

        x.append(a // 10)
        xxx(x[-1])

xxx(int(input("Vvedete cheslo")))
</code>

Функция с циклом:

def xxx(num):
  while num > 0:
    yield num
    num //= 10

print(list(xxx(3564)))

Функция с рекурсией:

def xxx(num):
  if num <= 0:
    return []
  else:
    return [num] + xxx(num//10)

print(xxx(3564))

Вывод:

[3564, 356, 35, 3]


Как комментировать запись от имени группы VK?

vk.method('wall.createComment', {'owner_id': myid, 'post_id': idpost, 'from_group': idgroup, 'message': 'Test'})

myid - ид моей страницы, на которой находится запись

idpost - ид поста(под вопросом правильности)

idgroup - ид группы, от имени которой нужно отправить комментарий(я в ней создатель, ключ доступа - проставлены все галочки, также, как и в longpoll)

Ошибка:

vk_api.exceptions.ApiError: [15] Access denied: could not access to this community

Возможно у меня ошибка в том, что ид поста получил неправильно, поэтому, по возможности, прикрепите к ответу то, как можно его получить

Если используете vk_api. Все методы и параметры соответствуют документации. Есть возможность, что прав вашего токена не хватает

import vk_api
vk_session = vk_api.VkApi(token='токен вашей группы')
api = vk_session.get_api()
api.wall.createComment(owner_id='ID куда постить',
                       post_id='ID поста',
                       from_group='ID вашей группы (положительный)',
                       message='Комментарий')

Если сомневаетесь в правильности входных данных можете мануально их проверить.
Группы
vk.com/club{owner_id}
Пост
vk.com/wall{owner_id}_{post_id}


Как с помощью Keras строить нейронную сеть с несколькими выходными слоями для задач многоклассовой многозначной классификации?
Например, есть картинка, на которой изображены три элемента, первый элемент может принадлежать к одному из 100 классов, другой элемент к одному из 30 классов, третий к одному из 10 классов. Сначала с помощью

model = Sequential()

model.add(Conv2D(16, 3, padding = 'same', activation = 'elu', input_shape = (32, 32, 1)))
model.add(MaxPool2D())

model.add(Conv2D(32, 3, padding = 'same', activation = 'elu'))
model.add(MaxPool2D())

model.add(Flatten())

model.add(Dense(400, activation = 'elu'))

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

Во всяком случае, это лучше делать не через последовательную модель, а через функциональную:
<code>
  input_x = Input(X_train.shape[1:], name = 'inp')

  x = Dense(94, name = 'Dense_1')(input_x)
  x = LeakyReLU(name = 'LReLU_1')(x)
  x1 = Dropout(dropout_rate, name = 'Dp_1')(x)
  x2 = Dense(67, name = 'Dense_2')(x1)
  x2 = LeakyReLU(name = 'LReLU_2')(x2)
  x3 = Dense(60, name = 'Dense_2')(x1)
  x3 = LeakyReLU(name = 'LReLU_2')(x3)
  x = concatenate(x2, x3)
  x = Dropout(dropout_rate, name = 'Dp_2')(x)
  x = Dense(1, name = 'Dense_3')(x)
  x = LeakyReLU(name = 'LReLU_3')(x)

  model = Model((input_x), x)
</code>
В середине я сделал разветвление на ветки x2 x3, потом объединил их. А можно не объединять, подавать на разные выходы. У меня таких задач пока не было, но читал, что градиент по обучению всё же делают на один выход, и возможно модель придётся разбивать с помощью layers, output, и обучать отдельно разные выходы, возможно фиксируя веса с помощью trainable. Старайтесь чётче представить свою задачу. Желаю успеха в поисках.