• Как сделать цикл?

    @dmshar
    Мне кажется, что если уж беремся отвечать на такие школьные вопросы, то надо делать это так, что-бы задающий вопрос хоть какую бы то пользу из этого извлек, а так-же, что бы другие, читая этот вопрос находили бы тут хоть что-то не элементарно-тривиальное.
    В частности, в этом вопросе первое, что бы я заметил, что ТС пишет
    3.Деление\n"

    потом под этим номером выполняет операцию
    str(num1 // num2)

    хотя в Python эта операция называется четко и неоднозначно:
    "Целочисленное деление" и никак иначе. А деление - это совсем другая операция.
    Кроме того, ТС называет
    a = str(num1 % num2)
    операцией
    f = 'деления с остатком'
    хотя в Python эта операция называется
    ОСТАТОК от деления
    . Смысл, как видно совсем другой.

    Во-вторых писать такие простыни кода и жестко "вшивать" данные в структуру операций if - это крайне неэффективная практика. А что будет если надо будет и другие операции реализовывать? Или даже просто поменять местами строчки в подсказке местами? Мало того, что придется менять данные, но еще и влазить в и изменять структуру "лесенки" условий и наверняка навносить туда ошибок.
    При этом задача решается намного проще и код становиться намного яснее:
    import operator
    def do_something(n1,n2,func):
        return(func(n1,n2))
    again='y'
    while again=='y': 
        num1 = int (input(' Введите первое число:  '))
        num2 = int (input(' Введите второе число:  '))
        dct={1:("Сложение",operator.add),
             2:("Вычитание",operator.sub),
             3:("Целочисленное деление",operator.floordiv),
             4:("Умножение",operator.mul),
             5:("Возвести в степень",operator.pow),
             6:("Остаток от деления",operator.mod)
             }
        print(" Напиши, какую операцию ты хочешь сделать?\n")
        for dc in dct:
            print(str(dc)+'.',dct[dc][0])
        v = int(input())
        if v>len(dct):
            print(" Вы выбрали не верный вариант\n")
            print(" Начнем с начала?")
        else:
            print(dct[v][0],'  :',do_something(num1,num2,dct[v][1]))
        again=input(" Продолжим? Y/N:  ").lower()


    Всего то! И никакой простыни на пол сотни строк!
    Хотите добавить еще операции? Добавляете ОДНУ строчку - один элемент в словарь dct и все остается работать. Никакого изменения кода.

    А вот протокол работы этого скрипта:
    Введите первое число:  10
     Введите второе число:  4
     Напиши, какую операцию ты хочешь сделать?
    1. Сложение
    2. Вычитание
    3. Целочисленное деление
    4. Умножение
    5. Возвести в степень
    6. Остаток от деления
    1
    Сложение   : 14
     Продолжим? Y/N:  y
     Введите первое число:  10
     Введите второе число:  4
     Напиши, какую операцию ты хочешь сделать?
    1. Сложение
    2. Вычитание
    3. Целочисленное деление
    4. Умножение
    5. Возвести в степень
    6. Остаток от деления
    2
    Вычитание   : 6
     Продолжим? Y/N:  y
     Введите первое число:  10
     Введите второе число:  4
     Напиши, какую операцию ты хочешь сделать?
    1. Сложение
    2. Вычитание
    3. Целочисленное деление
    4. Умножение
    5. Возвести в степень
    6. Остаток от деления
    3
    Целочисленное деление   : 2
     Продолжим? Y/N:  Y
     Введите первое число:  10
     Введите второе число:  4
     Напиши, какую операцию ты хочешь сделать?
    1. Сложение
    2. Вычитание
    3. Целочисленное деление
    4. Умножение
    5. Возвести в степень
    6. Остаток от деления
    4
    Умножение   : 40
     Продолжим? Y/N:  y
     Введите первое число:  10
     Введите второе число:  4
     Напиши, какую операцию ты хочешь сделать?
    1. Сложение
    2. Вычитание
    3. Целочисленное деление
    4. Умножение
    5. Возвести в степень
    6. Остаток от деления
    5
    Возвести в степень   : 10000
     Продолжим? Y/N:  y
     Введите первое число:  10
     Введите второе число:  4
     Напиши, какую операцию ты хочешь сделать?
    1. Сложение
    2. Вычитание
    3. Целочисленное деление
    4. Умножение
    5. Возвести в степень
    6. Остаток от деления
    6
    Остаток от деления   : 2
     Продолжим? Y/N:  y
     Введите первое число:  10
     Введите второе число:  4
     Напиши, какую операцию ты хочешь сделать?
    1. Сложение
    2. Вычитание
    3. Целочисленное деление
    4. Умножение
    5. Возвести в степень
    6. Остаток от деления
    7
     Вы выбрали не верный вариант
     Начнем с начала?
     Продолжим? Y/N:  n
    Ответ написан
    Комментировать
  • Как немедленно прервать выполнение указанной функции при нажатии на кнопку?

    HemulGM
    @HemulGM Куратор тега Python
    Delphi Developer, сис. админ
    Он и прервется, когда из функции выйдет
    Хочешь, чтоб между смещениями мыши прервалось, делай после каждого вызова проверку
    Ответ написан
    4 комментария
  • Как проверить имеет ли сторее приложение фокус?

    twobomb
    @twobomb
    [DllImport("user32.dll")]
            private static extern IntPtr GetForegroundWindow();

    IntPtr HWND = GetForegroundWindow();
    string appname = Process.GetProcesses().First(p => p.MainWindowHandle == HWND).ProcessName;
    Ответ написан
    1 комментарий
  • Как обновить данные psycorp2?

    @antares4045
    db_object.execute(f"UPDATE users SET first_name =? WHERE id =? ", [first_name, user_id] )

    Ну или в крайнем случае

    db_object.execute(f"UPDATE users SET first_name = '{first_name}' WHERE id = '{user_id}' ")

    Почитайте на досуге про sql инъекции: анекдот про студента по имени DROP DATABASE станет понятнее.

    Upd:
    Толи psycopg2, толи cx_Oracle три года назад требовал явно указать тип инжектируемого: тоесть возможно всесто знаков вопроса надо поставить %s
    Ответ написан
  • Как добавить в чс сообщества?

    iiiBird
    @iiiBird
    Пока ты спишь - твой конкурент совершенствуется
    А прочитать и, если не понятно, то перевести ошибку? Там прямым текстом написано, что с токеном группы этот метод не работает. И на самой странице метода тоже написано, что его можно вызвать только с токеном пользователя https://vk.com/dev/groups.ban
    Ответ написан
    6 комментариев