Problème de boucle for

Résolu/Fermé
spoiledog - Modifié le 19 mai 2021 à 15:24
yg_be Messages postés 23476 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 février 2025 - 31 mai 2021 à 20:59
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!")
A voir également:

7 réponses

yg_be Messages postés 23476 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 février 2025 Ambassadeur 1 568
19 mai 2021 à 10:22
bonjour,
commence peut-être par un programme plus simple, sans boucle et sans input, qui crée un dictionnaire.
0
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
Modifié le 19 mai 2021 à 11:44
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
Évidement, merci
0
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
19 mai 2021 à 13:25
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
Je vous remercie
0

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

Posez votre question
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
19 mai 2021 à 16:19
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
rey123456 Messages postés 4 Date d'inscription vendredi 28 mai 2021 Statut Membre Dernière intervention 31 mai 2021
29 mai 2021 à 00:36
au fait j'ai le même exercice , est ce que je peux avoir un coup de main de votre part?
0
rey123456 Messages postés 4 Date d'inscription vendredi 28 mai 2021 Statut Membre Dernière intervention 31 mai 2021
28 mai 2021 à 21:59
est ce que je peux avoir la correction de cet exercice? salut , je suis un novice dans python
0
yg_be Messages postés 23476 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 février 2025 1 568
29 mai 2021 à 08:42
si tu n'essaies pas de trouver une solution par toi-même, tu vas rester novice.
0
rey123456 Messages postés 4 Date d'inscription vendredi 28 mai 2021 Statut Membre Dernière intervention 31 mai 2021
31 mai 2021 à 20:57
oui j'ai éssayé mais mon code a beaucoup d'erreurs
0
yg_be Messages postés 23476 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 février 2025 1 568
31 mai 2021 à 20:59
peut-être alors en faisant d'abord des exercices plus simples?
0