我正在编写一个通用的数学方程式计算器,该计算器可以计算2D形状的面积/周长,3D形状的表面积/体积,以及我将来决定建立的任何公式。
我正在尝试构建一个函数,使用户可以决定是否要使用已经再次使用的方程式。
如果我在程序的每个部分(我已经尝试过)中创建具有相同目的的函数,那将是低效率的。
def triangledecision():
print("Input 1 if you would like to calculate the area/perimeter of this shape again")
print("Input 2 if you would like to return to the 2D shape menu")
print("Input 3 if you would like to return to the main menu")
answer = input()
if answer == "1":
triangle()
if answer == "2":
twodshapes()
if answer == "3":
main()
else:
while answer != "1" or "2" or "3":
print("Please select one of the options")
triangledecision()
此功能按预期工作,但是,我将必须为每个节创建相同的功能,这既耗时又效率低下。
答案 0 :(得分:1)
您可以使用诸如装饰器之类的方法来实现此目的。我有点困惑您的要求,但是我假设您想要一个可以在所有操作上正常工作的通用函数。我将创建一个重试包装器。
def retry(func):
def wrapper(*args, **kwargs):
while True:
func(*args, **kwargs)
answer = input('if would you like to calculate the area or perimeter of this shape again, enter 1: ')
if answer != '1':
break
return
return wrapper
然后,在函数上使用@retry
。例如:
@retry
def square_perimeter():
#whatever your code is
使用此方法,您可以要求用户重用任何功能,只需使用@retry
装饰器对其进行装饰即可。
答案 1 :(得分:0)
在python中,您可以将函数另存为变量(更直观地说,它们是对象)。如下:
executedFunction = triangle
要么
executedFunction = twoshapes
然后调用它:
executedFunction()