Problème avec tuple sur Python 3.4.1 - Algo - Programmation
MarshPosté le 28-12-2014 à 11:41:10
Je dois faire un mastermind pour mon projet de terminale S mais en réinstallant python j'ai eu un problème avec mon programme à la ligne 67. Python affiche "TypeError: 'NoneType' object is not iterable".
Si quelqu'un pourrait également m'aider pour changer les chiffres à la fin en couleurs?
Merci de votre aide.
Code :
# Voici la fonction qui présente le jeu et qui propose au joueur de voir les règles.
def Present():
print("Le Mastermind est un jeu de société, de réflexion, et de déduction, inventé par Mordecai Meirowitz en 1962" )
print("Voulez-vous voir les règles? Si oui ecrivez 'ok', si non tapez sur une touche quelconque, puis appuyez sur la touche 'Entrée'." )
Ouiounon = input()
if Ouiounon == 'ok':
print("L'ordinateur choisit une combinaison de quatre chiffres allant de 1 à 4" )
print("Le joueur doit ensuite découvrir cette combinaison en proposant des combinaisons de chiffres qu'il crées," )
print("Pour l'aider, l'ordinateur indiquera le nombre de chiffres bien et mal positionnés de la combinaison," )
print("Le nombre de chiffres absents de la combinaison ne sera en revanche pas donné." )
print("" )
#Voici la fonction qui gère les erreurs de saisie.
def Erreur(Liste):
try:
Numero = int(input())
while (Numero < 1) or (Numero > 4) or (Numero != int(Numero)):
Numero = int(input("Tu dois entrer un entier naturel compris entre 1 et 4, entre un autre chiffre: " ))
except (ValueError, TypeError):
print("Erreur lors de la lecture de ton chiffre," )
print("Tu dois entrer un entier naturel compris entre 1 et 4, entre un autre chiffre: " )
Erreur(Liste)
# A l'intérieur de la boucle principale, on insère une fonction qui compte et affiche les chiffres bien placés.
def Bienplaces():
Bien = 0
for b in range(Nombre):
if Reponse[b] == Code_bis[b]:
Bien += 1
Code_bis[b] = -98
Reponse[b] = -38
print("Appuie" , Bien, "fois sur le bouton du bas de la brique (Nombre de biens placés)." )
return Bien
# Ainsi qu'une fonction qui compte et affiche les chiffres mal placés.
def Malplaces():
Mal = 0
for i in range(0, 4, 1):
for j in range(0, 4, 1):
if (Code_bis[i] == Reponse[j]) and (i != j):
Mal += 1
Code_bis[i] = -27
Reponse[j] = -12
print("Appuie" , Mal, "fois sur le bouton du milieu de la brique (Nombre de mal placés)." )
return Mal
# Corps du Programme:
# On importe les fonctions "Aléatoire" pour que l'ordinateur génère le code à trouver.
from random import *
Present()
Compteur = 0
Nombre = 4
Nbmax = 4
Essaismax = int(input("Entrez le nombre d'essais maximum pour trouver une combinaison : " ))
x = 0
print("" )
print("Entrez votre combinaison." )
# Ceci est la boucle qui génère le Code, en prévoyant les erreurs.
Code = [0] * 4
for x in range(0, 4 ,1):
Code = Erreur(Code)
# Ceci est la fonction "tuple" qui rend invariable le Code.
tupCode = tuple(Code)
print("" )
print("Vous devez trouver la combinaison du joueur en" , Essaismax, " essais maximum." )
print("" )
# Ceci est la boucle des propositions du joueur, c'est la boucle principale du programme.
while Compteur < Essaismax :
print("Entrez une combinaison." )
Code_bis = list(tupCode)
# Ceci est la boucle qui génère la Reponse du joueur, en prévoyant les erreurs.
Reponse = [0] * 4
for x in range(0, 4 ,1):
Reponse = Erreur(Reponse)
print(Reponse)
# On appelle les fonctions qui "diagnostiquent" la Reponse.
Bien = Bienplaces()
Mal = Malplaces()
# Enfin, voici le compteur d'essais et le message de réponse qui s'affichent en fin de boucle.
Trouve = (Bien == Nombre)
if Trouve:
print("Bravo, tu as trouvé la bonne combinaison! En seulement" , Compteur + 1, "essais!" )
Compteur = 1000
elif (Essaismax - Compteur - 1 != 0):
print("Essaie encore, il te reste encore" , Essaismax - Compteur - 1, "essais." )
Compteur += 1
if (Essaismax - Compteur == 0) and (not Trouve):
print("Tu as épuisé tous tes essais -----> Perdu! La bonne combinaison était:" , Code, "! Dommage!" )
Message édité par inconnito2 le 28-12-2014 à 12:33:59
Marsh Posté le 28-12-2014 à 11:41:10
Je dois faire un mastermind pour mon projet de terminale S mais en réinstallant python j'ai eu un problème avec mon programme à la ligne 67. Python affiche "TypeError: 'NoneType' object is not iterable".
Si quelqu'un pourrait également m'aider pour changer les chiffres à la fin en couleurs?
Merci de votre aide.
Message édité par inconnito2 le 28-12-2014 à 12:33:59