Problème exercice Python

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. 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
    1. Modérateur

      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