Carré Magique

Fermé
Moustick - Modifié le 3 nov. 2021 à 12:57
 Moustick - 3 nov. 2021 à 14:58
Bonjour,
J'ai un de voir à rendre sur un carré magique en python mais je n'arrive pas à le faire fonctionner correctement, il me semble que c'est la vérification de lignes et de la vérification des doublons qui sont fausses
je vous met mon programme et le barème merci d'avance ^^

programme :

carre=[ [6,25,24,13,7,36],  [35,11,14,20,29,2], [33,27,16,22,10,3], [4,28,15,21,9,34], [32,8,23,17,26,5], [1,12,19,18,30,31] ]
def __str__ (carre) :
    s = ""
    for i in range (0, len(carre)) :
        for j in range (0, len(carre)) : s += str ( carre [i][j]) + " "
        s += "\n"                                                          # pour passer à la ligne
    return s
print("Le carré magique est :\n", __str__(carre))                      #affiche le carré magique
import sys
def all_unique(carre):                                                 #contrôle d'éventuel(s) doublon(s)
    return len(carre) == len(set(carre))
for k in range(len(carre)):
    all_unique(carre[k])
    if all_unique(carre[k]) == True:
        print("True")
    elif all_unique(carre[k]) == False:
        print("False")
        sys.exit()                                                    #arrêt du programme s'il y a des doublons 
def sommeLigne(carre,i):                                             #Défini la somme des lignes
    s = 0
    for j in range (0, len (carre)) : 
        s += carre [i][j]
    return s
def sommeColonne(carre):                                            #Défini la somme des colonnes
    somme=0
    for n in range(len(carre)):
        for k in range(len(carre)):
            somme =  somme + carre[n][k]
        return somme
def diagonale1(carre,n):                                            #Défini la somme de la diagonale de gauche à droite
    somme = 0
    for n in range(len(carre)):
        somme = somme + carre[n][n]
    return somme
def diagonale2(carre,n):                                            #Défini la somme de la diagonale de droite à gauche
    somme = 0 
    for n in range(len(carre)-1):
        for j in range(len(carre)-1, -1, -1):
            somme = somme + carre[n][j] 
        return somme   
def controlCarre(carre):                                                              #vérification de l'égalité de toutes les fonctions
    if sommeColonne(carre) == (diagonale2(carre,0)) == (diagonale1(carre,0)):
        return True
    else :
        return False
print("Le carré magique prend la valeur :", controlCarre(carre))                      #Affichage du résultat

Barème appliqué :
- Le programme est cohérent et fonctionne avec certains jeux de tests. : 12 points
- Le programme est polyvalent, fonctionne quelque soit
la longueur du carré magique (même 5, 6 etc.). : + 2 points
- Le contrôle de la composition du carré magique est effectué et fonctionne. : + 2 points
- La structure du programme est respectée (organisation des fonctions). : + 2 points
- Le nom des variables est clair, les commentaires sont judicieux. : + 2 points

EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.

1 réponse

yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
3 nov. 2021 à 13:27
bonjour,
je vois en effet diverses erreurs dans ton programme.
si tu veux les découvrir, je t'invite à ajouter des instructions print() pour suivre ce que fait ton programme.
0
oui j'avais essayé de faire ca mais impossible de corriger mes erreurs j'y arrive pas du tout et j'ai même regardé sur internet pour trouver des solutions mais j'avais rien trouvé
0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476 > Moustick
3 nov. 2021 à 14:25
avant de les corriger, il faut les détecter.
as-tu écrit ce programme?
0
Moustick > yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024
3 nov. 2021 à 14:29
oui mais je l'ai pas sauvegardé je l'avais fait en cours et j'ai juste gardé celui là
0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476 > Moustick
3 nov. 2021 à 14:54
et celui-là, l'as-tu écrit?
0
Moustick > yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024
3 nov. 2021 à 14:58
celui avec les print ?
0