Reprendre le résultat d'une definition précédente [Résolu]

Signaler
Messages postés
20
Date d'inscription
jeudi 17 décembre 2020
Statut
Membre
Dernière intervention
19 décembre 2020
-
Messages postés
20
Date d'inscription
jeudi 17 décembre 2020
Statut
Membre
Dernière intervention
19 décembre 2020
-
Bonjour,
j'aimerai savoir si c'est possible de reprendre le résultat de ma def identification et de l'envoyer dans la def presentation .
Exemple:
Dans le terminal y'a ca qui apparait ''Bienvenue <function identification at 0x03DFF348> le but du 421 est de lancé 3 dés est de tomber sur un 1, un 4 et un 2''
def identification():
    print('nom ? ')
    return input()

def presentation():
    print('Bienvenue ' ,end='')
    print(identification ,end='')
    return print(' le but du 421 est de lancé 3 dés est de tomber sur un 1, un 4 et un 2 ')


Si j'ai mal expliquer je suis désolé faites le moi savoir j'essayerai de réexpliquer autrement
MERCI .

12 réponses

Messages postés
30589
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
15 janvier 2021
7 227
bonjour,

print(identification() ,end='') 


mais une telle façon de faire ne permet pas de retrouver plus tard le nom du joueur, il faut utiliser une variable
Messages postés
20
Date d'inscription
jeudi 17 décembre 2020
Statut
Membre
Dernière intervention
19 décembre 2020

Merci mais j'avais déjà essayé et ce n'est pas le résultat que j'attends car si je fait ca je devrai écrire deux fois le nom du joueur.
En gros quand je rentre c'est deux def j'aimerai que identification() me permet d'écrire le nom et que presentation() le reprenne sans le réécrire une seconde fois
Messages postés
849
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
15 janvier 2021
96
Bonjour,

dans ta fonction identification, tu écris return(input())

il faudrait mieux écrire:

def identification():
    nom = input('nom ? ')
    return(nom)


puis, ici, le return ne sert à rien, et il manque () après identification :

def presentation():
    print('Bienvenue ' ,end='')
    identification()
    print(' le but du 421 est de lancer 3 dés et de sortir 4, 2, et 1 ')
Messages postés
20
Date d'inscription
jeudi 17 décembre 2020
Statut
Membre
Dernière intervention
19 décembre 2020

Merci pour la rectification dans def identification().
Mais pour presentation le probleme est toujours la
il me demande deux fois le nom du joueur alors que je voudrai qu'il reprend le resultat d'avant .

Messages postés
849
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
15 janvier 2021
96 >
Messages postés
20
Date d'inscription
jeudi 17 décembre 2020
Statut
Membre
Dernière intervention
19 décembre 2020

Bien sûr !
il ne faut pas appeler identification
Il faut juste appeler présentation
Car présentation appelle elle même identification

def identification():
	nom = input('nom ? ')
	return(nom)

def presentation():
	print('\nBienvenue ! ' ,end='')
	identification()
	print('le but du 421 est de lancer 3 dés et de sortir 4, 2, et 1 ')

presentation()


ca donne ça :

Messages postés
20
Date d'inscription
jeudi 17 décembre 2020
Statut
Membre
Dernière intervention
19 décembre 2020
>
Messages postés
849
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
15 janvier 2021

Ca marche merci beaucoup pour ton aide
Messages postés
20
Date d'inscription
jeudi 17 décembre 2020
Statut
Membre
Dernière intervention
19 décembre 2020

Bon vu que mon problème à été résolu et j'ai un deuxième problème dans le même genre je le poste ici
def affiche_lancer(a,b,c):
    
    print('+---+    ' , end='')
    print('+---+    ' , end='')
    print('+---+')
    print('| ' , end='')
    print(a , end='')
    print(' |    ' , end='')
    print('| ' , end='')
    print(b , end='')
    print(' |    ' , end='')
    print('| ' , end='')
    print(c , end='')
    print(' |    ')
    print('+---+    ' , end='')
    print('+---+    ' , end='')
    print('+---+')
    return a,b,c
    
def affiche_resultat():
    if affiche_lancer(de(),de(),de())==((1,2,4) or (1,4,2) or (2,1,4) or (2,4,1) or (4,1,2) or (4,2,1)):
         print('bien joué')
        
    else:
        print('dommage')


pourquoi dans le programme au dessus le résultat affiché est toujours dommage même quand je tombe sur 421 .
Messages postés
849
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
15 janvier 2021
96
Bonjour lou,

C'est forcément parce qu'il y a un problème ici, tu ne crois pas ?

    if affiche_lancer(de(),de(),de())==((1,2,4) or (1,4,2) or (2,1,4) or (2,4,1) or (4,1,2) or (4,2,1)):
         print('bien joué')


Le test n'est pas bon, donc on tombe toujours dans le
else:


Déjà, c'est quoi
de() 
?

C'est une fonction? On ne la voit pas dans ton code .......

Tu devrais afficher le code complet, ce serait plus compréhensible

Ensuite, tu devrais revoir ton cours sur le langage Python:

On n'écris pas :

if(a == 1 or 2 or 3 or 4):

mais :

if(a==1 or a==2 or a==3 or a==4):

Une astuce supplémentaire:

si de() renvoie un dé

d1 = de()
d2 = de()
d3 = de()
lancer = [d1,d2,d3]
lancer.sort()
if(lancer == [1,2,4]):
    print('bien joué):
else:
    print('dommage')
Messages postés
20
Date d'inscription
jeudi 17 décembre 2020
Statut
Membre
Dernière intervention
19 décembre 2020

Désolé j'avais oublier le 'de()' oui ca rapporte bien à un lance de dé que j'ai fait plus haut . Aussi j'ai essayé d'écrire de la deuxième manière les if mais ca change pas.
Quand je lance le programme étape par étape je peux voir que le problème c'est la fonction affiche_lancer que récupère la fonction affiche résultat est un none donc none n'est pas égale a (1,2,3) ou (1,4,2) .. . . donc m'affiche dommage .

Pour moi c'est parce que la fonction affiche_lance ne renvoie rien dû au manque d'un return



from random import randint

def de():
    return randint(1,6)
print (de())


def est_un_421(de1,de2,de3):
   """
   Renvoie vrai si et seulement si deux dés forment un 42
    Paramètres : 
    - de1 : entier - un lancer de dé six
    - de2 : entier - un 2eme lancer de dé six
    - de3 : entier - un 3eme lancer de dé six
    Valeur de retour : booléen
   Contraintes : de1, de2 et de3 appartiennent à [1, 6]
   :Exemples:
   >>> est_un_421(4, 2, 1)
     True
   >>> est_un_421(2, 4, 1)
     True
   >>> est_un_421(1, 2, 4)
     True
   >>> est_un_421(2, 1, 4)
     True
   >>> est_un_421(4, 0, 6)
     False
   >>> est_un_421(5, 1, 4)
     False
    
    """
   if (de1 == 4 or de1==2 or de1==1) :
        if (de2==4 or de2==2 or de2==1) and de2 !=de1:
           if (de3== 4 or de3==2 or de3==1 ) and (de3!=de2) and (de3!=de1):
               return True
           else :
               return False
        else :
            return False
   else :
        return False
print(est_un_421(randint(1,6),randint(1,6),randint(1,6)))

## interaction avec l'utilisateur
def identification():
    nom = input('nom ? ')
    return (nom)

def presentation():
    print('\nBienvenue ! ' ,end='')
    identification()
    print(' le but du 421 est de lancé 3 dés et de sortir 4,2, et 1 ')

    


def poursuivre_le_jeu():
   """
   Renvoie vrai si et seulement si le joueur ecrit oui ou yes
    Valeur de retour : booléen
    Contrainte: accepter seulement oui, yes, non, no
   :Exemples:
   >>> poursuivre_le_jeu(oui)
     True
   >>> poursuivre_le_jeu(non)
     False
   >>> poursuivre_le_jeu(frfe)
     False
    
    """
   
   print('Voulez-vous jouer au jeu du 421?')
   if 'oui' or 'yes' :
      return True
   elif 'non' or 'no':
      return False
   
##Affichage sur le terminal

def affiche_lancer(a,b,c):
    
    print('+---+    ' , end='')
    print('+---+    ' , end='')
    print('+---+')
    print('| ' , end='')
    print(a , end='')
    print(' |    ' , end='')
    print('| ' , end='')
    print(b , end='')
    print(' |    ' , end='')
    print('| ' , end='')
    print(c , end='')
    print(' |    ')
    print('+---+    ' , end='')
    print('+---+    ' , end='')
    print('+---+')
    
def affiche_resultat():
    if affiche_lancer()==((1,2,4) or (1,4,2) or (2,1,4) or (2,4,1) or (4,1,2) or (4,2,1)):
         print('bien joué')
        
    else:                                          #Programme non fonctionnel
        print('dommage')                           #j'ai pas reussi à reprendre les mêmes paramètres que la fonction precedente
        return
                        


##One Main to rule them all

def main_421():
    presentation()
    poursuivre_le_jeu()
    affiche_lancer(de(),de(),de())
    affiche_resultat()
    
        

main_421()
Messages postés
849
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
15 janvier 2021
96
En fait, ton code de 421 peut s'écrire très simplement:

import random

print('\n ***** Jeu de 421 *****\n')
nom = input('Bienvenue, quel est ton nom ? : ')
input('{} appuie sur entrée pour lancer les dés ...'.format(nom))

des = [n for n in range(1,7)]
lancer = random.sample(des, 3)
lancer.sort()

print('\nRésultat : {}'.format(lancer))
if(lancer == [1,2,4]):
 print('Gagné !')
else:
 print('Perdu !')


Fais-en un copié/collé et essaie, tu verra, ca marche super bien

Ceci dit, il y a une chance sur 36 de sortir un 421 ...

Ca, c'est un test où j'ai gagné:
Messages postés
20
Date d'inscription
jeudi 17 décembre 2020
Statut
Membre
Dernière intervention
19 décembre 2020

Enfaite c'est plusieurs exercice que tu peux voir ou j'ai mis les # pour a la fin les assemblés dans main_421().
Donc je peux pas prendre un programmme direct et aussi le format() j'ai pas encore vu à quoi ca servait .
Mais merci pour ton aide .
Messages postés
849
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
15 janvier 2021
96
Il suffit de lire le code:

input('{} appuie sur entrée pour lancer les dés ...'.format(nom))


avec cet input, le programme attend que tu appuie sur 'entrée' pour continuer, donc tu appuie et

il continue à la ligne suivante:

des = [n for n in range(1,7)]      #crée une liste de 6 chiffres
lancer = random.sample(des, 3)     # crée une liste de 3 chiffre tirés au hasard parmi les 6
lancer.sort()                    # trie la liste de 3 chiffres en ordre croissant : 4,2,6 devient 2,4,6


print('\nRésultat : {}'.format(lancer))
imprime la liste des 3 chiffres

if(lancer == [1,2,4]):
: il suffit de tester si la liste est égale à 1,2,4

puisque grace au tri, 124, 142, 214, 241, 412, 421 deviennent forcément 1,2,4 !

Tu vois le truc ?
Messages postés
20
Date d'inscription
jeudi 17 décembre 2020
Statut
Membre
Dernière intervention
19 décembre 2020
>
Messages postés
20
Date d'inscription
jeudi 17 décembre 2020
Statut
Membre
Dernière intervention
19 décembre 2020

ok je viens d'essayer effectivement en enlevant Affiche_lancer du def de fin j'ai reussi
def affiche_lancer(a,b,c):
    
    print('+---+    ' , end='')
    print('+---+')
    return [a,b,c]  
def affiche_resultat():
    lancer = affiche_lancer(de(),de(),de())
    print(lancer)
    if (lancer==[1,2,4] or lancer==[1,4,2] or lancer==[2,1,4] or lancer==[2,4,1] or lancer==[4,2,1] or lancer==[4,1,2]):
         print('bien joué')
        
    else:                                          #Programme non fonctionnel
        print('dommage')                           #j'ai pas reussi à reprendre les mêmes paramètres que la fonction precedente
        return
                        


##One Main to rule them all

def main_421():
    presentation()
    poursuivre_le_jeu()
    affiche_resultat()

    


Merci tout le monde
Messages postés
30589
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
15 janvier 2021
7 227 >
Messages postés
20
Date d'inscription
jeudi 17 décembre 2020
Statut
Membre
Dernière intervention
19 décembre 2020

Tu devrais nous mettre l'ensemble de ton code. Et de l'énoncé. Car je pense que si on demande le nom du joueur c'est pour le réutiliser plus tard comme dans 'bien joué xxx'

Et ton poursuivre_le_jeu(), il devrait y avoir un input, et en fin dans le main, une boucle qui utilise le True/false pour relancer les dés plusieurs fois de suite.
Messages postés
20
Date d'inscription
jeudi 17 décembre 2020
Statut
Membre
Dernière intervention
19 décembre 2020
>
Messages postés
30589
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
15 janvier 2021

Jeu du ‘421’
L’objectif est de réaliser une version très simplifiée du ‘421’ consistant en un seul lancer de 3 dés 6 mais permettant une interaction avec l’utilisateur via le terminal.
Vous pourrez réutiliser des fonctions déjà écrites précédemment.

Commencez par créer un répertoire mini_jeux dans lequel vous sauvegarderez un script quatre_deux_un.py que vous allez compléter.

À la fin de ce script, définissez une fonction principale main_421() qui sera le point d’entrée du programme.
Les fonctions ci-après permettent de décomposer ce programme en fonctions plus simples, indépendantes les unes des autres et qui seront toutes utilisées dans cette fonction principale.

Fonctions propres au jeu du ‘421’
Définissez une fonction de() sans paramètre simulant le lancer d’un dé à 6 faces.

Définissez un prédicat est_un_421 acceptant 3 paramètres correspondant aux valeurs de chacun des dés et testant si ces valeurs forment un triplet 421 (dans n’importe quel ordre).

Interaction avec l’utilisateur
Il s’agit maintenant d’ajouter quelques fonctions permettant :

d’afficher des informations à destination de l’utilisateur
de lui demander de fournir certaines informations.
Définissez une fonction identification() sans paramètre qui demandera à l’utilisateur de s’identifier à l’aide d’un nom et qui renverra cette valeur sous forme d’une chaîne de caractères

Définissez une procédure presentation() acceptant en paramètre le nom de l’utilisateur. Elle affichera un message de bienvenue personnalisé et expliquera très brièvement le principe du jeu.

Définissez un prédicat poursuivre_le_jeu() qui a pour objectif de demander à l’utilisateur s’il souhaite tenter sa chance au jeu en lançant les dés. L’utilisateur répondra par exemple par « oui » ou « non », « yes » ou « no ». Ce prédicat renverra la valeur True si et seulement si le joueur désire poursuivre.

Affichage sur le terminal
La mise en forme des résultats va permettre au jeu d’être plus convivial.

Définissez une procédure affiche_lancer() acceptant trois paramètres correspondant aux valeurs de chacun des dés.
Cette fonction réalisera un affichage mis en forme des dés comme celui ci-dessous. Respectez strictement les caractères utilisés dans l’exemple :

>>> affiche_lancer(4, 3, 5)

+---+ +---+ +---+
| 4 | | 3 | | 5 |
+---+ +---+ +---+
Définissez enfin une procédure affiche_resultat() acceptant les trois mêmes paramètres et affichant un message de victoire ou d’échec suivant la réussite (peu probable en un essai !) du lancer.

One main to rule them all
Il vous reste à compléter la fonction principale point d’entrée de l’exécution du programme.
Elle appellera les fonctions que vous venez de définir dans un certain ordre.

Définissez une procédure main_421() sans paramètre.
Cette fonction devra, dans l’ordre :

procéder à l’identification de l’utilisateur
présenter le jeu
vérifier que le joueur souhaite jouer
si c’est bien le cas :
lancer chacun des dés
afficher le lancer
afficher le résultat du jeu (réussite ou non)
sinon : afficher un message adapté d’au revoir.
On sait comment lancer automatiquement l’ensemble des doctests lors de l’exécution du programme :

if __name__ == '__main__' :
import doctest
doctest.testmod(verbose = True)
On peut ajouter à ce bloc d’instruction conditionnelle l’appel à la fonction main_421(). Que va-t-il alors se passer lors de l’exécution de votre programme dans un terminal ?

Lancer l’exécution de votre programme dans un terminal.
Messages postés
20
Date d'inscription
jeudi 17 décembre 2020
Statut
Membre
Dernière intervention
19 décembre 2020
>
Messages postés
20
Date d'inscription
jeudi 17 décembre 2020
Statut
Membre
Dernière intervention
19 décembre 2020

##Fonctions propres au jeu du 421

from random import randint

def de():
    return randint(1,4)
print (de())


def est_un_421(de1,de2,de3):
   """
   Renvoie vrai si et seulement si deux dés forment un 42
    Paramètres : 
    - de1 : entier - un lancer de dé six
    - de2 : entier - un 2eme lancer de dé six
    - de3 : entier - un 3eme lancer de dé six
    Valeur de retour : booléen
   Contraintes : de1, de2 et de3 appartiennent à [1, 6]
   :Exemples:
   >>> est_un_421(4, 2, 1)
     True
   >>> est_un_421(2, 4, 1)
     True
   >>> est_un_421(1, 2, 4)
     True
   >>> est_un_421(2, 1, 4)
     True
   >>> est_un_421(4, 0, 6)
     False
   >>> est_un_421(5, 1, 4)
     False
    
    """
   if (de1 == 4 or de1==2 or de1==1) :
        if (de2==4 or de2==2 or de2==1) and de2 !=de1:
           if (de3== 4 or de3==2 or de3==1 ) and (de3!=de2) and (de3!=de1):
               return True
           else :
               return False
        else :
            return False
   else :
        return False
print(est_un_421(randint(1,6),randint(1,6),randint(1,6)))

## interaction avec l'utilisateur
def identification():
    nom = input('nom ? ')
    return (nom)

def presentation():
    print('\nBienvenue ! ' ,end='')
    identification()
    print(' le but du 421 est de lancé 3 dés et de sortir 4,2, et 1 ')

    


def poursuivre_le_jeu():
   """
   Renvoie vrai si et seulement si le joueur ecrit oui ou yes
    Valeur de retour : booléen
    Contrainte: accepter seulement oui, yes, non, no
   :Exemples:
   >>> poursuivre_le_jeu(oui)
     True
   >>> poursuivre_le_jeu(non)
     False
   >>> poursuivre_le_jeu(frfe)
     False
    
    """
   
   print('Voulez-vous jouer au jeu du 421?')
   if 'oui' or 'yes' :
      return True
   elif 'non' or 'no':
      return False
   
##Affichage sur le terminal

def affiche_lancer(a,b,c):
    
    print('+---+    ' , end='')
    print('+---+    ' , end='')
    print('+---+')
    print('| ' , end='')
    print(a , end='')
    print(' |    ' , end='')
    print('| ' , end='')
    print(b , end='')
    print(' |    ' , end='')
    print('| ' , end='')
    print(c , end='')
    print(' |    ')
    print('+---+    ' , end='')
    print('+---+    ' , end='')
    print('+---+')
    return [a,b,c]  
def affiche_resultat():
    lancer = affiche_lancer(de(),de(),de())
    print(lancer)
    if (lancer==[1,2,4] or lancer==[1,4,2] or lancer==[2,1,4] or lancer==[2,4,1] or lancer==[4,2,1] or lancer==[4,1,2]):
         print('bien joué')
        
    else:                                          
        print('dommage')                           
        return
                        


##One Main to rule them all

def main_421():
    presentation()
    poursuivre_le_jeu()
    affiche_resultat()
    
        

main_421()
Messages postés
20
Date d'inscription
jeudi 17 décembre 2020
Statut
Membre
Dernière intervention
19 décembre 2020
>
Messages postés
20
Date d'inscription
jeudi 17 décembre 2020
Statut
Membre
Dernière intervention
19 décembre 2020

Normalement mon programme répond au attente de l'exo ( la partir ou doit choisir si le joueur ou pas ne marche pas mais pas grave)
Messages postés
849
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
15 janvier 2021
96
ok, mais tu peux quand même simplifier comme ça:

au lieu de:

    if (lancer==[1,2,4] or lancer==[1,4,2] or lancer==[2,1,4] or lancer==[2,4,1] or lancer==[4,2,1] or lancer==[4,1,2]):


tu mets:

    lancer.sort()
    if (lancer==[1,2,4]):
        print('Bien joué !')
Messages postés
30589
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
15 janvier 2021
7 227
Que le programme résolve la problématique, c'est bien ;-) C'est la base.

Mais particulièrement dans un cours de programmation, on attend que le code corresponde aussi à la forme demandée.

Par rapport à l'énoncé, les fonctions devraient être indépendantes et toutes lancées dans le main(), pas imbriquées. J'ignore comment cela peut être présenté dans tes cours, mais moi dans le main() j'initialiserais des variables joueur et lancer avec les return des fonctions. Ainsi tu peux les passer en entrée aux autres fonctions appelées
joueur=identification()
presentation(joueur)
lancer=(de(),de(),de())
afficher_lancer(lancer)
afficher_resultat(lancer)


Puis ta ligne "Voulez-vous jouer au jeu du 421?" qui s'affiche sans demander la réponse de l'utilisateur, c'est nul. Et surtout l'énoncé demande d'utiliser le True/False pour lancer les dés, ou pas.

Messages postés
20
Date d'inscription
jeudi 17 décembre 2020
Statut
Membre
Dernière intervention
19 décembre 2020

C'est juste un exercice que je vais rendre comme ca , et je vais essayer de le refaire sans fonction imbriquées .

Et oui dans mon programme j'ai une fonction qui normalement demande si le joueur veut jouer ou pas mais ne marche pas .
Messages postés
849
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
15 janvier 2021
96 >
Messages postés
20
Date d'inscription
jeudi 17 décembre 2020
Statut
Membre
Dernière intervention
19 décembre 2020

regarde ma réponse ci dessous: tout marche bien, il y a meme une copie d'écran !
Messages postés
849
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
15 janvier 2021
96
hello lou,

Avec tes fonctions, ça peut donner ceci:
# -*- coding:Latin-1 -*-

from random import randint

def de():
    return randint(1,7)

def est_un_421(lancer):
    ''' '''

    if(lancer == [1,2,4]):
        return(True)
    else:
        return(False)

def identification():
    nom = input('Quel est ton nom ? ')
    return (nom)

def presentation():
    print('\n ******* Jeu du 421 *****\n')
    nom = identification()
    print('\nBienvenue', nom)
    print('\nle but du jeu est de lancer 3 dés et de sortir 4,2, et 1 ')

def poursuivre_le_jeu():
   """
   Renvoie vrai si et seulement si le joueur ecrit oui ou yes ou o ou y
   """

   rep = input('Voulez-vous jouer au jeu du 421 ? (oui, yes, o, y) : ')
   if(rep in ['oui', 'yes', 'o', 'y']):
      return True
   else:
      return False

def affiche_lancer(a,b,c):

    print('''\nC'est parti !\nLe lancé :''')
    print('\n+---+    ' , end='')
    print('+---+    ' , end='')
    print('+---+')
    print('| ' , end='')
    print(a , end='')
    print(' |    ' , end='')
    print('| ' , end='')
    print(b , end='')
    print(' |    ' , end='')
    print('| ' , end='')
    print(c , end='')
    print(' |    ')
    print('+---+    ' , end='')
    print('+---+    ' , end='')
    print('+---+')
    
    return[a,b,c]

def affiche_resultat():

    lancer = affiche_lancer(de(),de(),de())
    lancer.sort()

    if (est_un_421(lancer)):
         print('\nBien joué !!!\n')
    else:                                          
        print('\nAh, dommage ...\n')                           

def main_421():
    presentation()

    if(poursuivre_le_jeu()):
    	affiche_resultat()
    else:
    	print('\nBye !')

main_421()

input('entrée ...')


Résultat:

Messages postés
20
Date d'inscription
jeudi 17 décembre 2020
Statut
Membre
Dernière intervention
19 décembre 2020

Merci Phil, j'ai un peu près compris ton programme sauf la fonction poursuivre_le_jeu()
rep est une variable ?
et if (rep in (oui,yes ,o,y)) veut dire que seul c'est caractère sont autorisé pour un return True les autres return False si j'ai bien compris
Messages postés
849
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
15 janvier 2021
96
bonjour Lou,

rep est une variable qui reçoit donc la réponse 'yes' ou 'oui' ou 'o' ou 'y'

si tu tapes 'yes', rep est égal à 'yes'

ensuite

if(rep in ['oui', 'yes', 'o', 'y']):
c'est une façon plus courte de tester

si rep == 'yes' ou rep =='oui', etc ...

on teste si le contenu de rep est dans la liste ['oui', 'yes', 'o', 'y'], donc si il est égal à l'une de

ces 4 chaines de caractères, donc rep ne contient pas forcément 1 seul caractère

Donc si rep égal à l'une des 4, ca renvoie True (je veux jouer ...), sinon c'est que tu as tapé autre

chose comme 'non' ou 'n' par exemple et là ça renvoie False (je ne veux pas jouer ...)

Si tu tapes 'non', ça affiche 'Bye !' et le programme s'arrete

Une version plus courte et plus simple de ta fonction affiche_lancer:
def affiche_lancer(a,b,c):

    print('''\nC'est parti !\nLe lancé :''')

    print('\n+---+    +---+    +---+')
    print('| '+str(a)+' |    | '+str(b)+' |    | '+str(c)+' |')
    print('+---+    +---+    +---+')
    
    return[a,b,c]
Messages postés
20
Date d'inscription
jeudi 17 décembre 2020
Statut
Membre
Dernière intervention
19 décembre 2020

Ok je connaissais pas cette manière d'utiliser 'if' .
Du coup merci pour tout les explications que tu as pu me donner
Messages postés
849
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
15 janvier 2021
96
ok,

et que penses-tu de ma version simplifiée de afficher_lancer() ?

il faut toujours faire court et simple, et éviter les "usines à gaz" :-)
Messages postés
20
Date d'inscription
jeudi 17 décembre 2020
Statut
Membre
Dernière intervention
19 décembre 2020

C'est vrai que j'aurais pu y penser de ressembler les parties hautes ensemble et parties basses ensemble par contre la partie du milieu j'ai pas encore vu, je sais pas a quoi sert le + devant et derrière le 'str'
Messages postés
30589
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
15 janvier 2021
7 227 >
Messages postés
20
Date d'inscription
jeudi 17 décembre 2020
Statut
Membre
Dernière intervention
19 décembre 2020

Le + est utilisé pour concaténer un chaine littérale avec une variable, on pourrait faire
print('| ',str(a),' ')
mais la virgule est remplacée par un blanc. C'est souvent utile sur un input qui n'accepte qu'une seule valeur,
input('Bonjour '+nom+', voulez vous jouer ? ')
.
Messages postés
849
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
15 janvier 2021
96
On peut même faire une version plus "pythonesque" avec les formats,

ca évite la concaténation avec + :

print('| {} |    | {} |    | {} |'.format(a,b,c))


Au fait, un dernier point:

dans ta fonction de(), tu avais écrit
 return randint(1,4)
, donc tu ne

sortait que les faces 1 à 3 du dé

Dans ma version, j'ai mis :
 return randint(1,7)
pour sortir des chiffres

entre 1 et 6 ...
Messages postés
20
Date d'inscription
jeudi 17 décembre 2020
Statut
Membre
Dernière intervention
19 décembre 2020

Et bien merci pour ce cours de python avancé je m'en tacherai de m'en souvenir.
(Oui pour la fonction de() c'est pour faire des test j'ai corrigé ca.)