Задать вопрос
  • Почему выдается ошибка в данном коде?

    Astrohas
    @Astrohas
    Python/Django Developer
    Замените условие на
    if not b and ( c=='mod' or c=='/' or c=='div'):
        print("Делеение на ноль")

    или лучше на
    if not b and c in ['/','%', 'mod', 'div']:
        print("Делеение на ноль")


    а так пара других вариантов

    a = float(input())
    b = float(input())
    c = input()
    z_div = 'Деление на ноль!"
    OPERATORS = {
        "+": a + b,
        "-": a - b,
        "*": a * b,
        "/": a / b if b else z_div,
        "mod": a % b if b else z_div,
        "div": a // b if b else z_div,
        "pow": a ** b 
    }
    print(OPERATORS[c])

    более понятный вариант, но придется вычислять все варианты.
    Более python way :
    a = float(input())
    b = float(input())
    c = input()
    z_div = 'Деление на ноль!'
    OPERATORS = {
        "+": lambda x, y: x + y,
        "-": lambda x, y: x - y,
        "*": lambda x, y: x * y,
        "/": lambda x, y: x / y if y else None,
        "mod": lambda x, y: x % y if y else None,
        "div": lambda x, y: x // y if y else None,
        "pow": lambda x, y: x ** y 
    }
    print(OPERATORS[c](a, b))

    АНАЛог с eval :
    a =  input()
    b =  input()
    c = input()
    
    OPERATORS = {
        "+": "+",
        "-": "-",
        "*": "*",
        "/": "/",
        "mod": "%",
        "div": "//",
        "pow": "**"
    }
    
    if not float(b) and c in ['/','%', 'mod', 'div']:
        print('Деление на ноль!')
    else:
        print(
            eval(
                a + OPERATORS[c] + b
            )
        )
    Ответ написан
    3 комментария