IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Chapitre 35. fonction next


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Chômeur professionnel
    Inscrit en
    Novembre 2020
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Algérie

    Informations professionnelles :
    Activité : Chômeur professionnel

    Informations forums :
    Inscription : Novembre 2020
    Messages : 122
    Par défaut Chapitre 35. fonction next
    wesh les gars,

    j'ai ce code au chapitre 35 du bouquin. On me demande de decrypter le code pour revisiter ce que j'ai appris les chapitres d'avant.
    J'ai pas très bien compris l'avantage de mettre "next" plutôt que de stocker directement dans une variable.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
     
    from sys import exit
     
    def gold_room():
        print("This room is full of gold. How much do you take?")
     
        next = input("> ")
        if "0" in next or "1" in next:
            how_much = int(next)
        else:
            dead("Man, learn to type a number.")
     
        if how_much < 50:
            print("Nice, you're not greedy, you win!")
            exit(0)
        else:
            dead("You greedy bastard!")
     
     
    def bear_room():
        print("There is a bear here.")
        print("The bear has a bunch of honey.")
        print("The fat bear is in front of another door.")
        print("How are you going to move the bear?")
        bear_moved = False
     
        while True:
            next = input("> ")
     
            if next == "take honey":
                dead("The bear looks at you then slaps your face off.")
            elif next == "taunt bear" and not bear_moved:
                print("The bear has moved from the door. You can go through it now.")
                bear_moved = True
            elif next == "taunt bear" and bear_moved:
                dead("The bear gets pissed off and chews your leg off.")
            elif next == "open door" and bear_moved:
                gold_room()
            else:
                print("I got no idea what that means.")
     
     
    def cthulhu_room():
        print("Here you see the great evil Cthulhu.")
        print("He, it, whatever stares at you and you go insane.")
        print("Do you flee for your life or eat your head?")
     
        next = input("> ")
     
        if "flee" in next:
            start()
        elif "head" in next:
            dead("Well that was tasty!")
        else:
            cthulhu_room()
     
     
    def dead(why):
        print(why, "Good job!")
        exit(0)
     
     
    def start():
        print("Type 'left' to take the left door. Type 'right' to take the right door.")
     
        next = input("> ")
     
        if next == "left":
            bear_room()
        elif next == "right":
            cthulhu_room()
        else:
            dead("You stumble around the room until you starve.")
     
    start()

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 603
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 603
    Par défaut
    next est une variable.

    Elle reçoit le contenu saisi au clavier par l'utilisateur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    In [1]: next = input('> ')
    > toto
     
    In [2]: print(next, type(next))
    toto <class 'str'>
     
    In [3]:

  3. #3
    Membre Expert
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    923
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Paysan à 3 francs six sous
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2018
    Messages : 923
    Billets dans le blog
    8
    Par défaut
    Bonjour,
    Citation Envoyé par Yuseph Voir le message
    J'ai pas très bien compris l'avantage de mettre "next" plutôt que de stocker directement dans une variable.
    Je ne comprends pas ce que tu veux dire.... next est déjà une variable.

    édit: grillé par Arioch

    @Yuseph: C'est quoi comme bouquin? Je trouve l'usage de exit() pas très python...

  4. #4
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Salut,

    Il faut éviter d'utiliser le nom d'une fonction built-in pour ses variables références.
    https://docs.python.org/3/library/functions.html#next

  5. #5
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 832
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par Hominidé Voir le message
    Je trouve l'usage de exit() pas très python...
    Sisi, c'est une fonction autorisée => https://docs.python.org/fr/3/library...ight=exit#exit
    https://www.delftstack.com/fr/howto/python/python-exit/
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  6. #6
    Membre Expert
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    923
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Paysan à 3 francs six sous
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2018
    Messages : 923
    Billets dans le blog
    8
    Par défaut
    Oui cela est autorisé (tout comme global() ^^). Je me suis mal exprimé c'est dans dans le cas présent que je trouve son emploie pas très lisible (donc pas très python).
    à la rigueur, je ferais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    def truc():
        for _ in range(1, 10):
            print('Fait ceci, fait cela in truc')
            if _ == 3:
                return True
     
    compteur = 0
    while True:
        compteur += 1
        print('compteur', compteur)
        if compteur == 3:
            if truc():
                exit()

  7. #7
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 832
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Hominidé Voir le message
    Je me suis mal exprimé c'est dans dans le cas présent que je trouve son emploie pas très lisible (donc pas très python).
    Ah oui, dans le dead() tu veux dire...
    C'est vrai que "traditionnellement" on ne doit utiliser exit() que dans le main() (ou comme tu le montres, dans le corps principal du programme).
    Mais là je vois un peu ça comme une espèce de "surcharge". Au lieu de quitter, on explique en plus pourquoi on quitte et on quitte. Bon c'est pas forcément primordial mais si seule la fonction "dead" contient le exit() et si ensuite tout passe par dead, ça devient plus acceptable...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  8. #8
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    Citation Envoyé par Hominidé Voir le message
    Je me suis mal exprimé c'est dans dans le cas présent que je trouve son emploie pas très lisible (donc pas très python).
    Vu la structure du programme, difficile de s'en passer (voir la récursion dans "start" de temps en temps). Sinon, il faut hiérarchiser et écrire un code plus structuré.

    Je ne sais pas quel est la motivation du bouquin que lit le PO, mais ce genre de construction au chapitre 35 laisse penser qu'on est plutôt dans une approche ludique de la programmation.

    Mais si arrivé au chapitre 35, on ne sait pas trop ce que sont les variables... soit le bouquin est mauvais soit le PO a survolé nombre de chapitres.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  9. #9
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 323
    Par défaut
    salut
    Citation Envoyé par Yuseph Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if "0" in next or "1" in next:
    pas trop "python" ce code surtout pour un "livre" de cours

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if next in ("0", "1"):
    # on peut même ajouter un filtre minimum, par exemple
    #if next.strip() in ("0", "1"):

Discussions similaires

  1. Penser en C++ chapitre 14 exercice 9
    Par bertry dans le forum Débuter
    Réponses: 4
    Dernier message: 13/10/2011, 11h21
  2. Ne rien afficher
    Par rockbiker dans le forum DirectX
    Réponses: 3
    Dernier message: 20/05/2003, 18h02
  3. [debutante] [JDBComboBox]rien à l'affichage
    Par Lina dans le forum JBuilder
    Réponses: 3
    Dernier message: 22/11/2002, 13h31
  4. Pouvez vous m'aider a resoudres ces 3 exercices
    Par algorithmique dans le forum Algorithmes et structures de données
    Réponses: 11
    Dernier message: 09/08/2002, 17h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo