Al999 Posté(e) le 13 novembre 2022 Signaler Share Posté(e) le 13 novembre 2022 Écrire un programme qui permet de vérifier si un carré est magique On codera le carré en début de programme grâce à une liste de liste. On utilisera pour mettre au point le programme le carré 3x3 fourni en exemple. Le programme devra écrire c'est un" carré magique" ou c'est n'est pas un "carré magique " (c'est le début du programme) carre=[[4,9,2], [3,5,7], [8,1,6]] n=len(carre) s=n*(n**2+1)/2 magic=True # Vérification des lignes for lig in carre : som=0 for col in lig : som+=col if som !=s : magic=False # Vérification des colonnes for col in range(n): som=0 for lig in range(n): som+=carre[lig][col] if som !=s : magic=False # Vérification diagonale / # Vérification diagonale \ # Vérification tous les chiffres entre 1 et n^2 Limite: Lundi 14 novembre Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
E-Bahut julesx Posté(e) le 13 novembre 2022 E-Bahut Signaler Share Posté(e) le 13 novembre 2022 Bonsoir, Au cas où, une ébauche pour les deux conditions suivantes, mais sans garantie, donc à étudier et à tester. carre1=[[4,9,2], [3,5,7], [8,1,6]] carre=[[1,2,3], [4,5,6], [7,8,9]] n=len(carre) s=n*(n**2+1)/2 magic=True for ligne in carre : som=0 for col in ligne : som+=col if som !=s : magic=False for col in range(n): som=0 for lig in range(n): som+=carre[lig][col] if som !=s : magic=False som=0 for i in range(n): som+=carre[i][i] if som !=s : magic=False som=0 for i in reversed(range(n)): som+=carre[i][i] if som !=s : magic=False if magic : print("c'est un \"carré magique\"") else : print("ce n'est pas un \"carré magique\"") Il y a deux carrés au départ, un bon et un mauvais. Il suffit de changer carre1 en carre et carre en carre1 pour les tests. Al999 a réagi à ceci 1 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
E-Bahut julesx Posté(e) le 14 novembre 2022 E-Bahut Signaler Share Posté(e) le 14 novembre 2022 Bonjour, Au cas où ce n'est pas trop tard, pour "Vérification tous les chiffres entre 1 et n^2", je n'ai pas trouvé mieux que de balayer tous les nombres et de vérifier qu'ils sont dans le carré. Par contre, pour simplifier l'utilisation de "in", j'ai transformé la liste de listes en une liste simple. carre1=sum(carre,[]) for i in range(1,n**2+1): if i not in carre1 : magic=False Al999 a réagi à ceci 1 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Al999 Posté(e) le 14 novembre 2022 Auteur Signaler Share Posté(e) le 14 novembre 2022 Je l'avais déjà rendu mais merci beaucoup pour ton aide pour ce programme. 👍 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
E-Bahut julesx Posté(e) le 15 novembre 2022 E-Bahut Signaler Share Posté(e) le 15 novembre 2022 Bonjour, J'avais vu que c'était à rendre pour hier mais j'avais quand même essayé. Pour info, je ne sais pas si tu as regardé d'un peu plus près la notion de carré magique. En fait, on en trouve qui ne sont pas constitués des n² premiers nombres. Dans ce cas, les 4 premiers contrôles ne détectent pas d'erreur. Seul le dernier retourne False. Par contre, ici, l'énoncé spécifiait bien "tous les entiers de 1 à n²" d'où la nécessité du 5ème contrôle. Al999 a réagi à ceci 1 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Rejoindre la conversation
Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.