繁体   English   中英

如何通过输入来使用 lambda?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM