给定 n 和 e,在列表 L 中找到最小值 a,并且 (n/a) < e

Finding the minimal value a in list L given n and e, and (n/a) < e

这就是我到目前为止的想法。我现在已将用户输入替换为固定数字,以便更快地进行故障排除。

    n = 5
    e = 0.5
    L = range(1, 20+1)
    k = 0
    a = min(element for element in L if element > k)
    while (n/a) > e:
        k = k + 1
        a = min(element for element in L if element > k)
        if (n/a) < e:
            print(a)
    if (n/a) < e:
        print(a)

如果我删除部分代码,那么我会得到:

    n = 5
    e = 0.5
    L = range(1, 20+1)
    k = 0
    a = min(element for element in L if element > k)
    o = n/a
    if 0 < e:
        print(o)

然后一切正常。问题当然是我必须手动将k的值加1才能找到满足设定条件的最小a。

这是作业的一部分,另一部分是创建斐波那契数列。我设法弄清楚了那部分。在赋值的上下文中,n 仍然是用户输入的随机整数,e 是用户输入的随机浮点数,a 是斐波那契数列中的最小数,其中 n/a < e.

所以你需要找到a,使得a是列表中所有元素的最小值,对于n/a < e

很容易将有效 a 值的条件编码为 L 上的生成器,然后取最小值:

min(a for a in L if n/a < e)