0
votes

Expliquez comment python exécute cette fonction?

[3]-check_even_list([1,4,2]) 
False 

4 commentaires

La fonction ne regarde que la première valeur de la liste. Si c'est pair, il renvoie True et si c'est impair, il renvoie False . La boucle n'atteint jamais le deuxième élément de la liste.


quelle est la sortie attendue de votre fonction - par exemple pour une liste avec des nombres pairs, une liste avec des nombres impairs et une liste avec des nombres pairs et impairs mixtes?


Vérifiez ceci: pythontutor.com


Je veux juste comprendre comment fonctionne cette fonction, @buran


3 Réponses :


2
votes

Votre code ne vérifiera que le premier élément, une fois qu'une instruction return est atteinte, aucun autre code de votre fonction ne sera exécuté. Au lieu de cela, vous pouvez modifier votre code pour

def check_even_list(num_list):
    return all(i % 2 == 0 for i in num_list)

Pour plus de concision, vous pouvez également écrire l'équivalent

def check_even_list(num_list):
    # Go through each number
    for number in num_list:
        # Once we get a "hit" on an even number, we return True
        if number % 2 == 0:
            return True
    # After loop, must not have hit an even number
    return False


1 commentaires

vouliez-vous dire que le (retour) sur mon code met fin au programme immédiatement? c'est ma première semaine d'apprentissage de python et la concision a encore besoin d'un peu de temps pour comprendre



0
votes

Vous utilisez des "instructions de retour anticipé". En fait, votre fonction n'évalue que le premier élément de votre liste.

Voici j'écrirais la fonction:

def check_even_list(num_list):
    return all(map(lambda x: x % 2 == 0, num_list))


3 commentaires

Merci, c'est ma première semaine d'apprentissage de python, tout, la carte et la fonction lambda sont toujours déroutantes pour moi


- all est une fonction qui prend une liste comme paramètre. Il renvoie soit true si tous les éléments de la liste sont vrais, soit false si un élément de la liste est faux. - map est une fonction qui prend 2 paramètres: d'abord une autre fonction, ensuite une liste. Il appliquera la fonction à chaque élément de la liste, un par un et retournera la liste des résultats. - lambda est une manière de déclarer une fonction locale sans nom. Ici, le lambda prend un paramètre x et renvoie le résultat de x % 2 == 0 (par exemple: est x un nombre pair) Notez que la réponse de Cory Kramer est la manière la plus pythonique de l'écrire à mon humble avis.


Merci, très bonne explication



0
votes

En effet, une fois l'instruction de return exécutée, la fonction n'est plus exécutée.

Utilisez ce code:

def check_odd_list(num_list):
    # Go through each number
    for number in num_list:
        # Once we get a "hit" on an odd number, we return True
        if number % 2 != 0:
            return False
    # After loop is completed and no odd values encountered
    return True

et si vous voulez faire exactement le contraire, c'est-à-dire renvoyer false une fois qu'un nombre impair est atteint:

def check_even_list(num_list):
    # Go through each number
    for number in num_list:
        # Once we get a "hit" on an even number, we return True
        if number % 2 == 0:
            return True
    # After loop is completed and no even values encountered
    return False


0 commentaires