Реализация введенного оператора между двумя числами - PullRequest
0 голосов
/ 18 ноября 2018

В последнее время я возился с импортированными функциями черепахи и тригонометрии:

turtle.goto((x/math.pi)*wavelength,(ypos/10)+math.sin(x)*amplitude)

(Это всего лишь фрагмент моего кода, и позиция x не имеет значения.)

(ypos / 10) + math.sin (x) * амплитуда

может быть легко преобразована в стандартную формулу:

y = b+ mx (* z для амплитуды)

Что я хочу знать, как я могу ввести оператор в переменную и заменить сложение или умножение другим символом?Я перепробовал все, что мог придумать.

Редактировать: Эти операторы имеют какой-либо конкретный тип данных?Я тоже ничего не могу найти по этому поводу.

1 Ответ

0 голосов
/ 19 ноября 2018

как я могу ввести оператор в переменную и заменить сложение или умножение другим символом?

Я рекомендую вам изучить модуль Python operator.py.Вот простой пример, который просто показывает четыре основные операции калькулятора:

import operator
from random import randint

operations = {
    '+': operator.add,
    '-': operator.sub,
    '*': operator.mul,
    '/': operator.truediv,
}

a, b = randint(0, 100), randint(0, 100)

while True:

    operation = input("Enter an operation (+, -, * , / or 'quit') ")

    if operation in operations:

        c = operations[operation](a, b)

        print("{} {} {} = {}".format(a, operation, b, c))
    elif operation == 'quit':
        break
    else:
        print("try again")

Чего не следует делать, так это рассмотреть eval.Вы не должны открывать свой код для чего-либо, а только для некоторого разумного и безопасного предопределенного набора операций.

USAGE

> python3 test.py
Enter an operation (+, -, * or /) +
25 + 97 = 122
Enter an operation (+, -, * or /) -
25 - 97 = -72
Enter an operation (+, -, * or /) *
25 * 97 = 2425
Enter an operation (+, -, * or /) /
25 / 97 = 0.25773195876288657
Enter an operation (+, -, * or /) quit
> 
...