Problème de variable quand j'utilise la fonction def
Fermé
Multi73
Messages postés
88
Date d'inscription
dimanche 13 septembre 2020
Statut
Membre
Dernière intervention
4 mai 2022
-
29 juin 2021 à 18:52
flopython78 - 22 juil. 2021 à 14:32
flopython78 - 22 juil. 2021 à 14:32
A voir également:
- Problème de variable quand j'utilise la fonction def
- Fonction si et - Guide
- Comment savoir si quelqu'un utilise mon adresse ip - Guide
- Impossible d'utiliser ce numéro de téléphone pour la validation - Forum Gmail
- Snapchat ils m'ont ajouté par la fonction recherche - Forum Snapchat
- Nom de périphérique local déjà utilisé ✓ - Forum Réseau
7 réponses
jee pee
Messages postés
39582
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
17 avril 2024
9 224
Modifié le 29 juin 2021 à 19:10
Modifié le 29 juin 2021 à 19:10
Bonjour,
Tu utilises des variables globales. Ou ni classe, ni fonction mais juste une boucle style
Tu utilises des variables globales. Ou ni classe, ni fonction mais juste une boucle style
while score_joueur < 5 and scrore_ordi < 5:
yg_be
Messages postés
22696
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
17 avril 2024
1 471
30 juin 2021 à 08:54
30 juin 2021 à 08:54
bonjour,
est-ce ton premier exercice avec une classe?
les noms que tu utilises (info, q_if1, q_if2) ne signifient rien. c'est peut-être une indication que cela est mal conçu.
est-ce ton premier exercice avec une classe?
les noms que tu utilises (info, q_if1, q_if2) ne signifient rien. c'est peut-être une indication que cela est mal conçu.
Multi73
Messages postés
88
Date d'inscription
dimanche 13 septembre 2020
Statut
Membre
Dernière intervention
4 mai 2022
2
1 juil. 2021 à 12:04
1 juil. 2021 à 12:04
J'en avais fait un une fois mais en suivant une vidéo en même temps.
yg_be
Messages postés
22696
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
17 avril 2024
1 471
>
Multi73
Messages postés
88
Date d'inscription
dimanche 13 septembre 2020
Statut
Membre
Dernière intervention
4 mai 2022
1 juil. 2021 à 12:57
1 juil. 2021 à 12:57
c'est un sujet assez complexe, qui mérite plus d'étude.
Multi73
Messages postés
88
Date d'inscription
dimanche 13 septembre 2020
Statut
Membre
Dernière intervention
4 mai 2022
2
>
yg_be
Messages postés
22696
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
17 avril 2024
1 juil. 2021 à 12:58
1 juil. 2021 à 12:58
ok la je regarde le site que Dal m'as donner
Phil_1857
Messages postés
1883
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
28 février 2024
178
Modifié le 30 juin 2021 à 10:48
Modifié le 30 juin 2021 à 10:48
Bonjour,
Ca me parait bien long tout ça, on peut faire plus simple:
score_joueur = score_ordi = 0
définir une liste des choix : pierre, feuille, ciseaux
définir une liste des précédences entre objets : [pierre, ciseaux],[ciseaux, feuille],[feuille, pierre]
l'utilisateur entre son choix
l'ordi tire au hasard dans la liste des choix
on met ces 2 choix dans une liste : [utilisateur, ordi]
si choix_1 = choix_2: match nul
si liste = l'une des listes de la liste des précédences, l'utilisateur gagne: score_joueur +=1
si l'inverse de la liste = l'une des listes de la liste des précédences, l'ordi gagne : score_ordi += 1
Ca me parait bien long tout ça, on peut faire plus simple:
score_joueur = score_ordi = 0
définir une liste des choix : pierre, feuille, ciseaux
définir une liste des précédences entre objets : [pierre, ciseaux],[ciseaux, feuille],[feuille, pierre]
l'utilisateur entre son choix
l'ordi tire au hasard dans la liste des choix
on met ces 2 choix dans une liste : [utilisateur, ordi]
si choix_1 = choix_2: match nul
si liste = l'une des listes de la liste des précédences, l'utilisateur gagne: score_joueur +=1
si l'inverse de la liste = l'une des listes de la liste des précédences, l'ordi gagne : score_ordi += 1
[Dal]
Messages postés
6174
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
2 février 2024
1 083
Modifié le 30 juin 2021 à 12:29
Modifié le 30 juin 2021 à 12:29
Salut Multi73,
Il y a plusieurs problèmes dans ton code. Comme le dit jee pee tu ne boucles pas, donc tu joues une seule fois. yg_be et Phil_1857 en signalent d'autres, mais ton code en l'état ne peut pas fonctionner car tu n'utilises pas correctement la classe que tu définis en faisant plusieurs erreurs empêchant toute exécution.
Si tu crées une classe à partir de la ligne 9
Donc avant les lignes 53 et 54 :
tu peux créer un objet nommé, par exemple,
Ensuite, tu peux utiliser cet objet, et notamment les fonctions (méthodes) qu'il définit :
Au sujet de ta question concernant les variables de score utilisées, tu peux procéder ainsi :
Par exemple, ton code à partie de la ligne 9 pourrait ressembler à cela :
Tu devrais revoir ton cours ou un manuel concernant l'usage des classes, ou un tutoriel simple comme : https://www.w3schools.com/python/python_classes.asp
Dal
Il y a plusieurs problèmes dans ton code. Comme le dit jee pee tu ne boucles pas, donc tu joues une seule fois. yg_be et Phil_1857 en signalent d'autres, mais ton code en l'état ne peut pas fonctionner car tu n'utilises pas correctement la classe que tu définis en faisant plusieurs erreurs empêchant toute exécution.
Si tu crées une classe à partir de la ligne 9
class info():, pour utiliser cette classe, il te faut ensuite créer un objet utilisant cette classe.
Donc avant les lignes 53 et 54 :
q_if1() q_if2()
tu peux créer un objet nommé, par exemple,
jeuutilisant cette classe :
jeu = info()
Ensuite, tu peux utiliser cet objet, et notamment les fonctions (méthodes) qu'il définit :
jeu.q_if1() jeu.q_if2()
Au sujet de ta question concernant les variables de score utilisées, tu peux procéder ainsi :
- définir les variables utilisées par la classe au sein de cette classe, en dehors de toutes méthodes (ou dans la méthode spéciale
__init__()
) - référencer ces variables au sein de tes fonctions avec le mot clef
self
, qui indique que tu accèdes dans ta classe à des variables appartenant à la classe
Par exemple, ton code à partie de la ligne 9 pourrait ressembler à cela :
class info(): score_joueur = 0 score_ordi = 0 def q_if1(self): print("Bienvenue dans le jeux pierre feuille ciseaux.") time.sleep(2) def q_if2(self): choix = input("Choisissez entre: pierre, feuille, ou ciseaux") time.sleep(1) print("L'ordinateur à choisi le mots: ", choix_pc) time.sleep(2) if choix_pc == "pierre" and choix == "feuille": self.score_joueur += 1 print("Vous avez gagner un points en plus.\n Votre score est de", self.score_joueur, "points. \n Le score de l'ordinateur est de", self.score_ordi, "points") time.sleep(2) (...)
Tu devrais revoir ton cours ou un manuel concernant l'usage des classes, ou un tutoriel simple comme : https://www.w3schools.com/python/python_classes.asp
Dal
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Multi73
Messages postés
88
Date d'inscription
dimanche 13 septembre 2020
Statut
Membre
Dernière intervention
4 mai 2022
2
1 juil. 2021 à 12:06
1 juil. 2021 à 12:06
Merci !
Phil_1857
Messages postés
1883
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
28 février 2024
178
Modifié le 1 juil. 2021 à 17:00
Modifié le 1 juil. 2021 à 17:00
Bonjour,
Sinon, sans parler de classes, on peut faire simple pour le calcul du gagnant :
Sinon, sans parler de classes, on peut faire simple pour le calcul du gagnant :
import random choix = {'p':'pierre', 'f':'feuille', 'c':'ciseaux'} precedences = ['feuillepierre', 'pierreciseaux', 'ciseauxfeuille'] points_joueur, points_ordi = 0,0 while(True): joueur = input('\nVotre choix (p, f, c) ou <q>uitter : ') if(joueur == 'q'): break joueur = choix[joueur] ordi = random.choice([val for val in choix.values()]) print('joueur : {} ordi : {}'.format(joueur, ordi)) if(joueur == ordi): print('match nul') else: jeu = joueur+ordi jeu_inv = ordi+joueur for p in precedences: if(jeu == p): print('joueur gagne !') points_joueur += 1 elif(jeu_inv == p): print('ordi gagne !') points_ordi += 1 print('\nJoueur : {} points ordi : {} points'.format(points_joueur, points_ordi))