在两个数字之间实现输入的运算符

时间:2018-11-18 16:18:24

标签: python operators formula trigonometry turtle-graphics

我最近一直在使用进口的乌龟和三角函数来搞砸:

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

(这只是我的代码的一部分,并且x的位置无关紧要。)

  

(ypos / 10)+ math.sin(x)*幅度

可以很容易地改制成以下标准公式:

  

y = b + mx(* z为幅度)

我想知道的是,如何将运算符输入变量,并用不同的符号替换加法或乘法?我已经尽力了。

编辑:这些运算符是否是任何特定的数据类型?我也找不到任何东西。

1 个答案:

答案 0 :(得分:0)

  

我如何将运算符输入变量并替换加法   或与其他符号相乘?

我建议您探索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。您不应该将代码只开放给任何东西,而应该开放一些合理且安全的预定义操作集。

用法

> 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
>