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 à l'essai
    Homme Profil pro
    Chômeur professionnel
    Inscrit en
    Novembre 2020
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Algérie

    Informations professionnelles :
    Activité : Chômeur professionnel

    Informations forums :
    Inscription : Novembre 2020
    Messages : 122
    Points : 14
    Points
    14
    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 chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 578
    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 578
    Points : 2 022
    Points
    2 022
    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 expérimenté
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    872
    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 : 872
    Points : 1 525
    Points
    1 525
    Billets dans le blog
    4
    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...
    #Rien de nouveau sous le soleil, tout est vanité comme courir après le vent!
    Developpement pour Android avec Python3/Kivy/Buildozer

  4. #4
    Expert éminent

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 301
    Points : 6 781
    Points
    6 781
    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
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 711
    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 711
    Points : 31 028
    Points
    31 028
    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 expérimenté
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    872
    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 : 872
    Points : 1 525
    Points
    1 525
    Billets dans le blog
    4
    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()
    #Rien de nouveau sous le soleil, tout est vanité comme courir après le vent!
    Developpement pour Android avec Python3/Kivy/Buildozer

  7. #7
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 711
    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 711
    Points : 31 028
    Points
    31 028
    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 sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    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 136
    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 136
    Points : 4 533
    Points
    4 533
    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"):
    $moi= ( !== ) ? : ;

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