关于将字符串转换为一种命令:将字符串转换为一种命令 – Python

Convert a string into a kind of command - Python

我正在编写一个程序,它给出三角函数的值。

1
2
3
4
5
import math

function = str(input("Enter the function:"))
angle = float(input("Enter the angle:"))
print(math.function(angle))

我们必须在函数中输入sin(x)。所以我们在变量"function"中输入"sin",让"angle"为"x"。

数学语法是:

math.sin(x)

但我希望它发生的方式是:

  • 将函数的值指定为"sin"
  • 将角度值指定为"x"
  • 计算该值。
  • 我知道它不会起作用,因为我们使用变量代替关键字。所以我正在寻找这样一个代码,它可以使用一个变量并将它赋给关键字。


    一种选择是为您想要的函数创建一个字典,如下所示:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    import math

    functions = {
        'sin': math.sin,
        'cos': math.cos
    }

    function = functions[input('Enter the function: ')]
    angle = float(input('Enter the angle: '))
    print(function(angle))

    此外,您可以用一个Try-Catch块包围函数的赋值,以处理错误的输入。


    也许这对你有用,通过内省,尤其是getattr(关于getattr的信息):

    1
    2
    3
    4
    5
    6
    7
    8
    9
    import math

    function = str(input("Enter the function:"))

    angle = float(input("Enter the angle:"))

    # if the math module has the function, go ahead
    if hasattr(math, function):
        result = getattr(math, function)(angle)

    然后打印结果以查看您的答案


    最简单的方法可能是使用已知的语句:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    import math

    function = str(input("Enter the function:"))
    angle = float(input("Enter the angle:"))

    output ="Function not identified"  # Default output value

    if function =="sin":
        output = math.sin(angle)
    if function =="tan":
        output = math.tan(angle)
    # Repeat with as many functions as you want to support

    print output

    缺点是你必须为任何你想允许的输入做好准备。