Problème exercice Python

Fermé
Rocks.Xebec Messages postés 1 Date d'inscription lundi 7 novembre 2022 Statut Membre Dernière intervention 7 novembre 2022 - Modifié le 8 nov. 2022 à 15:35
mamiemando Messages postés 33387 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 27 novembre 2024 - 8 nov. 2022 à 15:41

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

PierrotLeFou
8 nov. 2022 à 00:38

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
mamiemando Messages postés 33387 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 27 novembre 2024 7 803
8 nov. 2022 à 15:41

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