Написание функции без метода range () - PullRequest
0 голосов
/ 03 ноября 2019

Здравствуйте, ребята, я пытаюсь написать функцию, которая распечатывает [5,6,8,9,10,11,12] и [5,8,11], но я не могу просто распечатать [5,12]

Я пробовал разные способы, а также провел некоторые исследования, но я не могу печатать без метода range (). Как можно печатать без использования метода range ()?

def asc_range(start,end,increment = 1):
i = start
for i in [start,end]:
    yield i 
    i += increment 
print list(asc_range(5,12))  

1 Ответ

0 голосов
/ 03 ноября 2019

цикл for используется для итерации последовательности, и в этом случае у вас есть список [5,12]

, для его печати всего 5 и 12, потому что у вас есть:

for i in [start,end]: # for i in [5,12]:

где в первой итерации я буду 5, а во второй итерации я буду 12.

вы должны сделать это следующим образом:

def asc_range(start,end,increment = 1):
    i = start
    while i <= end:
        if i != 7:
            yield i
        i += increment
print (list(asc_range(5,12)))

edit:

вы можете сделатьчто-то вроде этого, но у него нет смысла делать это следующим образом:

ar=[]

def asc_range(start,end):
    for i in [start]:
        if i == end:
            ar.append(end)
            return ar
        else:
            if i != 7:
                ar.append(i)
            return asc_range(i + 1, end)

print (list(asc_range(5,12)))
...