CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[PYTHON] Besoin d'aide en listes

Helyom
Helyom
Niveau 14
02 janvier 2017 à 19:49:06

Bonsoir, j'ai un problème avec un programme

def AddSujet():
    nbSujets=int(input("Saisissez le nombre de sujets (20 maximum): "))
    if (nbSujets < 21):
        listeSujets=nbSujets*[None]
        for k in range (nbSujets):
            listeSujets[k]=input("Entrez le sujet numéro "+str(k+1)+": ")
    else:
        print("Le nombre de sujets est trop élevé, retour au menu")
    print(listeSujets)

vous pouvez remarquer ici la dernière ligne qui me sert à afficher la liste à la fin pour tester mon code et je remarque qu'il tourne sans problème, pour mon test la liste renvoie les termes suivants:

 ['Phy', 'Maths', 'Anglais']

Le problème arrive après:

def EntrerNote():
    nomSujet=input("De quelle matière voulez-vous entrer les notes? ")
    matiere=listeSujets.index(nomSujet)
    print("Vous avez sélectionné la matière suivante: ",listeSujets[matiere])

Quand j'exécute cette partie du programme en entrant comme valeur le mot Phy, j'ai cette erreur qui apparaît:

 Traceback (most recent call last):
  File "C:\Users\Didier\Desktop\Informatique\notes.py", line 86, in <module>
    EntrerNote()
  File "C:\Users\Didier\Desktop\Informatique\notes.py", line 41, in EntrerNote
    matiere=listeSujets.index(nomSujet)
ValueError: 'Phy' is not in list 

Vous comprenez l'origine de mon problème? Le terme Phy est clairement dans la liste comme précisé plus haut, d'où vient mon problème?

Merci à ceux qui prendront le temps de m'aider :hap:

Helyom
Helyom
Niveau 14
02 janvier 2017 à 20:21:01

Personne ne sait d'où vient le problème? ça peut pas venir du fait que comme c'est des fonctions les variables et les listes utilisées ne sont pas réutilisables en dehors?

Blaff4
Blaff4
Niveau 10
02 janvier 2017 à 21:39:06

Le 02 janvier 2017 à 20:21:01 Helyom a écrit :
Personne ne sait d'où vient le problème? ça peut pas venir du fait que comme c'est des fonctions les variables et les listes utilisées ne sont pas réutilisables en dehors?

C'est un peu ça, oui.

Tu as une variable globale listeSujets en dehors de tes deux fonctions, n'est-ce pas ?
Je dis ça car sinon, tu aurais un autre type d'erreur.

En fait dans ta fonction AddSujet() quand tu fais listeSujets=nbSujets*[None], tu crées une nouvelle liste. Après quoi, dès que tu feras appel à listeSujets (toujours à l'intérieur de ta fonction) et lorsque tu ajoutes tes variables, tu ne modifies en rien ta liste globale.

Donc ensuite, lorsque tu entres dans EntrerNote(), tu accèderas à la variable listeSujets qui n'aura pas été modifiée et qui ne contiendra donc pas de Phy.

Message édité le 02 janvier 2017 à 21:39:41 par Blaff4
Helyom
Helyom
Niveau 14
02 janvier 2017 à 21:54:52

Le 02 janvier 2017 à 21:39:06 Blaff4 a écrit :

Le 02 janvier 2017 à 20:21:01 Helyom a écrit :
Personne ne sait d'où vient le problème? ça peut pas venir du fait que comme c'est des fonctions les variables et les listes utilisées ne sont pas réutilisables en dehors?

C'est un peu ça, oui.

Tu as une variable globale listeSujets en dehors de tes deux fonctions, n'est-ce pas ?
Je dis ça car sinon, tu aurais un autre type d'erreur.

En fait dans ta fonction AddSujet() quand tu fais listeSujets=nbSujets*[None], tu crées une nouvelle liste. Après quoi, dès que tu feras appel à listeSujets (toujours à l'intérieur de ta fonction) et lorsque tu ajoutes tes variables, tu ne modifies en rien ta liste globale.

Donc ensuite, lorsque tu entres dans EntrerNote(), tu accèderas à la variable listeSujets qui n'aura pas été modifiée et qui ne contiendra donc pas de Phy.

Le 02 janvier 2017 à 21:39:06 Blaff4 a écrit :

Le 02 janvier 2017 à 20:21:01 Helyom a écrit :
Personne ne sait d'où vient le problème? ça peut pas venir du fait que comme c'est des fonctions les variables et les listes utilisées ne sont pas réutilisables en dehors?

C'est un peu ça, oui.

Tu as une variable globale listeSujets en dehors de tes deux fonctions, n'est-ce pas ?
Je dis ça car sinon, tu aurais un autre type d'erreur.

En fait dans ta fonction AddSujet() quand tu fais listeSujets=nbSujets*[None], tu crées une nouvelle liste. Après quoi, dès que tu feras appel à listeSujets (toujours à l'intérieur de ta fonction) et lorsque tu ajoutes tes variables, tu ne modifies en rien ta liste globale.

Donc ensuite, lorsque tu entres dans EntrerNote(), tu accèderas à la variable listeSujets qui n'aura pas été modifiée et qui ne contiendra donc pas de Phy.

J'ai enfin compris mon erreur, merci infiniment.

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Programmation
  • Création de sites web
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment