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 :

syntaxe pour afficher l'élément d'une liste


Sujet :

Python

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    September 2023
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : September 2023
    Messages : 3
    Points : 1
    Points
    1
    Par défaut syntaxe pour afficher l'élément d'une liste
    Bonjour à tous

    Je souhaite faire travailler mes élèves (seconde) sur les chansons de Cold Play en utilisant python

    J'ai écris ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    parachute = {
     
    'date' : [2000],
    'chanson' : ["dont panic", "shiver","spies"],
    'durée': [2.17,4.59,5.18]
     
    }
     
    print (parachute)
    La console répond :
    {'date': [2000], 'chanson': ['dont panic', 'shiver', 'spies'], 'durée': [2.17, 4.59, 5.18]}
    Je comprends

    Maintenant je ne saisi pas quel code écrire pour avoir comme seule réponse la durée de la chanson "Shiver" soit 4.59 ???

    Merci du temps que vous consacrerez à me répondre.
    Cela ne sera certainement pas ma seule question...

    Jean Francois

  2. #2
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    February 2006
    Messages
    12 281
    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 : February 2006
    Messages : 12 281
    Points : 29 953
    Points
    29 953
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par jeff60 Voir le message
    Maintenant je ne saisi pas quel code écrire pour avoir comme seule réponse la durée de la chanson "Shiver" soit 4.59 ???
    print(parachute["durée][1]).

    Après si le truc doit effectuer une pseudo-recherche...
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for (c, d) in zip(parachute["chanson"], parachute["durée"]):
    	if c == "shiver": print(d)

    Citation Envoyé par jeff60 Voir le message
    Je souhaite faire travailler mes élèves (seconde) en utilisant python
    Donc tu es prof de Python ? Ou bien tu es prof et tu veux utiliser Python pour t'aider à enseigner ta matière ?
    Dans les deux cas, connaitre Python sera quand-même un prérequis plutôt indispensable. Certes moins dans le second cas que dans le premier mais quand-même pas à négliger.
    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]

  3. #3
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    February 2003
    Messages
    1 541
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : February 2003
    Messages : 1 541
    Points : 1 920
    Points
    1 920
    Par défaut
    Bonjour,

    un intérêt particulier à ce que la date soit une liste ne contenant qu'un entier au lieu d'être un simple entier ?

  4. #4
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    September 2013
    Messages
    1 940
    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 : September 2013
    Messages : 1 940
    Points : 4 086
    Points
    4 086
    Par défaut
    bonjour

    Déjà ton arborescence est "particulière" ... normalement, pour un album, c'est plus:
    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
    album = {
      'nom': "parachutes",
      'date' : 2000,
      'chansons': [
         {
             'titre': 'dont panic',
             'duree': 2.17
         },
         {
             'titre': 'shiver',
             'duree': ,4.59,
         },
         {
             'titre': 'spies',
             'duree': 5.18,
         },
      ]
    }
     
    albums_de_machin = []
    albums_de_machin.append(album)
     
    print(albums_de_machin[0]["chansons"][0])
    print(albums_de_machin[0]["chansons"][1])
     
    # Et si je recherche une chanson dans un album, une possibilité est :
    recherche = "shiver"
    trouve = [c for c in album["chansons"] if c["titre"] == recherche]
    print(trouve)
    $moi= ( !== ) ? : ;

  5. #5
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    February 2006
    Messages
    12 281
    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 : February 2006
    Messages : 12 281
    Points : 29 953
    Points
    29 953
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par jeff60 Voir le message
    Citation Envoyé par papajoker Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    album = {
       'nom': "parachutes"
       ...
    Ah? Je ne suis pas familier de Cold Play et je ne savais pas que l'album se nommait "parachutes" sinon effectivement j'aurais aussi réagi à ce nom. Je me suis dit "pourquoi sa variable se nomme parachute" sans aller plus loin.

    Donc en Python (comme dans les autres langages), on ne nomme pas ses variables du nom de leur contenant mais par rapport au type de ce contenant. Si je dois gérer des pommes, j'écrirai fruit="pommes" et non pomme="pommes". Parce que le contenu d'une variable peut... varier (d'où le terme) mais pas son nom. Et le jour où mes fruits deviennent des oranges, ça évitera de devoir bloquer à relire sans comprendre un code où il y a écrit pomme="oranges".

    Mis à part cette remarque, la structure de papajoker est quand-même beaucoup plus "logique". Plutôt que de benner en vrac des chansons d'un côté et des durées de l'autre (et s'il faut rajouter un 3° élément comme par exemple le compositeur ?) il associe dans une structure et la chanson et sa durée (et s'il faut rajouter le compositeur ce sera assez simple).
    Et de là, la recherche est immédiate. Plus besoin de réassocier les éléments comme je l'ai fait via zip() puiqu'ils sont déjà associés dès le départ.
    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
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    June 2008
    Messages
    20 953
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

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

    Informations forums :
    Inscription : June 2008
    Messages : 20 953
    Points : 36 134
    Points
    36 134
    Par défaut
    Citation Envoyé par jeff60 Voir le message
    Maintenant je ne saisi pas quel code écrire pour avoir comme seule réponse la durée de la chanson "Shiver" soit 4.59 ???
    chanson et duree sont 2 listes où les informations sont associées par la relation "à le même indice" i.e. récupérer l'indice de "shiver" dans chanson pourra être utilisé pour récupérer sa durée dans duree. Normalement, c'est là qu'on ouvre son tuto sur les listes ou la documentation pour voir quelle méthode appliquer aux listes pour cela... .index fait l'affaire mais on peut faire autrement.

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

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    September 2023
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : September 2023
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Bonjour à tous.
    Je vous remercie de votre réponse. C'est super sympa.

    Pour situer les choses, je sui prof de physique en lycée et non devons faire de l'initiation à python dans le cadre de SNT. Je suis tres loin d'etre un pro. Je maitrise à peut pres les instructions de base mais c'est tout.
    Pour sortir des programme de pendu, années bissextiles... je voudrais gérer des playlists. Du genre; je cherche une chanson de rock qui date de 2000 et qui dure moins de 3 minutes... Alors je pensais faire des listes avec des infos sur les chansons et faire un tri dans tout ca...

    Mais ca me semble pas si simple que je pensais. Grace à vous je vais m'accrocher. JE compile tout ce que vous m'avez dit et je reviens certainement poser des questions ici.

    En tout cas, merci à tous.

    Jean Francois

  8. #8
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    September 2013
    Messages
    1 940
    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 : September 2013
    Messages : 1 940
    Points : 4 086
    Points
    4 086
    Par défaut
    Citation Envoyé par jeff60 Voir le message
    je cherche une chanson de rock qui date de 2000 et qui dure moins de 3 minutes
    Exemple (non optimal) avec des filtres. Particularité : retourne des chansons et non des albums malgré la même structure que exemple 1

    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
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    artiste = []
    artiste.append({
      'nom': "parachutes",
      'date' : 2000,
      'type' : "rock",
      'chansons': [
         {
             'titre': 'dont panic',
             'duree': 2.17
         },
         {
             'titre': 'shiver',
             'duree': 4.59
         },
         {
             'titre': 'spies',
             'duree': 5.18
         },
      ]
    })
    artiste.append({
      'nom': "Everyday Life",
      'date': 2018,
      'chansons': [
         {
             'titre': 'Sunrise',
             'duree': 2.31
         },
         {
             'titre': 'Church',
             'duree': 3.50
         },
      ]
    })
    print(*artiste, sep="\n")
     
     
    def recherche(artiste, titre="", annee=0, duree_max=0, duree_mini=0, style=""):
        # retourne un tableau de chansons avec détail
        chansons = []
        for album in artiste:
            for chanson in album["chansons"]:
                chanson["album"] = album["nom"]
                chanson["date"] = album["date"]
                chanson["type"] = album.get("type","?")
                chansons.append(chanson)
        # nous avons maintenant un tableau de chaque chansons avec détails
        # print(chansons)
     
        # filtres
        if annee:
            chansons = [c for c in chansons if c["date"] == annee]
     
        if style:
            chansons = [c for c in chansons if c["type"] == style]
     
        if titre:
            chansons = [c for c in chansons if c["titre"] == titre]
     
        if duree_max:
            chansons = [c for c in chansons if c["duree"] <= duree_max]
        if duree_mini:
            chansons = [c for c in chansons if c["duree"] >= duree_mini]
     
        return chansons
     
     
     
     
    print("---------", "\ncherche un titre...")
    trouver = recherche(artiste, titre="shiver")
    print("Trouvé:", trouver)
     
    print("---------", "\ncherche une duree maxi...")
    trouver = recherche(artiste, duree_max=2.7)
    print("Trouvé:")
    print(*trouver, sep="\n")
     
     
    print("---------", "\ncherche une annee et une duree maxi...")
    trouver = recherche(artiste, annee=2018, duree_max=2.9)
    print("Trouvé:")
    print(*trouver, sep="\n")
     
    print("---------", "\ncherche un type et une duree mini...")
    trouver = recherche(artiste, style="rock", duree_mini=4)
    print("Trouvé:")
    print(*trouver, sep="\n")
    Citation Envoyé par jeff60 Voir le message
    Mais ca me semble pas si simple que je pensais
    C'est justement la structure des données bien pensée (en fonction des besoins) qui va rendre plus simple le programme. Et une option est d'utiliser la poo (classes chanson, album, artiste ?)
    $moi= ( !== ) ? : ;

  9. #9
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    February 2006
    Messages
    12 281
    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 : February 2006
    Messages : 12 281
    Points : 29 953
    Points
    29 953
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par papajoker Voir le message
    Exemple (non optimal) avec des filtres.
    Rendons tout ça plus "open" en abusant des bienfaits de Python...
    Code python : 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
    import math
    def recherche(artiste, **kwargs):
    	# retourne un tableau de chansons avec détail
    	chansons = []
    	for album in artiste:
    		for chanson in album["chansons"]:
    			chanson["album"] = album["nom"]
    			chanson["date"] = album["date"]
    			chanson["type"] = album.get("type","?")
    			chansons.append(chanson)
    	# nous avons maintenant un tableau de chaque chansons avec détails
    	# print(chansons)
     
    	# filtres
    	filtre=dict()
    	filtre["annee"] = [c for c in chansons if c["date"] == kwargs.get("annee")]
    	filtre["style"] = [c for c in chansons if c["type"] == kwargs.get("style")]
    	filtre["titre"] = [c for c in chansons if c["titre"] == kwargs.get("titre")]
    	filtre["duree_max"] = [c for c in chansons if c["duree"] <= kwargs.get("duree_max", -math.inf)]
    	filtre["duree_min"] = [c for c in chansons if c["duree"] >= kwargs.get("duree_min", math.inf)]
    	return filtre
     
     
    cherche="shiver"
    print("---------", "\ncherche un titre %s..." % cherche)
    trouver = recherche(artiste, titre=cherche)
    print("Trouvé:", trouver)
     
    cherche=2018
    print("---------", "\ncherche une année %s..." % cherche)
    trouver = recherche(artiste, annee=cherche)
    print("Trouvé:", trouver)
     
    cherche={"annee" : 2000, "titre" : "Church"}
    print("---------", "\ncherche une année %s ou un titre %s..." % (cherche["annee"], cherche["titre"]))
    trouver = recherche(artiste, **cherche)
    print("Trouvé:", trouver)
    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]

  10. #10
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    September 2013
    Messages
    1 940
    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 : September 2013
    Messages : 1 940
    Points : 4 086
    Points
    4 086
    Par défaut
    Pour une version plus "open" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    def recherche_open(artiste, **kwargs):
        ...
        for filtre, valeur in kwargs.items():
            if filtre == "duree_max":
                chansons = [c for c in chansons if c["duree"] <= valeur]
            elif filtre == "duree_mini":
                chansons = [c for c in chansons if c["duree"] >= valeur]
            else:
                chansons = [c for c in chansons if c.get(filtre) == valeur]
     
        return chansons
    donc ici, on peut faire un recherche_open(artiste, compositeur="mozart", duree_mini=4) quelle que soit le contenu du fichier data.

    ps: oui, je suis resté avec un ET (uniquement parceque la structure d'entrée n'est pas la même que celle de sortie : sans doute pas bon...)
    peut-être meilleur ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    chansons = get_all_chansons(artiste)
    resultat = cherche(chansons, annee=2000)
    resultat = cherche(resultat, duree_max=4)
    resultat = cherche(resultat, style="rock")
    print(resultat)
    $moi= ( !== ) ? : ;

  11. #11
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    July 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Alimentation

    Informations forums :
    Inscription : July 2006
    Messages : 3 437
    Points : 6 273
    Points
    6 273
    Par défaut
    Hello,

    On peut être plus open en utilisant l'API de Deezer et sa base de données par exemple,

    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
    import deezer
    import requests
    import json
     
    client = deezer.Client()
    albums = client.search_albums("parachutes")
    tracklist = {}
    for album in albums:
        if album.artist.name == "Coldplay":
            url = album.tracklist
            tracklist = requests.get(url=url).json()["data"]
            break
     
    results = {"tracks":[]}
    for data in tracklist:
        results["tracks"].append({"title": data["title"], "duration": data["duration"]})
     
    print(json.dumps(results, indent=2, ensure_ascii=False))
    qui donne un résultat sympa

    {
    "tracks": [{
    "title": "Don't Panic",
    "duration": 136
    },
    {
    "title": "Shiver",
    "duration": 304
    },
    {
    "title": "Spies",
    "duration": 318
    },
    {
    "title": "Sparks",
    "duration": 227
    },
    {
    "title": "Yellow",
    "duration": 266
    },
    {
    "title": "Trouble",
    "duration": 273
    },
    {
    "title": "Parachutes",
    "duration": 46
    },
    {
    "title": "High Speed",
    "duration": 256
    },
    {
    "title": "We Never Change",
    "duration": 249
    },
    {
    "title": "Everything's Not Lost (Includes Hidden Track 'Life Is For Living')",
    "duration": 436
    }
    ]
    }
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  12. #12
    Nouveau Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    September 2023
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : September 2023
    Messages : 3
    Points : 1
    Points
    1
    Par défaut remerciements
    Merci à tous ceux qui m'ont proposé leur code, c'est vraiment bien sympa.
    Je vais essayer de comprendre tout ça et de le proposer aux élèves.

    Encore merci et à bientot.

  13. #13
    Membre chevronné
    Homme Profil pro
    Enseignant
    Inscrit en
    June 2013
    Messages
    1 585
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : June 2013
    Messages : 1 585
    Points : 2 062
    Points
    2 062
    Par défaut
    Si cela t'intéresse, j'ai "animé" il y a quelques années des séances d'initiation à Python pour les profs de maths, physique et SVT en lycée...
    J'avais un support et je peux te le fournir...
    Pas d'aide par mp.

Discussions similaires

  1. Utiliser un controle utilisateur pour afficher les éléments d'une liste
    Par MiniCesc dans le forum Windows Presentation Foundation
    Réponses: 12
    Dernier message: 05/10/2010, 16h13
  2. afficher les éléments d'une liste
    Par jane40 dans le forum Débuter
    Réponses: 1
    Dernier message: 18/01/2009, 23h22
  3. Afficher un élèment d'une liste d'objet
    Par tanguy.L dans le forum Langage
    Réponses: 5
    Dernier message: 29/01/2008, 13h09
  4. Réponses: 12
    Dernier message: 04/03/2007, 12h43
  5. Correction pour ajouté un élément dans une liste
    Par Rifton007 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 27/01/2007, 12h09

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