NSI, TP2 Listes

Exercice 1

Compléter les fonctions suivantes pour qu’elles respectent leur docstring :

def fusion(liste1,liste2):
    '''
    >>>fusion([1,2,3],[5,6,7,8])
    [1,5,2,6,3,7,8]
    >>>fusion([5,6,7,8],[1,2,3])
    [5,1,6,2,7,3,8]
    '''
    
def rangement(liste):
    '''
    range une liste contenant des 0 et des 1
    en plaçant les 0 en premier puis les 1
    >>>rangement([1,0,0,0,1]
    [0,0,0,1,1]
    '''
    
def decalage(liste):
    '''
    décale tous les elts d'une liste
    le dernier devenant le premier
    >>>decale([1,2,3,4])
    [4,1,2,3]
    >>>decale([4,1,2,3])
    [3,4,1,2]
    '''
    
def permutation(liste,index1,index2):
    '''
    permute les elts d'index 1 et 2
    d'une liste
    >>>permutation([1,2,3,4],1,3)
    [1,4,3,2]
    >>>permutation([1,2,3,4],0,2)
    [3,2,1,4]
    '''

correction

def fusion(l1,l2):
    '''
    >>>fusion([1,2,3],[5,6,7,8])
    [1,5,2,6,3,7,8]
    >>>fusion([5,6,7,8],[1,2,3])
    [5,1,6,2,7,3,8]
    '''
    liste=[]
    while len(l1)!=0 or len(l2)!=0:
        if len(l1)!=0:
            liste.append(l1.pop(0))
        if len(l2)!=0:
            liste.append(l2.pop(0))
    return liste


def rangement(liste):
    '''
    range une liste contenant des 0 et des 1
    en plaçant les 0 en premier puis les 1
    >>>rangement([1,0,0,0,1])
    [0,0,0,1,1]
    '''
    # solution 1 : return sorted(liste)
    # solution2 :return [0]*liste.count(0)+[1]*liste.count(1)
    liste_rangee=[]
    for val in liste:
        if val==1:
            liste_rangee.append(1)
        if val==0:
            liste_rangee.insert(0,0)
    return liste_rangee
    
def decale(liste):
    '''
    décale tous les elts d'une liste
    le dernier devenant le premier
    >>>decale([1,2,3,4])
    [4,1,2,3]
    >>>decale([4,1,2,3])
    [3,4,1,2]
    '''
    return [liste.pop()]+liste