J'ai été mal corrigé sur un exercice (la personne m'a donné la note de 0/7 sur l'amélioration du jeu Labyrinthe disant que j'étais hors sujet car le jeu devait être fait avec une interface graphique, ce qui est faux) et à cause de cela, l'exercice n'a pas été réussi. Que puis-je faire pour remédier à cela afin d'obtenir mon certificat?
Bonsoir. Au premier TP celui sur Zcasino impossible de faire fonctionner le programme . Après la saisie du numéro sur lequel l'on souhaite miser python me signale une érreur du type TypeError autour des '<' , '>' me disant qu'il n'est pas supporté à coté des caractères du type 'int' et 'string' donc mon programme Zcasino ne fonctionne pas. J'utilise Python 3.7 .
Une réponse rapide m'aidera à avancer dans mon apprentissage et ma formation svp et merci.
Excusez-moi, je débute en Python. J'ai un problème dès le début du cour que je ne comprends pas, il m'est impossible de faire: partie créez des structures conditionnelles, les limites de la condition simple en if. J'écris le début:
>>> a = 5
>>> if a > 0:
... print("a est supérieur à 0.")
... if a <0:
Et ensuite quand je mets entrée pour écrire la suite, il y a un problème:
File "<stdin>", line 3
if a <0:
^
SyntaxError: invalid syntax.
Bonjour, je débute en Python et j'ai un projet à faire.
Je dois lancer une vidéo en mp4 avec VLC ( la vidéo est sur le bureau ) et fermer VLC à la fin de la vidéo partir d'un code Python (3.0) sous Raspian, et je dois également mettre la vidéo en pause à 2sec. Je suis sous Linux
Je dois, quand un mouvement est détecter grâce au capteur de mouvement, lancer la vidéo qui est sur mon bureau, mettre la vidéo en pause au bout de 2sec et fermer VLC dès que la vidéo prend fin. En ce moment , j'arrive juste à lancer la vidéo, et fermer VLC. Mais je n'arrive pas à mettre la vidéo en pause. Y'a t-il quelqu'un qui connait la commande ?
j'ai un soucis récurent dans les exercices, quand il s'agit de quitter ou continuer ça ne fonctionne jamais. Même quand je copie/colle le code du cours (dernier exemple en date le TP ZCasino).
J'ai donc copier/coller le code suivant :
# -*-coding:Latin-1 -* # Ce fichier abrite le code du ZCasino, un jeu de roulette adapté
import os from random import randrange from math import ceil
# Déclaration des variables de départ argent = 1000 # On a 1000 $ au début du jeu continuer_partie = True # Booléen qui est vrai tant qu'on doit # continuer la partie
print("Vous vous installez à la table de roulette avec", argent, "$.")
while continuer_partie: # Tant qu'on doit continuer la partie # on demande à l'utilisateur de saisir le nombre sur # lequel il va miser nombre_mise = -1 while nombre_mise < 0 or nombre_mise > 49: nombre_mise = input("Tapez le nombre sur lequel vous voulez miser (entre 0 et 49) : ") # On convertit le nombre misé try: nombre_mise = int(nombre_mise) except ValueError: print("Vous n'avez pas saisi de nombre") nombre_mise = -1 continue if nombre_mise < 0: print("Ce nombre est négatif") if nombre_mise > 49: print("Ce nombre est supérieur à 49")
# À présent, on sélectionne la somme à miser sur le nombre mise = 0 while mise <= 0 or mise > argent: mise = input("Tapez le montant de votre mise : ") # On convertit la mise try: mise = int(mise) except ValueError: print("Vous n'avez pas saisi de nombre") mise = -1 continue if mise <= 0: print("La mise saisie est négative ou nulle.") if mise > argent: print("Vous ne pouvez miser autant, vous n'avez que", argent, "$")
# Le nombre misé et la mise ont été sélectionnés par # l'utilisateur, on fait tourner la roulette numero_gagnant = randrange(50) print("La roulette tourne... ... et s'arrête sur le numéro", numero_gagnant)
# On établit le gain du joueur if numero_gagnant == nombre_mise: print("Félicitations ! Vous obtenez", mise * 3, "$ !") argent += mise * 3 elif numero_gagnant % 2 == nombre_mise % 2: # ils sont de la même couleur mise = ceil(mise * 0.5) print("Vous avez misé sur la bonne couleur. Vous obtenez", mise, "$") argent += mise else: print("Désolé l'ami, c'est pas pour cette fois. Vous perdez votre mise.") argent -= mise
# On interrompt la partie si le joueur est ruiné if argent <= 0: print("Vous êtes ruiné ! C'est la fin de la partie.") continuer_partie = False else: # On affiche l'argent du joueur print("Vous avez à présent", argent, "$") quitter = input("Souhaitez-vous quitter le casino (o/n) ? ") if quitter == "o" or quitter == "O": print("Vous quittez le casino avec vos gains.") continuer_partie = False
# On met en pause le système (Windows) os.system("pause")
et voilà l'erreur :
Souhaitez-vous quitter le casino (o/n) ? O Traceback (most recent call last): File "/Users/lucilepettenazzi/Desktop/Lucile/Code/Chapitre 1/ZCasino/Correction.py", line 73, in <module> quitter = input("Souhaitez-vous quitter le casino (o/n) ? ") File "<string>", line 1, in <module> NameError: name 'O' is not defined >>>
Python me dit TOUJOURS quelque soit l'exercice name "" is not defined...
Je suis sous Mac, je ne sais pas si c'est corrélé.
j'ai un soucis récurent dans les exercices, quand il s'agit de quitter ou continuer ça ne fonctionne jamais. Même quand je copie/colle le code du cours (dernier exemple en date le TP ZCasino).
J'ai donc copier/coller le code suivant :
# -*-coding:Latin-1 -* # Ce fichier abrite le code du ZCasino, un jeu de roulette adapté
import os from random import randrange from math import ceil
# Déclaration des variables de départ argent = 1000 # On a 1000 $ au début du jeu continuer_partie = True # Booléen qui est vrai tant qu'on doit # continuer la partie
print("Vous vous installez à la table de roulette avec", argent, "$.")
while continuer_partie: # Tant qu'on doit continuer la partie # on demande à l'utilisateur de saisir le nombre sur # lequel il va miser nombre_mise = -1 while nombre_mise < 0 or nombre_mise > 49: nombre_mise = input("Tapez le nombre sur lequel vous voulez miser (entre 0 et 49) : ") # On convertit le nombre misé try: nombre_mise = int(nombre_mise) except ValueError: print("Vous n'avez pas saisi de nombre") nombre_mise = -1 continue if nombre_mise < 0: print("Ce nombre est négatif") if nombre_mise > 49: print("Ce nombre est supérieur à 49")
# À présent, on sélectionne la somme à miser sur le nombre mise = 0 while mise <= 0 or mise > argent: mise = input("Tapez le montant de votre mise : ") # On convertit la mise try: mise = int(mise) except ValueError: print("Vous n'avez pas saisi de nombre") mise = -1 continue if mise <= 0: print("La mise saisie est négative ou nulle.") if mise > argent: print("Vous ne pouvez miser autant, vous n'avez que", argent, "$")
# Le nombre misé et la mise ont été sélectionnés par # l'utilisateur, on fait tourner la roulette numero_gagnant = randrange(50) print("La roulette tourne... ... et s'arrête sur le numéro", numero_gagnant)
# On établit le gain du joueur if numero_gagnant == nombre_mise: print("Félicitations ! Vous obtenez", mise * 3, "$ !") argent += mise * 3 elif numero_gagnant % 2 == nombre_mise % 2: # ils sont de la même couleur mise = ceil(mise * 0.5) print("Vous avez misé sur la bonne couleur. Vous obtenez", mise, "$") argent += mise else: print("Désolé l'ami, c'est pas pour cette fois. Vous perdez votre mise.") argent -= mise
# On interrompt la partie si le joueur est ruiné if argent <= 0: print("Vous êtes ruiné ! C'est la fin de la partie.") continuer_partie = False else: # On affiche l'argent du joueur print("Vous avez à présent", argent, "$") quitter = input("Souhaitez-vous quitter le casino (o/n) ? ") if quitter == "o" or quitter == "O": print("Vous quittez le casino avec vos gains.") continuer_partie = False
# On met en pause le système (Windows) os.system("pause")
et voilà l'erreur :
Souhaitez-vous quitter le casino (o/n) ? O Traceback (most recent call last): File "/Users/lucilepettenazzi/Desktop/Lucile/Code/Chapitre 1/ZCasino/Correction.py", line 73, in <module> quitter = input("Souhaitez-vous quitter le casino (o/n) ? ") File "<string>", line 1, in <module> NameError: name 'O' is not defined >>>
Python me dit TOUJOURS quelque soit l'exercice name "" is not defined...
Je suis sous Mac, je ne sais pas si c'est corrélé.
Quelqu'un peut il éclairer mon ignorance ?
Merci merci.
Bonjour !
1 : Tu peux utiliser la balise </> pour mettre ton code dedans.
2 : personne ne comprend les caprices de python...
"I believe in two things. Discipline and the Bible." The Shawshank Redemption
A un moment j'ai pensé à cette solution, j'ai donc essayé d'installer python 3.7.3. Mon mac m'a dit OK c'est installé mais a priori c'est toujours le 2... Je vais me repencher sur la question, il y a peut être une manip que j'ai mal effectué à l'installation.
Peut-être que les deux sont installés sur ta machine, vérifie bien que tu utilise python 3 pour lancer ton script. C'est une erreur similaire qui m'a poussé sur ce forum :). Python relevait les annotations comme erreur de syntaxe, et c'est parce que j'utilisait python 2 au lieu de python 3 sans le savoir, les deux étants installés sur une même machine c'est python 2 qui a la priorité.
Bonjour, c'est première fois que je post ici ! J'aimerais savoir quelle est la différence entre ces deux codes ci-dessous. Je veux coder une classe, contenant la méthode spéciale __iter__ me permettant de simuler le mécanisme qui s’opère derrière la boucle for. La seule différence ici est que la chaîne se parcourt à l'envers.
class RevStr(str):
"""Classe reprenant les méthodes et attributs des chaînes construites
depuis 'str'. On se contente de définir une méthode de parcours
différente : au lieu de parcourir la chaîne de la première à la dernière
lettre, on la parcourt de la dernière à la première.
Les autres méthodes, y compris le constructeur, n'ont pas besoin
d'être redéfinies"""
def __iter__(self):
"""Cette méthode renvoie un itérateur parcourant la chaîne
dans le sens inverse de celui de 'str'"""
return ItRevStr(self) # On renvoie l'itérateur créé pour l'occasion
class ItRevStr:
"""Un itérateur permettant de parcourir une chaîne de la dernière lettre
à la première. On stocke dans des attributs la position courante et la
chaîne à parcourir"""
def __init__(self, chaine_a_parcourir):
"""On se positionne à la fin de la chaîne"""
self.chaine_a_parcourir = chaine_a_parcourir
self.position = len(chaine_a_parcourir)
def __next__(self):
"""Cette méthode doit renvoyer l'élément suivant dans le parcours,
ou lever l'exception 'StopIteration' si le parcours est fini"""
if self.position == 0: # Fin du parcours
raise StopIteration
self.position -= 1 # On décrémente la position
return self.chaine_a_parcourir[self.position]
Ce premier code est celui donné dans le cours Apprenez à programmer en Python. Pourquoi ne peut-on pas envisager le code suivant ?
Pickle un objet python, n'importe lequel, dans un fichier. Ensuite ouvre le fichier créé et essaie de lire, puis constate que ce n'est pas du Python.
from pickle import dumps
obj = [1, 2, 3]
with open("obj", "wb") as f:
f.write(dumps(obj))
# notons d'ailleurs que dumps(obj) ne renvoie pas une string qui contient du Python
Voilà, à partir de là tu peux aisément comprendre que : données sérializées != code python. Si ta bibliothèques est une liste Python dans un fichier qui porte l'extension .py, alors il te faut l'importer, rien de plus.
Je n'ai pas parcouru les 32 pages du fil, mais j'ai une question concernant le TP3 sur le dictionnaire ordonné dans la ligne suivante :
def __init__(self, base={}, **donnees):
Je ne comprends pas ce que signifie les "**" pour moi c'est égale au carré de la valeur donnée.
Cette partie du cours assez abstraite est assez compliquée à prendre en main.
Merci d'avance de vos réponses
Je suis d'accord avec le message precedent concernant le fait que cette partie du cours est trop abstraite et difficile a intégrer. D'ailleurs bizarrement, je comprends tres bien les parties qui finissent par des phrases type "Ne vous inquietez pas si ce n'est pas clair", par contre je ne comprends absolument pas certaines parties qui sont sensé etre plus simples...
bonjours, je suis completement bloqué sur cet exercices, et je n'est pas la moindre piste sur une éventuelles erreurs, quand je soumet mon code, cela me renvoi un message d'erreur " Your program output contains an invalid UTF8 character. / La sortie du programme contient un caractère UTF8 invalide. Résultat trop gros pour être affiché complètement." merci de votre aide.
Ce que doit faire votre programme :
Votre programme doit lire entier : un nombre de personnes à considérer. Ensuite, pour chaque personne, il doit lire son signalement sous la forme de cinq entiers : sa taille en centimètres, son âge en années, son poids en kilogrammes, un entier valant 1 si la personne possède un cheval et 0 sinon, et un entier valant 1 si la personne à les cheveux bruns et 0 sinon.
On veut déterminer pour chaque personne à quel point elle correspond aux 5 critères suivants :
il aurait une taille supérieure ou égale à 178 cm et inférieure ou égale à 182 cm ;
il aurait au moins 34 ans ;
il pèserait strictement moins de 70 kg ;
il n'a pas de cheval ;
il a les cheveux bruns.
Lorsque cela n'est pas précisé explicitement, les inégalités sont au sens large.
Pour chaque personne, vous devez tester tous les critères. S'ils sont vérifiés tous les 5, vous devez afficher « Très probable ». Si seulement 3 ou 4 sont vérifiés, vous devez afficher « Probable ». Si aucun n'est vérifié, vous devez afficher « Impossible », et dans les autres cas, vous devez afficher « Peu probable ».
MON CODE:
nbPers = int(input())
for loop in range (nbPers):
taille = int(input())
age = int(input())
poids = int(input())
cheval = int(input())
brun = int(input())
critere = 0
if(taille >= 178 or taille <= 182):
critere = critere + 1
if age >= 34:
critere = critere + 1
if poids < 70:
critere = critere + 1
if cheval == 0:
critere = critere + 1
if brun == 1:
critere = critere + 1
if critere < 10:
if critere == 0:
print("Impossible")
elif critere == 3:
print("Probable")
elif critere == 4:
print("Probable")
elif critere == 5:
print("Très probable")
else:
print("Peu probable")
edit: Résolu j'avais mit "or" a la place de "and" erreur toute bete grosse consequence
Je suis moi-meme entrain de me casser les dents a comprendre la correction de ce TP... Pas évident du tout !
Merci de ta réponse c'est un peu plus clair maintenant, il ne me semble pas que ce point ait été évoqué précédemment dans le cours ! Dommage, car l'utiliser dans la correction brouille les pistes et l'explication !
Toujours sur ma correction :
def __init__(self, base={}, **donnees):
self._cles = [] # Liste contenant nos clés
self._valeurs = [] # Liste contenant les valeurs correspondant à nos clés
# On vérifie que 'base' est un dictionnaire exploitable
if type(base) not in (dict, DictionnaireOrdonne):
raise TypeError( \
"le type attendu est un dictionnaire (usuel ou ordonne)")
# On récupère les données de 'base'
for cle in base:
self[cle] = base[cle]
# On récupère les données de 'donnees'
for cle in donnees:
self[cle] = donnees[cle]
Je comprends bien qu'on récupère les données des dictionnaire dans une liste. Mais normalement ont doit également récupérer les clés des dictionnaires non?
J'avoue que je ne comprends pas, sinon à quoi sert de définir 2 self._cle et self._valeurs ?
- Edité par GuillaumeROYER6 26 juin 2019 à 14:37:15
Les cours est bien fait... c'est dommage que l'activité soit IMPOSSIBLE !! Ca fait plusieurs semaines que je galere et je pense que je lasserai tomber la certification pour faire d'autre tutoriels... Par rapport au contenu du cours le jeu de Labyrinthe est vraiment trop avancé
Peut etre que c'est moi à etre nul mais j'ai l'impression, en plus, que la partie du code fournie mette encore plus en difficulté plutot que aider, comme le import:
from labyrinthe import creer_labyrinthe_depuis_chaine
Je comprends bien qu'on récupère les données des dictionnaire dans une liste. Mais normalement ont doit également récupérer les clés des dictionnaires non?
J'avoue que je ne comprends pas, sinon à quoi sert de définir 2 self._cle et self._valeurs ?
- Edité par GuillaumeROYER6 26 juin 2019 à 14:37:15
Re bonjour Guillaume,
Donc sauf erreur de ma part:
base={} permet de recuperer les données (clés et valeurs) d'un dictionnaire déja crée (il serait donc "passé" en argument aprés avoir deja été rempli, par exemple dans une autre fonction).
exemple: MaClasse(self, mon_dictionnaire)
**donnees permet de recuperer les données (clés et valeurs) d'un dictionnaire "tapé" manuellement au moment de la creation d'un objet de la classe.
Voila, encore une fois, c'est ce que je crois comprendre, je peux tout a fait me tromper. Si des "experts" passent par la, qu'ils se sentent libre de mon confirmer ou de m'infirmer
typage structurel ftw
entwanne — @entwanne — Un zeste de Python — La POO en Python — Notions de Python avancées — Les secrets d'un code pythonique
typage structurel ftw
entwanne — @entwanne — Un zeste de Python — La POO en Python — Notions de Python avancées — Les secrets d'un code pythonique
typage structurel ftw
typage structurel ftw
"I believe in two things. Discipline and the Bible." The Shawshank Redemption
entwanne — @entwanne — Un zeste de Python — La POO en Python — Notions de Python avancées — Les secrets d'un code pythonique
"I believe in two things. Discipline and the Bible." The Shawshank Redemption
typage structurel ftw
typage structurel ftw
entwanne — @entwanne — Un zeste de Python — La POO en Python — Notions de Python avancées — Les secrets d'un code pythonique