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 :

match / case (multiple): confirmation du fonctionnement


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Février 2024
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Février 2024
    Messages : 2
    Par défaut match / case (multiple): confirmation du fonctionnement
    Bonjour
    Petite question concernant les instructions match ... case (pour un case multiple)

    Quand on rentre dans un case (que la condition est vérifié), cela exclue la possibilité de rentrer dans un autre case, c'est bien cela ?

    Exemple tout a fait théorique

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    choix = "xxx"
     
    match choix:
    	case "001" | "xxx":
    		instructions aaa (plusieurs instructions)
    	case "002" | "xxx":
    		instructions bbb (plusieurs autres instructions)
    On est OK que le second case ne sera pas executé, et que le seul moyen de passer dans les deux groupes d'instruction est de passer par des if

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    choix = "xxx"
     
    if (choix == "xxx" or choix == "001"):
    	instructions aaa (plusieurs instructions)
    if (choix == "xxx" or choix == "002"):
    	instructions bbb (plusieurs autres instructions)
    Je n'ai pas d'exemple concret, mais imaginons une recette de pizza correspondant à un choix
    choix "001" correspondant à une 4 fromages
    choix "002" correspondant à une reine
    choix "xxx" correspondant à la recette de la pate

    Pour un choix "xxx", vous réalisez la pate, comme ça, et ainsi (farine, eau, ...)
    Pour la 4 fromages, vous ajoutez cela et ceci (fromage de chèvre, ...)
    Pour la reine, vous ajoutez champignon, jambon, ...

    Le "xxx" est commun à plusieurs "cas" (case) de pizza

    Donc, pas possible de passer par un case avec valeur multiple possible.
    Seule solution, plusieurs if
    C'est bien cela ?

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 545
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 545
    Par défaut
    on est OK, un autre moyen est de prévoir le cas "xxx" et d'y lancer toutes les instructions nécessaires

  3. #3
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    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 835
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par jmv69800 Voir le message
    Quand on rentre dans un case (que la condition est vérifié), cela exclut la possibilité de rentrer dans un autre case, c'est bien cela ?
    Exact

    Citation Envoyé par jmv69800 Voir le message
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (choix == "xxx" or choix == "001"):
    	instructions aaa (plusieurs instructions)
    if (choix == "xxx" or choix == "002"):
    	instructions bbb (plusieurs autres instructions)

    ...imaginons une recette de pizza correspondant à un choix
    choix "001" correspondant à une 4 fromages
    choix "002" correspondant à une reine
    choix "xxx" correspondant à la recette de la pate

    Pour un choix "xxx", vous réalisez la pate, comme ça, et ainsi (farine, eau, ...)
    Pour la 4 fromages, vous ajoutez cela et ceci (fromage de chèvre, ...)
    Pour la reine, vous ajoutez champignon, jambon, ...

    Le "xxx" est commun à plusieurs "cas" (case) de pizza
    Ton exemple ne correspond pas à ton code. Dans ton code (où les parenthèses sont inutiles), le choix "xxx" entraine l'exécution de "aaa" et "bbb". Si on applique à ton exemple, cela veut dire que "xxx" amènera la pâte + la 4 fromages et la reine.
    Pour coder ton exemple il faut 2 variables: la première qui spécifie la pizza choisie et la seconde qui indique si on veut la recette de la pâte ou pas.
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    pate=input("Voulez-vous la recette de la pate ou pas")
    if pate == "O":
    	...vous réalisez la pate, comme ça, et ainsi (farine, eau, ...)
     
    pizza=input("Quelle pizza ?")
    match pizza:
    	case "4 fromage": ...
    	case "reine": ...
    # match
    Et là fatalement on voit que traiter la pâte ou pas est bien un cas à part qui n'a rien à faire dans le choix des pizzas...

    Citation Envoyé par jmv69800 Voir le message
    Je n'ai pas d'exemple concret
    Un peu normal car dans ton code, l'unique variable "choix" semble dévolue à deux domaines distincts à traiter en parallèle, ce qui n'est pas possible...
    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]

  4. #4
    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
    bonjour
    Citation Envoyé par jmv69800 Voir le message
    Exemple tout a fait théorique
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    (plusieurs instructions)
    Pour comprendre, pourquoi rester à la théorie, c'est la moindre des choses de faire des petits tests après avoir lu la doc.

    "plusieurs instructions" Donc en fait il faut passer ces paramètres dans match en plus du case
    Un exemple qui colle à ton exemple (Attention l'ordre des "cases" est extrêmement important !) :
    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
    pizs = (
        "rouge champi cuite poivrée",
        "rouge poisson cuite",
        "rouge mousse crue",
    )
    for piz in pizs:
        match piz.split():
            case ["rouge", "poisson", *plus]:
                print("couleur rouge et mer, avec:", *plus)
                # preparer("poisson", "110°")
            case ["rouge", aliment, cuisson] if cuisson == "crue":
                print("couleur rouge Pas cuite !", aliment)
                # preparer(aliment, "0°")
            case ["rouge", *plus]:
                print("couleur rouge, avec:", *plus)
                # preparer(plus[0], plus[1])
    je peux appeler dans chaque bloc "case" une fonction preparer(aliment, cuisson)
    il faut voir un match comme une succession de elif, si on rentre dans un bloc, on ne teste plus les suivants

Discussions similaires

  1. [MySQL] update de cases à cocher multiples qui ne fonctionne pas
    Par mimosa21 dans le forum PHP & Base de données
    Réponses: 15
    Dernier message: 09/12/2012, 11h28
  2. [MySQL] Suppression avec des case a cocher ne fonctionne pas
    Par runcafre91 dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 13/02/2010, 18h02
  3. Réponses: 5
    Dernier message: 16/08/2009, 16h32
  4. message confirm() ne fonctionne pas
    Par artotal dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 13/07/2008, 11h39
  5. return confirm ne fonctionne pas sous IE7
    Par mona dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 07/05/2008, 21h49

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