Использование while L oop для итерации списка и остановки на заданном значении - PullRequest
0 голосов
/ 06 января 2020

Вопрос

Напишите функцию с именем stop_at_four, которая перебирает список чисел. Используя некоторое время l oop, добавляйте каждое число в новый список, пока не появится число 4. Функция должна возвращать новый список.

Мой ответ

def stop_at_four():  
    list_=[3,6,4,1,3]
    accum_lst=[]
    accum_var=0

    while list_[accum_var] !=4:
        accum_lst.append(list_[accum_var])
    accum_var+=1
    return

PS Любая критика по поводу того, как повысить эффективность моего кода, будет принята с благодарностью.

Ответы [ 3 ]

0 голосов
/ 06 января 2020

Как уже упоминал Аруне sh Сингх, правильный блок кода должен быть

def stop_at_four():  
    list_=[3,6,4,1,3]
    accum_lst=[]
    accum_var=0

    while list_[accum_var] !=4:
        accum_lst.append(list_[accum_var])
        accum_var+=1
    return accum_lst

Увеличение должно быть частью, пока l oop.

0 голосов
/ 06 января 2020

у меня работает !!! Просто попробуйте ...

def stop_at_four():
    list_=[3,6,4,1,3]
    accum_lst=[]
    accum_var=0

    while list_[accum_var] != 4 :
        accum_lst.append(list_[accum_var])
        accum_var += 1
    return accum_lst

print(stop_at_four())
0 голосов
/ 06 января 2020

Вы должны предоставить список в качестве параметра и вернуть новый список. Кроме того, инкремент аккумулятора должен быть в то время как l oop, и вы должны проверить, достиг ли вы конца списка, чтобы индекс списка не выходил за пределы диапазона:

def stop_at_four(my_list):
    accum_lst=[]
    accum_var=0

    while (accum_var < len(my_list)) and (my_list[accum_var] != 4):
        accum_lst.append(my_list[accum_var])
        accum_var+=1
    return accum_lst

print(stop_at_four([3,6,4,1,3]))
...