[英]How to use lambda by having inputs?
我是 python 的新手,在从 lambda 获取输入时遇到了问题。 我创建了一个计算函数:
def d_a():
d_a_compute = lambda v_i, t, a: (v_i * t) + (0.5 * a) * (t ** 2)
print("KINEMATIC EQUATIONS")
print ("d_a = Displacement with acceleration")
print ("v_f = Final velocity")
print ("v_f_squared = Final velocity squared")
print ("d = Displacement without acceleration")
print ("t = Time")
print ("a = Acceleration")
print ("v_i = Initial velocity")
print ("===================================")
var = ["d_a", "v_f", "v_f_squared", "d", "t", "a","v_i"]
print ("1.", var[0])
print ("2.", var[1])
print ("3.", var[2])
print ("4.", var[3])
print ("5.", var[4])
print ("6.", var[5])
print ("7.", var[6])
print ("===================================")
num = int(input("Input the number you want to compute: ")) - 1
choice = (var[num])
if choice == "d_a":
float(input("Enter the initial velocity: "))
float(input("Enter the time: "))
float(input("Enter the acceleration: "))
如您所见,我没有调用该函数,因为我想首先知道如何将我的输入连接到函数中的 lambda。 我希望我的初始速度连接到v_i
等。我该怎么做?
我想你可以这样做......但你可能不应该(见PEP8 )
# def d_a(): < you dont need(or want) this line ...
d_a_compute = lambda v_i, t, a: (v_i * t) + (0.5 * a) * (t ** 2)
...
if choice == "d_a":
result = d_a_compute( # <- you need to actually call you lambda
float(input("Enter the initial velocity: ")), # v_i
float(input("Enter the time: ")), # t
float(input("Enter the acceleration: ")) # a
)
print("DA = ", result)
正如评论中所指出的,在此处仅使用普通函数几乎肯定更具可读性(实际上,在PEP8中明确指出您应该使用普通函数定义而不是将 lambda 分配给变量)
def d_a_compute(v_i, t, a):
return (v_i * t) + (0.5 * a) * (t ** 2)
反而
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.