Bonjour les gars, j'essaie d'écrire une fonction qui imprime [5,6,8,9,10,11,12] et [5,8,11] mais je ne peux pas simplement imprimer [5,12]

J'ai essayé différentes méthodes et fait également des recherches, mais je ne peux pas imprimer sans la méthode range (). Comment puis-je imprimer sans utiliser la méthode 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))  
0
can ilgu 3 nov. 2019 à 14:05

1 réponse

La boucle for est utilisée pour itérer sur une séquence, et dans ce cas, vous avez la liste [5,12]

son impression seulement 5 et 12 parce que vous avez:

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

où dans la première itération je serai 5 et dans la deuxième itération je serai 12.

vous devriez le faire comme:

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)))

Éditer:

vous pouvez faire quelque chose comme ça, mais cela n'a aucun sens de le faire de cette façon:

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)))
0
ncica 3 nov. 2019 à 14:15