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"。
数学语法是:
但我希望它发生的方式是:
我知道它不会起作用,因为我们使用变量代替关键字。所以我正在寻找这样一个代码,它可以使用一个变量并将它赋给关键字。
一种选择是为您想要的函数创建一个字典,如下所示:
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块包围函数的赋值,以处理错误的输入。
也许这对你有用,通过内省,尤其是
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 |
缺点是你必须为任何你想允许的输入做好准备。