Как я могу преобразовать в цикл - PullRequest
0 голосов
/ 20 мая 2018

Я написал этот код.Это как функция 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 значений.поэтому длина этого списка равна 8.

, но я не знаю, как мне написать этот код с помощью цикла while?

, хотя list [i]: и т.д ...Несколько вещей, но я не знаю, что мне здесь написать.

edit: на самом деле я тоже пробовал этот код.но это не хороший кодтолько что попробовал, и это не сработало.

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 голосов
/ 20 мая 2018

Попробуйте это:

list=[1,2,3,4,5]
total = 0
while total != len(list):
    total +=1
0 голосов
/ 20 мая 2018
def length(items) :
    idx = 0
    try:
        while True:
            _ = items[idx] 
           idx += 1
    except IndexError:
        return idx
0 голосов
/ 20 мая 2018

Если вы действительно хотите преобразовать этот код в цикл while, вы всегда можете сделать что-то вроде этого:

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

Это использует механизм нарезки списка в Python и не требует try-block.Когда индексы выходят за пределы диапазона, результатом будет [] (пустой список), который в Python оценивается как False.

Однако, почему бы вам просто не использовать встроенную * 1009?* -функция в Python?

0 голосов
/ 20 мая 2018

Вы можете написать функцию, которая проверяет, находится ли индекс в диапазоне для списка:

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

Я получил этот код от Если индекс списка существует, выполните 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...