无论elif语句如何,get_slice的输出都不正确

时间:2016-06-05 02:23:35

标签: python-3.5

我创建了一个从列表中获取指定切片的函数。

def get_slice(my_list, start, stop):
    new_list = []
    length = 0
    for x in my_list:
        length = length + 1
    if stop > length:
        stop = length
        start = start - 1
        for x in range(start, stop):
            x = my_list[x]
            new_list.append(x)
    elif start > length or start < 1:
        return new_list
    elif start > stop:
        return new_list
    else:
        start = start - 1
        for x in range(start, stop):
            x = my_list[x]
            new_list.append(x)
    print(new_list)

当输入为:

时,一切正常
get_slice(['r', 'i', 'g'], 0, 4)

查看代码,我无法理解为什么。给出上面输入的输出应该是一个空列表,如果起始值低于1,我创建了一个elif来覆盖,然后返回一个空列表。

我希望一双新鲜的眼睛能帮助我弄清楚出了什么问题。

1 个答案:

答案 0 :(得分:0)

在一组if / elif / else语句中,它只会评估第一个是真的。

在这种情况下,第一个为true的是第一个if stop > length:场景。您可以使条件更复杂,也可以检查第一个无效方案。