首页 > 解决方案 > 程序推理,python函数

问题描述

程序推理要求我们找到函数的输入,以便它输出一定的结果。功能是:

def func1(stuff, more_stuff=None):
    data = []
    for i, thing in enumerate(stuff):
        if thing >= 0 or i < 2:
            data.append(thing + i)
    print(len(stuff))
    if more_stuff is not None:
        data += more_stuff
    print(data)

预期的输出是:

4
[5, 3, 1, 5, -3]

我能得到的最接近的是:

4
[5, 3, 2, 5, -3]

以 func1([5,2,0,2], [-3]) 作为输入

我在尝试获取 1 时遇到了麻烦,我只是想知道如何/为什么可以得到 1,就好像它小于 0 即 -1 作为该索引的值,然后“事物”< 0 并且i = 2 所以它会跳过该值/索引,输出将是:

4
[5, 3, 5, -3]

标签: python

解决方案


这里的关键是长度stuff必须是 4,而不是data第一个 for 循环之后的长度。如果您尝试使用stuffto fill ,您会遇到 data[2] 永远不能为 1 的问题,这是绝对正确的data

要解决此问题,请在此stuff之前切断并使用more_stuff附加您需要的值。

即您正在寻找的输入是:

>>>func1([5, 2, -1, -1], [1, 5, -3])
4
[5, 3, 1, 5, -3] 

推荐阅读