1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129
| #-*- coding: utf-8 -*-
from string import*
#----------------------Fonctions-du-programme----------------------#
def Saisie(L):
# Saisie des chiffres du carre magique
i=1
while i<=3:
l=list(input("Entrez les chiffres de la colonne %d separes par une virgule: "%i))
if len(l)!=3:
print
print "Le nombre de chiffre est incorrect! Veuillez ressaisir ceux-ci svp: "
print
else:
L.append(l)
i+=1
return L
def saisieAuto(L):
for a in xrange(1,10):
for b in xrange(1,10):
if b!=a:
for c in xrange(1,10):
if c!=a and c!=b:
for d in xrange(1,10):
if d!=c and d!=b and d!=a:
for e in xrange(1,10):
if e!=d and e!=c and e!=b and e!=a:
for f in xrange(1,10):
if f!=e and f!=d and f!=c and f!=b and f!=a:
for g in xrange(1,10):
if g!=f and g!=e and g!=d and g!=c and g!=b and g!=a:
for h in xrange(1,10):
if h!=g and h!=f and h!=e and h!=d and h!=c and h!=b and h!=a:
for i in xrange(1,10):
if i!=h and i!=g and i!=f and i!=e and i!=d and i!=c and i!=b and i!=a:
L=[[a,b,c],[d,e,f],[g,h,i]]
if EstMagique(L)==1:
Affichage(L)
def Affichage(L):
#Affichage de la grille du carre
print
print "Voici votre carre magique:"
print
for k in xrange(3):
print "-------------"
for j in xrange(3):
print"!", L[j][k],
print "!"
print "-------------"
def sommeColonne(L):
# Test de validite des colonnes
for z in xrange(3):
if sum(L[z])!=15:
return 0
return 1
def sommeLigne(L):
# Test de validite des lignes
for i in xrange(3):
somme=0
for y in xrange(3):
somme=somme+L[y][i]
if somme!=15:
return 0
return 1
def sommeDiagonale(L):
# Test de validite des diagonales
# Test pour la premiere diagonale
somme1=0
for k in xrange(3):
somme1=somme1+L[k][k]
if somme1!=15:
return 0
# Test pour la seconde diagonale
somme2=0
k=2
g=0
while g<3:
somme2=somme2+L[g][k]
k-=1
g+=1
if somme2!=15:
return 0
return 1
def EstMagique(L):
# Test de validite du carre
Test1=sommeColonne(L)
Test2=sommeLigne(L)
Test3=sommeDiagonale(L)
if Test1*Test2*Test3==1:
return 1
return 0
def NombresDifferents(L):
# On crée une nouvelle liste t pour pouvoir la scanner
t=[L[i][k] for i in xrange(3) for k in xrange(3)]
# On scanne la liste t afin de voir si chaque chiffre y est
for chiffre in xrange(1,10):
if chiffre not in t:
return 0
return 1
#----------------------Prgramme Principal----------------------#
L=[]
v=raw_input("Pour entrer un carre tapez s:\nPour afficher tous les carres magiques possible tapez a: ")
if v=="s":
Saisie(L)
Affichage(L)
print
if EstMagique(L)==1:
print "Votre carre est magique =)"
else:
print "Votre carre n'est pas magique :'("
print
if NombresDifferents(L)==1:
print "Tous les chiffres sont différents."
else:
print "Des chiffres sont en double."
if v=="a":
saisieAuto(L) |
Partager