Problème de boucle for

Résolu
spoiledog -  
yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
Bonjour,
Je voudrais créer une liste de dictionnaire de la forme:
compositeurs = [ f'comp' :'Mozart', 'a naiss' :1756, 'a mort' :1791g,f'comp' :'Beethoven', "a naiss' :1770, ...g, f'Haendel' : ... g, ... ]
Je pense que j'ai un problème de boucle for au niveau de la méthode append (ça traite seulement le dernier enregistrement fait par l'utilisateur).
Je vous remercie d'avance pour votre aide.
print("Bienvenu!!")
try:
    nc = int(input("Combien de compositeurs voulez vous saisir?: "))
    compositeurs = {}
    dic_nom_comp = {}
    dic_a_naiss = {}
    dic_a_mort = {}
    liste_comp = []
    for i in range(nc):
        lib_c = 'comp'
        nom_comp = input("Donner le nom du compositeur: ")
        dic_nom_comp[lib_c] = nom_comp
        lib_an = 'a_naiss'
        a_naiss = int(input("Donner l'année de naissance du compositeur: "))
        dic_a_naiss[lib_an] = a_naiss
        lib_am = 'a_mort'
        a_mort = int(input("Donner l'année de décès du compositeur: "))
        dic_a_mort[lib_am] = a_mort
        for j in (dic_nom_comp, dic_a_naiss, dic_a_mort):
            compositeurs.update(j)
        liste_comp.append(compositeurs)
    print(liste_comp)
except ValueError:
    print("Veuillez vérifier votre saisie!")

7 réponses

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    bonjour,
    commence peut-être par un programme plus simple, sans boucle et sans input, qui crée un dictionnaire.
    0
  2. Phil_1857 Messages postés 1883 Date d'inscription   Statut Membre Dernière intervention   169
     
    Bonjour spoiledog,

    Il faut savoir que dans un dictionnaire, les clés sont uniques
    donc on ne peut pas avoir 2 clés 'comp' dans un même dictionnaire

    Si tu ajoutes 2 fois 'comp', seule la dernière valeur est prise en compte

    dic_nom_comp['comp'] = 'toto'
    dic_nom_comp['comp'] = 'titi'


    dic_nom_comp ressemble à ça : {'comp':'titi'}

    Aufait:

    print("Bienvenue !!")


    pas

    print("Bienvenu!!")
    0
    1. spoiledog
       
      Évidement, merci
      0
  3. Phil_1857 Messages postés 1883 Date d'inscription   Statut Membre Dernière intervention   169
     
    Au lieu de faire une liste de dictionnaires, tu pourrais même faire un tableau à 2 dimensions
    nc lignes et 3 colonnes (nom, année de naissance, année de décès)
    qu'en penses-tu ?

    print("Bienvenue !!")
    try:
        nc = int(input("\nCombien de compositeurs voulez vous saisir?: "))
        compositeurs = [[None for j in range(3)] for i in range(nc)]
    
        for i in range(nc):
            nom_comp = input("\nDonner le nom du compositeur: ")
            compositeurs[i][0] = nom_comp
    
            a_naiss = int(input("Donner l'année de naissance du compositeur: "))
            compositeurs[i][1] = a_naiss
    
            a_mort = int(input("Donner l'année de décès du compositeur: "))
            compositeurs[i][2] = a_mort
    
        print('\nCompositeur  naissance    mort\n')
        for i in range(nc):
        	for j in range(3):
        		print("{:<12s}".format(str(compositeurs[i][j])), end = ' ')
        	print('\n')
    
    except ValueError:
        print("Veuillez vérifier votre saisie!")

    0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. Phil_1857 Messages postés 1883 Date d'inscription   Statut Membre Dernière intervention   169
     
    Tu peux même afficher les messages d'erreurs précis au lieu de:

    print("Veuillez vérifier votre saisie!")


    on peut faire ça:

    import sys
    
    try:
        nc = int(input("\nCombien de compositeurs voulez vous saisir?: "))
        .........
    
    except ValueError:
        print(sys.exc_info()[1])
    0
    1. rey123456 Messages postés 4 Statut Membre
       
      au fait j'ai le même exercice , est ce que je peux avoir un coup de main de votre part?
      0
  6. rey123456 Messages postés 4 Statut Membre
     
    est ce que je peux avoir la correction de cet exercice? salut , je suis un novice dans python
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      si tu n'essaies pas de trouver une solution par toi-même, tu vas rester novice.
      0
  7. rey123456 Messages postés 4 Statut Membre
     
    oui j'ai éssayé mais mon code a beaucoup d'erreurs
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      peut-être alors en faisant d'abord des exercices plus simples?
      0