Laurentvidal.fr vous aide à trouver des réponses à toutes vos questions grâce à une communauté d'experts passionnés. Notre plateforme vous connecte à des professionnels prêts à fournir des réponses précises à toutes vos questions. Connectez-vous avec une communauté d'experts prêts à fournir des solutions précises à vos questions de manière rapide et efficace sur notre plateforme conviviale de questions-réponses.

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

Sagot :

caylus

Réponse :

Bonsoir,

Explications :

Je n'ai pas le temps de terminer le programme:

Il reste à tester les diagonales

View image caylus
Nous espérons que nos réponses vous ont été utiles. Revenez quand vous voulez pour obtenir plus d'informations et de réponses à vos questions. Nous espérons que vous avez trouvé ce que vous cherchiez. Revenez nous voir pour obtenir plus de réponses et des informations à jour. Revenez sur Laurentvidal.fr pour obtenir les réponses les plus récentes et les informations de nos experts.