@fckqqpy

Функция не принимает операции?

def arithmetic(a,b,operation):
    if operation=='+':
        print(a+b)
    elif operation=='-':
        print(a-b)
    elif operation=='*':
        print(a*b)
    elif operation=='/':
        print(a/b)
    else:
        print('Unknown operation')


arithmetic(1,2,*)

Ошибка:
Traceback (most recent call last):
  File arithmetic.py, line 14
    arithmetic(1,2,*)
                     ^
SyntaxError: invalid syntax (unnamed star argument)
  • Вопрос задан
  • 86 просмотров
Решения вопроса 1
drygdryg
@drygdryg
Python-разработчик
В качестве аргумента operation можно принимать оператор как функцию из модуля operator, что, на мой взгляд, будет лучше.
import operator


def arithmetic(a: int, b: int, operation):
    if operation not in (operator.add, operator.sub, operator.mul, operator.truediv):
        print('Unknown operation')
    else:
        print(operation(a, b))


arithmetic(1, 2, operator.mul)

При необходимости задания операторов через символы можно создать словарь, в котором хранить символы операторов и их функции:
operators = {
    '+': operator.add,
    '-': operator.sub,
    '*': operator.mul,
    '/': operator.truediv
}

arithmetic(1, 2, operators['*'])
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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