@nnchel

Как убрать выведение сообщения err1?

Код
err1 = "Помилка: невідома операція."
err2 = "Помилка: ділити на нуль не можна."
a = int(input("Первое число"))
b = int(input("Второе число"))
c = input("Операция")
if c == "ділення" :
    if b == 0 :
        print(err2)
    else :
        print(a / b)
if c == "множення" :
    print(a * b)
if c == "додавання" :
    print(a + b)
if c == "віднімання" :
    print(a - b)
if c != "множення" and "додавання" and "віднімання" and "ділення" :
    print(err1)

При операции деления, с делителем "0" выводится две надписи. Нужно что бы выводилась всего одна надпись в переменной err2
  • Вопрос задан
  • 99 просмотров
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
Во-первых, нужно не if ... if ... if ... print(), а if ... elif ... elif ... else: print()

Во-вторых,
if c != "множення" and "додавання" and "віднімання" and "ділення" :

Очень многие совершают эту ошибку. Так НЕ работает.
Код вида if x != 2 or 3: эквивалентен if (x != 2) or (3 != 0):, что, в свою очередь даёт if (x != 2) or True:. А что угодно or True даст True, т.е. условие будет всегда выполняться.
Правильно - if x != 2 and x != 3: или if x not in (2, 3):
Для своей задачи приспособишь по аналогии.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@PavelMos
if c != "множення" and "додавання" and "віднімання" and "ділення" :
    print(err1)

в данной записи это выражение не проверяет, входит ли в c в список допустимых названий операций. Получается, что с сравнивается с Умножение, получается результат True или False. Следующее выражение это логическое and с двумя операндами. Первое это логическое True или False, второй это "додавання". Затем результат снова идёт в выражение and со следующим словом и тд.

См. про скобки и последовательность логических операций в питоне, а также про in и any
Например,
if c not in ("множення" , "додавання" ,"віднімання" , "ділення" ):
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы