Python Variables

Résolu/Fermé
Enz0lanterne - Modifié le 7 janv. 2020 à 21:23
Enz0lanterne828 Messages postés 50 Date d'inscription mercredi 8 janvier 2020 Statut Membre Dernière intervention 21 mars 2020 - 9 janv. 2020 à 18:09
Bonjour,

Je débute avec python et j'ai 12 ans donc difficile de comprendre certaines choses pour moi /:
Des fois j'invite mon amis chez moi et on fais des programmes car ça nous amuse.

Donc voilà ma question :
Récemment j'ai fait un programme le voilà :
point_de_vie = 100
point_de_faim = 40
print ('Salut et bienvenue dans ce programme phyton ou tu devras faire des choix et survivre le plus longtemps possible, bonne chance !')
print ('Avant de commencer souviens toi que ta barre de vie ne peux pas dépasser 100 et ta barre de faim non plus')
print ('Tu arrives dans une salle ou tu as le choix pour ta survie tu peux prendre un seul objet des trois qui vont t être proposé.')
print ('Les objets:')
print ('1: Le couteau')
print ('2: Le briquet')
print ('3: Ton téléphone')
print ('Tape 1,2 ou 3 selon ton choix.')
choix = input ('Que choisis-tu ?')
num_choix = int (choix)
if num_choix == 1:
    arme_de_départ = 1
if num_choix == 2:
    arme_de_départ = 2
if num_choix == 3:
    arme_de_départ = 3
print ('Tu arrives dans une terre inconnue et tu commences à avoir faim. Tu vois un palmier avec des noix de coco dessus que fais-tu ?')
print ('1: Tu secoues un arbre pour essayer de prendre des noix de coco')
print ('2: Tu grimpe à un arbre pour essayer d attraper des noix de coco')
print ('3: Tu cherches autre chose à manger')
arbre = input ('Que fais-tu étant donné que tu as faim ?')
if arbre == 1:
    print ('Tu secoues un arbre et une noix de coco tombe sur ta tête')
    print ('Tu perd 5 point de vie')
    point_de_vie = point_de_vie - 5
    print ('Point de vie:', point_de_vie)
    print ('Tu n as pas le choix tu dois trouver autre chose à manger')
    print ('1: Aller ailleur')
    arbre = input ('Que fais-tu tu n as pas trop le choix')
if arbre == 2:
    print ('Tu arrives à attraper 2 noix de coco mais tu te blesse')
    print ('Tu perd 5 point de vie mais tu gagne 30 point de faim')
    point_de_vie = point_de_vie - 5
    point_de_faim = point_de_faim + 30
    print ('Point de vie:', point_de_vie)
    print ('Point de faim', point_de_faim)
if arbre == 3:
    print ('Tu vas voir ailleur et tu tombes sur un buisson de baies sucrées, tu t avance vers le buisson')
    print ('1: Tu prends une baie dans ta mais puis tu la mange')
    print ('2: Tu ignores les baies et va voir ailleur')
    print ('3: Tu t approches encore plus du buisson')
    baie_sucrée = input ('Que fais-tu ?')


Et je ne comprend pas pourquoi quand je lance le programme tout marche mais quand on me demande: 'Tu arrives dans une terre inconnue et tu commences à avoir faim. Tu vois un palmier avec des noix de coco dessus que fais-tu ?' je répond 1 mais le programme ne fais rien.
Je pense que c'est à cause du 'input' qui ne fonctionne pas bien ou que j'ai mal utilisé.

Merci d'avance

11 réponses

georges97 Messages postés 11842 Date d'inscription lundi 31 janvier 2011 Statut Contributeur Dernière intervention 24 avril 2024 2 251
7 janv. 2020 à 23:40
Bonsoir Enz0lanterne,

Je suppose que vous utilisez un IDE et une version 3.xxx de python. Dans cette version, un input devant retourner une variable de type entier numérique doit être déclarée en tent que telle, sinon, elle reçoit une chaîne de caractères comme "1" "2" ou "3" au lieu des chiffres 1, 2 ou 3.

La comparaison suivante == ne peut donc se faire (entre nombre et chaîne). Il faut donc écrire tous les input sous la forme:

arbre = int(input('Que fais-tu étant donné que tu as faim ?'))

int convertit la saisie du caractère en entier utilisable dans les lignes suivantes.

Cordialement
1
D'accord merci je vais essayer et oui j'utilise IDLE.
0
georges97 Messages postés 11842 Date d'inscription lundi 31 janvier 2011 Statut Contributeur Dernière intervention 24 avril 2024 2 251
Modifié le 8 janv. 2020 à 18:06
Bonsoir yg_be, bonsoir Enz0lanterne828

@ Enz0lanterne828 , content que mon conseil ait pu vous permettre de découvrir un aspect de ce fascinant langage. Je laisse volontiers la main à yg_be qui reste une des références en matière d'aide sur la programmation sur CCM et que je lis régulièrement.

Il se peut que je réponde si je connais le point que vous soulèverez mais j'attendrai un peu que nos mentors donnent leur conseil car je ne suis pas à leur niveau. Je reste à l'écoute.

Jute un conseil lié à la catégorie du jeu d'aventures textuel, veillez à assurer la cohérence des relations (un peu comme dans un Cluedo) entre les différents personnages ou éléments en faisant des schémas car au fur et à mesure au fur et à mesure des apports de tous vos participants la complexité augmente, les erreurs ou ambiguïtés peuvent conduire les joueurs à contester la prise en compte de leurs réponses.

Cordialement.
1
Enz0lanterne828 Messages postés 50 Date d'inscription mercredi 8 janvier 2020 Statut Membre Dernière intervention 21 mars 2020 8
8 janv. 2020 à 19:27
Non je dis n'importe quoi.
Enfaite je veux faire une condition qui est infini, est-ce-possible ?
1
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
9 janv. 2020 à 00:21
non
0
Mais est-ce possible de faire une condition qui est tout le temps pris en compte et pas seulzment quand on l'écris ?
1
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
9 janv. 2020 à 11:20
non.
pour un débutant, je pense que le plus simple est de créer une fonction qui va vérifier les conditions, et d'appeler cette fonction chaque fois que les conditions peuvent changer.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
Modifié le 9 janv. 2020 à 13:12
exemple de fonction (j'utilise intentionnellement des noms de variables différents des noms utilisés dans le programme principal) :
def regles(vie,faim):
    if vie <= 0:
        print ('Tu es mort mais ce n"est pas grave, tu peux recommencer la partie autant de fois que tu le voudras.')
        sleep(3.5)
        print ('Tu pourras recommencer en changeant tes choix ou en gagnant les combats')
        System.exit(0);
    if faim <= 0:
        print ('Tu as trop faim donc tu perd 15 Points De Vie')
        sleep(3)
        print ('Heureusement tu remarques que tu as une barre de kinder dans ta poche ce qui te donne 15 Points De Faim')
        faim = faim + 15
        vie = vie - 15
        System.exit(0);
    if vie > 100:
        print ('*ASTUCE* Tu ne peux pas avoir plus de 100 Points De Vie')
        vie = 100
    if faim > 100:
        print ('*ASTUCE* Tu ne peux pas avoir plus de 100 Points De Faim')
        faim = 100
    return vie,faim
et exemple d'appel de la fonction:
    print('Tu perds 5 Points De Vie mais heureusement tu à une noix de coco à manger: Tu gagnes 20 Points De Faim')
    point_de_vie = point_de_vie - 5
    point_de_faim = point_de_faim + 20
    point_de_vie,point_de_faim=regles(point_de_vie,point_de_faim)

ou bien
    print('Tu perds 5 Points De Vie mais heureusement tu à une noix de coco à manger: Tu gagnes 20 Points De Faim')
    point_de_vie,point_de_faim=regles(point_de_vie-5,point_de_faim+20)

ou
point_de_vie,point_de_faim=regles(100,60)
1
Enz0lanterne828 Messages postés 50 Date d'inscription mercredi 8 janvier 2020 Statut Membre Dernière intervention 21 mars 2020 8
Modifié le 8 janv. 2020 à 13:22
Re-bonjour, c'est moi (sauf que je me suis créer un compte)

Donc j'ai fait ce que vous m'avez dit et ça a bien marché mais j'ai décider de rajouter quelques choses au programme et ça me met erreur de syntaxe sur les : après le deuxième if.
J'ai essayé d'enlever le deuxième if et de ne laisser que le 1er et le 3ème mais ça me fait la même chose: une erreur syntaxe sur les : après le if.

Voilà le programme:
point_de_vie = 100
point_de_faim = 40
print ('Salut et bienvenue dans ce programme phyton ou tu devras faire des choix et survivre le plus longtemps possible, bonne chance !')
print ('Avant de commencer souviens toi que ta barre de vie ne peux pas dépasser 100 et ta barre de faim non plus')
print ('Tu arrives dans une salle ou tu as le choix pour ta survie tu peux prendre un seul objet des trois qui vont t être proposé.')
print ('Les objets:')
print ('1: Le couteau')
print ('2: Le briquet')
print ('3: Ton téléphone')
print ('Tape 1,2 ou 3 selon ton choix.')
choix = input ('Que choisis-tu ?')
num_choix = int (choix)
if num_choix == 1:
arme_de_départ = 1
if num_choix == 2:
arme_de_départ = 2
if num_choix == 3:
arme_de_départ = 3
print ('Tu arrives dans une terre inconnue et tu commences à avoir faim. Tu vois un palmier avec des noix de coco dessus que fais-tu ?')
print ('1: Tu secoues un arbre pour essayer de prendre des noix de coco')
print ('2: Tu grimpe à un arbre pour essayer d attraper des noix de coco')
print ('3: Tu cherches autre chose à manger')
arbre = int(input('Que fais-tu étant donné que tu as faim ?'))
if arbre == 1:
print ('Tu secoues un arbre et une noix de coco tombe sur ta tête')
print ('Tu perd 5 point de vie')
point_de_vie = point_de_vie - 5
print ('Point de vie:', point_de_vie)
print ('Tu n as pas le choix tu dois trouver autre chose à manger')
print ('1: Aller ailleur')
arbre_deux = int(input('Que fais-tu tu n as pas trop le choix')
if arbre == 2:
print ('Tu arrives à attraper 2 noix de coco mais tu te blesse')
print ('Tu perd 5 point de vie mais tu gagne 30 point de faim')
point_de_vie = point_de_vie - 5
point_de_faim = point_de_faim + 30
print ('Point de vie:', point_de_vie)
print ('Point de faim', point_de_faim)
if arbre == 3:
print ('Tu vas voir ailleur et tu tombes sur un buisson de baies sucrées, les noix de cocos t aurais mieux nouris mais tu t avance quand même vers le buisson')
print ('1: Tu prends une baie dans ta mais puis tu la mange')
print ('2: Tu ignores les baies et va voir ailleur')
print ('3: Tu t approches encore plus du buisson')
baie_sucrée = int(input('Que fais-tu ?'))
if arbre_deux == 1:
print ('Tu vas voir ailleur et tu tombes sur un buisson de baies sucrées, tu t avance vers le buisson')
print ('1: Tu prends une baie dans ta mais puis tu la mange')
print ('2: Tu ignores les baies et va voir ailleur')
print ('3: Tu t approches encore plus du buisson')
baie_sucrée = int(input('Que fais-tu ?'))

Merci d'avance
0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
Modifié le 8 janv. 2020 à 14:36
bonjour, surtout pour le python, il est utile d'utiliser les balises de code pour partager du code: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
cela ne fonctionne, pour le moment, que dans les réponses, pas dans les commentaires.
cela ajoute aussi les numéros de ligne, ce qui facilite la communication.
qu'as-tu ajouté au programme?

peut-être l'erreur est-il dans le if avec arbre-deux, et t'indique que arbre_deux n'est pas défini?
sans doute parce que tu ne poses la question avec arbre-deux que si arbre vaut 1.
0
Enz0lanterne828 Messages postés 50 Date d'inscription mercredi 8 janvier 2020 Statut Membre Dernière intervention 21 mars 2020 8
Modifié le 8 janv. 2020 à 18:07
Bonsoir,
J'ai décidé de recommencer un programme du même type et cette fois-ci, ça a marché (je ne sais pas exactement pour quoi mais ça marche donc c'est le principale.)
Voilà le programme :
<code>
print ('Tu arrives sur une île inconnue, tu ne te souviens de rien...')
from time import sleep
sleep(3.5)
print ('VOUS -Qui suis-je ?')
sleep(2.5)
print ('Vous voyez un arbre mort au loin')
point_de_vie = 100
point_de_faim = 60
sleep(4)
print ('*ASTUCE* Vous ne pouvez avoir que 100 Points De Vie et 100 Points De Faim au maximum')
print ('Vos Points De Vie:', point_de_vie)
print ('Vos Points De Faim:', point_de_faim)
sleep(4)
print ('Vous commencez à avoir faim et vous apercevez un cocotier non-loin de là.')
sleep(3)
print ('*ASTUCE* À des moments dans l"Histoire, vous serez confronter à des choix comme celui qui va suivre.')
sleep(4)
print ('Chaque choix que vous ferez changeras votre Histoire.')
sleep(3.5)
print ('Pour choisir ce que vous allez faire, dire, penser, ect... vous devez regarder les choix possible, ces choix sont représentés par des nombres 1, 2 ou 3.')
sleep(3)
print ('À ces moments là, vous devrez taper 1, 2 ou 3 pour continuer.')
sleep(2.5)
print ('1: Vous secouez le cocotier espérant qu"une noix de coco tombe pour pouvoir ensuite la manger.')
sleep(2.5)
print ('2: Vous essayez de grimper au cocotier avec un espoir de pouvoir agripper une noix de coco et ensuite la manger.')
sleep(2.5)
print ('3: Vous allez voir ailleur car ce cocotier ne vous inspire pas confiance.')
cocotier = 0
sleep(2.5)
cocotier = int(input('Que décides-tu de faire ? Tape 1, 2 ou 3 selon ton choix.'))
if cocotier == 1:
    print ('Tu secoues le cocotier et une noix de coco tombe sur ta tête.')
    sleep(2)
    print('Tu perds 5 Points De Vie mais heureusement tu à une noix de coco à manger: Tu gagnes 20 Points De Faim')
    point_de_vie = point_de_vie - 5
    point_de_faim = point_de_faim + 20
    sleep(3)
    print ('Points De Vie:', point_de_vie)
    print ('Points De Faim:', point_de_faim)
    sleep(2.5)
    print ('Que décides-tu de faire maintenant ?')
    sleep(2)
    print ('1: Explorer l"île.')
    sleep(2)
    print ('2: Essayer de te fabriquer un abris car la nuit va bientôt tomber.')
    sleep(2)
    print ('3: MANGER, ENCORE MANGER !!')
    sleep(2)
    suite = int(input('Que fais-tu ?'))
if cocotier == 2:
    print ('Tu grimpes à l"arbre mais tu te blesses gravament. Heureusement au passage tu as réussis à attraper deux noix de coco.')
    sleep(2.5)
    print ('Tu perd 15 Points De Vie mais tu gagnes 40 Points De Faim')
    sleep(3)
    point_de_vie = point_de_vie -15
    point_de_faim = point_de_faim +40
    print ('Points De Vie:', point_de_vie)
    print ('Points De Faim:', point_de_faim)
    print ('Que décides-tu de faire maintenant ?')
    sleep(2)
    print ('1: Explorer l"île.')
    sleep(2)
    print ('2: Essayer de te fabriquer un abris car la nuit va bientôt tomber.')
    sleep(2)
    print ('3: MANGER, ENCORE MANGER !!')
    sleep(2)
    suite = int(input('Que fais-tu ?'))
if cocotier == 3:
    print ('Tu vois un buisson dans la forêt juste à coté, tu t"approches et tu vois des baies, des baies sucrées.')
    sleep(3)
    print ('Les noix de cocos t"aurais mieux nouris mais tu t"approches quand même du buisson.')
    sleep(3)
    print ('1: Tu t"approches encore plus du buisson.')
    sleep(2)
    print ('2: Tu prend une poignée de baies sucrées et tu la manges.')
    sleep(2)
    print ('3: Tu décide de ne pas manger.')
    sleep(2)
    baie_sucrée = int(input('Que décides-tu de faire ?'))
if suite == 1:
    print('Tu vois un buisson au loin mais tu n"arrives pas trop à distinguer les fruits qu"il y a dessus.')
    sleep(2.5)
    print ('1: S"approcher du buisson.')
    sleep(2.5)
    print ('2: Continuer à explorer.')
    sleep(2.5)
    buisson = int(input('Que fais-tu ?'))
while point_de_vie <= 0:
        print ('Tu es mort mais ce n"est pas grave, tu peux recommencer la partie autant de fois que tu le voudras.')
        sleep(3.5)
        print ('Tu pourras recommencer en changeant tes choix ou en gagnant les combats')
        System.exit(0);
while point_de_faim <= 0:
        print ('Tu as trop faim donc tu perd 15 Points De Vie')
        sleep(3)
        print ('Heureusement tu remarques que tu as une barre de kinder dans ta poche ce qui te donne 15 Points De Faim')
        point_de_faim = point_de_faim + 15
        point_de_vie = point_de_vie - 15
        System.exit(0);
while point_de_vie > 100:
        print ('*ASTUCE* Tu ne peux pas avoir plus de 100 Points De Vie')
        point_de_vie = 100
while point_de_faim > 100:
        print ('*ASTUCE* Tu ne peux pas avoir plus de 100 Points De Faim')
        point_de_faim = 100
if suite == 2:
    point_de_vie = point_de_vie - 10000<code python>


Tous marche très bien le seul problème c'est au niveau de la boucle while qui ne s’exécute pas correctement et ne met pas le message quand la variable point_de_vie ou point_de_faim quand elles arrivent à plus petit ou égale à 0.

Merci cordialement
0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
8 janv. 2020 à 18:08
surtout pour le python, il est utile d'utiliser les balises de code pour partager du code: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
8 janv. 2020 à 18:34
il est très difficile, à partir de ton programme, d'imaginer ce que tu veux qu'il fasse. tu dois donc être très précis dans tes explications.
tu écris que la boucle while ne s'exécute pas correctement. tu as 4 boucles while, laquelle ne t'obéis pas? que fait-elle, que voudrais-tu qu'elle fasse?
dans le code que tu montre, je ne vois pas l'avantage de faire while plutôt que if.
afin de comprendre ce que fais ton programme, ajoute provisoirement des print(), par exemple
print (point_de_vie, point_de_faim)
avant le premier while.
0
Enz0lanterne828 Messages postés 50 Date d'inscription mercredi 8 janvier 2020 Statut Membre Dernière intervention 21 mars 2020 8
8 janv. 2020 à 18:10
D'accord, je le ferais, désolé je ne le savais pas
0
Enz0lanterne828 Messages postés 50 Date d'inscription mercredi 8 janvier 2020 Statut Membre Dernière intervention 21 mars 2020 8
8 janv. 2020 à 19:15
Alors,
Tous les while ne fonctionnent pas
Je voudrais qu'elles fassent en sorte que si la variable points_de_vie excèdent 100 comme par exemple 500 et bien le nombre reviens à 100.
Plus clairement je voudrais fixer une limite à une variable (ici qui est 100)
Pour un des deux autres while je veux faire en sorte que si la variable point_de_vie atteint 0 alors écrire 'Dommage tu as perde' (ou quelque chose dans le genre) puis arrêter le programme et pour l'autre variable qui est point_de_faim, si elle atteint 0 alors on retire 15 à la variable point_de_vie et on rajoute 15 à point_de_faim (je sais pas si vous avez compris.)
Et je veux faire while pour que cela soit à l'infini car c'est plus pratique que de répéter le code avec if à chaque ligne car if ne prend en compte le choix que quand il est placer alors que while le prend tout le temps en compte (enfin je crois.)
0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
8 janv. 2020 à 23:07
le while est exécuté au moment où le code arrive à l'instruction, tout comme le if et les autres instructions.
quand le while est exécuté, les instructions dans le while sont exécutées si la condition est respectée, et sont exécutées plusieurs fois, tant que la condition est respectée.
0
Enz0lanterne828 Messages postés 50 Date d'inscription mercredi 8 janvier 2020 Statut Membre Dernière intervention 21 mars 2020 8
8 janv. 2020 à 19:25
Ha non j'ai mal compris le sens de la boucle while désolé, il fallait mettre if après while comme ça:
<code>while if point_de_vie <= 0:
        print ('Tu es mort mais ce n"est pas grave, tu peux recommencer la partie autant de fois que tu le voudras.')
        sleep(3.5)
        print ('Tu pourras recommencer en changeant tes choix ou en gagnant les combats')
        System.exit(0);
while if point_de_faim <= 0:
        print ('Tu as trop faim donc tu perd 15 Points De Vie')
        sleep(3)
        print ('Heureusement tu remarques que tu as une barre de kinder dans ta poche ce qui te donne 15 Points De Faim')
        point_de_faim = point_de_faim + 15
        point_de_vie = point_de_vie - 15
        System.exit(0);
while if point_de_vie > 100:
        print ('*ASTUCE* Tu ne peux pas avoir plus de 100 Points De Vie')
        point_de_vie = 100
while if point_de_faim > 100:
        print ('*ASTUCE* Tu ne peux pas avoir plus de 100 Points De Faim')
        point_de_faim = 100<code python>

Là normalement ça devrais fonctionner !
0
Enz0lanterne828 Messages postés 50 Date d'inscription mercredi 8 janvier 2020 Statut Membre Dernière intervention 21 mars 2020 8
9 janv. 2020 à 18:09
Bonjour,

Merci ça m'a beaucoup aidé et maintenant mon programme fonctionne.
C'est un peu énervant à faire mais si ça marche ça me vas :-)

Merci
0