Problème exercice Python

Rocks.Xebec Messages postés 2 Statut Membre -  
mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   -

Bonjour,

Je n'arrive vraiment pas à réaliser ce programme python quelqu'un pourrait il m'aider, s'il vous plaît ?

À partir de cette liste,

L = [1, 2, 4, 8, 9, 11, 16, 25, 33, 36, 40] 

... il faut écrire une fonction qui retourne deux listes, une liste Lpaire contenant les multiples de 2 et une autre Lcarre contenant les carrés parfaits.

Voici ce que j'ai commencé à faire :

def exo1():
    Lpair = []
    Lcarre = []
    for i in range(n):
        if l[i] % 2 == 0:
            Lpair.append(l[i])
        if l == True:
            Lcarre.append(l[i])
        return (Lpair, Lcarre)

Merci d'avance

2 réponses

  1. PierrotLeFou
     

    D'abord, je ne vois pas l'appel à la fonction. Même chose pour l'affichage.
    Ensuite, tu ne passes pas ta liste de départ en paramètre.
    Commentt détermine-t-on qu'un nombre est un carré parfait?

    0
  2. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 940
     

    Bonjour,

    Il faut passer la liste L en paramètre à la fonction exo1. Attention aussi à être cohérent sur le nom de la liste (qui à ce stade s'appelle dans ton code tantôt L et tantôt l).

    Ensuite, pour tester si un nombre est un carré parfait, tu as besoin de la fonction math.sqrt. Il suffit de vérifier si math.sqrt(L[i]) est entier ou non

    import math
    
    def is_square(x):
        r = math.sqrt(x)
        return int(r) == r
    
    for x in [1, 2, 4, 8, 9, 11, 16, 25, 33, 36, 40]:
        print(x, is_square(x))

    Résultat :

    1 True
    2 False
    4 True
    8 False
    9 True
    11 False
    16 True
    25 True
    33 False
    36 True
    40 False

    Bonne chance

    0