Soucis Programme Sudoku
Résolu/Fermé
whathecha
Messages postés
5
Date d'inscription
lundi 1 octobre 2018
Statut
Membre
Dernière intervention
1 octobre 2018
-
1 oct. 2018 à 17:11
whathecha Messages postés 5 Date d'inscription lundi 1 octobre 2018 Statut Membre Dernière intervention 1 octobre 2018 - 1 oct. 2018 à 19:01
whathecha Messages postés 5 Date d'inscription lundi 1 octobre 2018 Statut Membre Dernière intervention 1 octobre 2018 - 1 oct. 2018 à 19:01
A voir également:
- Soucis Programme Sudoku
- Programme demarrage windows 10 - Guide
- Désinstaller programme windows 10 - Guide
- Programme démarrage windows 10 - Guide
- Forcer la fermeture d'un programme - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
1 réponse
Utilisateur anonyme
Modifié le 1 oct. 2018 à 17:43
Modifié le 1 oct. 2018 à 17:43
Bonjour
Pour ton problème de zéro en début de saisie :
Je ne connais pas python, mais je suppose qu'avec int(s) tu transformes ta saisie en nombre. Donc tu transformes '3', '03' et '003' en 3 tout court. C'est d'autant plus bête que la ligne suivante, tu fais un str(s) qui re-transforme ce nombre en chaîne, alors que tu avais une chaîne au départ !
Quant à ta solution qui n'est pas sauvegardée, c'est que tu n'as rien fait pour. Quand tu la trouves, tu l'affiches mais tu n'as rien qui empêche de parcourir toutes les possibilités. Tu quittes la fonction resoudre pour retomber dans la boucle 'for k' de niveau supérieur, et cette boucle n'a pas de raison de s'arrêter. Il faudrait mettre une variable booléenne quand tu as trouvé une solution, et arrêter toutes tes boucle for k quand cette variable est positionnée.
Pour ton problème de zéro en début de saisie :
def saisir_sudoku(self): s=input("Saisir 81 caractères entre 0 et 9") try: s=int(s) x=list(map(int,list(str(s))))
Je ne connais pas python, mais je suppose qu'avec int(s) tu transformes ta saisie en nombre. Donc tu transformes '3', '03' et '003' en 3 tout court. C'est d'autant plus bête que la ligne suivante, tu fais un str(s) qui re-transforme ce nombre en chaîne, alors que tu avais une chaîne au départ !
Quant à ta solution qui n'est pas sauvegardée, c'est que tu n'as rien fait pour. Quand tu la trouves, tu l'affiches mais tu n'as rien qui empêche de parcourir toutes les possibilités. Tu quittes la fonction resoudre pour retomber dans la boucle 'for k' de niveau supérieur, et cette boucle n'a pas de raison de s'arrêter. Il faudrait mettre une variable booléenne quand tu as trouvé une solution, et arrêter toutes tes boucle for k quand cette variable est positionnée.
1 oct. 2018 à 18:06
Concernant le problème de zéro, c'est réglé en enlevant s=int(s)
En revanche, concernant l'autre problème, toujours rien
Ce qui est bizarre, c'est que si je demande un print de ma grille dans le if i==10, ça fonctionne. Mais si je fais un self.grille dans le shell, ça m'affiche toujours la grille initiale
1 oct. 2018 à 18:22
Quand tu as trouvé la solution, tu n'arrêtes pas la recherche : les boucles 'for k' continuent. Or, à la fin de chaque boucle, tu remets les '0' dans ton objet : . Normal qu'à la fin tu retrouves tous tes '0' initiaux.
1 oct. 2018 à 18:25
1 oct. 2018 à 18:41
1 oct. 2018 à 18:49
Dernière petite question, sais tu comment éviter l'affichage de la solution ? Même en supprimant mon self.afficher_sudoku(), elle continue à s'afficher