我怎样才能转换为while循环

时间:2018-05-20 08:15:57

标签: python loops while-loop

我写了这段代码。它就像len()函数。

def length_itr_for(list):
    total = 0
    for i in list:
        total += 1
    return total

print length_itr_for([1,2,3,4,5,6,7,8])

输出是; 8.因为在这个列表中,有8个值。所以此列表中的len是8。

但我不知道如何使用while循环编写此代码?

while list [i]:etc ...我虽然有一些东西,但我不知道我应该在这里写些什么。

编辑: 实际上我也试过这个代码。但这不是好的代码。只是尝试过,它没有用。

def length_itr_whl(list):
    total = 0
    i = 0
    while list[i]:
        total = total + 1
        i = i + 1
    return total

print length_itr_whl([1,2,3,4,5])

4 个答案:

答案 0 :(得分:2)

您可以编写一个函数来测试索引是否在列表的范围内:

def validIndex(l, i):
    try:
        _ = l[i]
    except IndexError:
        return False
    return True

我从If list index exists, do X

获得了此代码

然后你可以在循环中使用它:

def length_itr_whl(list):
    total = 0
    index = 0
    while validIndex(list, index):
        total += 1
        index += 1
    return total

您还可以使用while True:并捕获循环中的索引错误。

def length_itr_whl(list):
    total = 0
    index = 0
    try:
        while True:
            _ = list[index]
            total += 1
            index += 1
    except IndexError:
        pass
    return total

答案 1 :(得分:0)

def length(items) :
    idx = 0
    try:
        while True:
            _ = items[idx] 
           idx += 1
    except IndexError:
        return idx

答案 2 :(得分:0)

如果您真的想将此代码转换为while循环,您可以始终执行以下操作:

3.5

这使用Python中的列表切片机制,它不需要任何def length_itr_whl(list): total = 0 i = 0 while list[i:i+1]: total = total + 1 i = i + 1 return total print length_itr_whl([1,2,3,4,5]) # prints 5 print length_itr_whl([]) # prints 0 。当索引超出范围时,结果将为try-block(空列表),在Python中评估为[]

但是,为什么不在Python中使用内置的False - 函数?

答案 3 :(得分:0)

试试这个:

list=[1,2,3,4,5]
total = 0
while total != len(list):
    total +=1