Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Aide | Shop Recherche
1472 connectés 

  FORUM HardWare.fr
  Programmation
  Python

  Erreur : "'int' object is not subscriptable"

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Erreur : "'int' object is not subscriptable"

n°2343921
jyggalag
Posté le 04-01-2020 à 11:45:31  profilanswer
 

Bonjour, je viens ici car j'ai un certain problème.  
Je travaille sur un programme Python permettant de vérifier un code ISBN à 13 chiffres pour savoir si celui-ci est correct.  
 
Cependant, lorsque j'exécute le programme afin de voir s'il fonctionne bien, le message d'erreur suivant s'affiche :  
 

Code :
  1. if chiffre[0]==9:
  2. TypeError: 'int' object is not subscriptable


 
Voici par ailleurs le code en entier avec la ligne concernée surlignée :
 

Code :
  1. ISBN=input("Le code ISBN est " )
  2. for chiffre in range(1):
  3.     if chiffre!=9:
  4.         print("Le code ISBN est incorrect (premier chiffre)." )
  5. for chiffre in range(2,2):
  6.     if chiffre!=7:
  7.         print("Le code ISBN est incorrect (second chiffre)." )
  8. for chiffre in range(3,3):
  9.     if chiffre!=8:
  10.         if chiffre==9:
  11.             print("Le code ISBN ne peux pas avoir 9 comme troisième chiffre pour le moment, il est donc incorrect." )
  12.         else:
  13.             print("Le code ISBN est incorrect (troisème chiffre)." )
  14. for chiffre in range(0,12):
  15.     if chiffre[0]==9:
  16.         if chiffre[1]==7:
  17.             if chiffre[2]==8:
  18.                 PremPartie=chiffre[0]+chiffre[1]+chiffre[2]+chiffre[3]+chiffre[4]+chiffre[5]+chiffre[6]+chiffre[7]+chiffre[8]+chiffre[9]+chiffre[10]+chiffre[11]
  19.                 DeuxPartie=2*(chiffre[1]+chiffre[3]+chiffre[5]+chiffre[7]+chiffre[9]+chiffre[11])
  20.                 TroiPartie=PremPartie+DeuxPartie
  21.                 for i in TroiPartie(2,2):
  22.                     QuatPartie=i
  23.                 CinqPartie=10-QuatPartie
  24. if chiffre[12]!=CinqPartie:
  25.     print("Le code ISBN est incorrect (clé)." )
  26. else:
  27.         print("Le code ISBN est correct." )


 
J'ai bien regardé sur le Net ainsi que sur ce forum même, mais rien n'a pu vraiment m'aider à comprendre mon erreur.

mood
Publicité
Posté le 04-01-2020 à 11:45:31  profilanswer
 

n°2343960
dede_sav
Posté le 05-01-2020 à 13:34:45  profilanswer
 

Bonjour,
 
Chiffre est un int et non pas un tableau. Tu ne peux donc pas faire chiffre[X].
Regarde tes conditions sur les lignes 3, 6 et 9.  
 
dd

n°2343970
jyggalag
Posté le 05-01-2020 à 15:56:42  profilanswer
 

C'est ce que j'ai cru comprendre, mais dans ce cas, comment pourrais-je résoudre cette situation ?  [:jyggalag]

n°2344018
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 06-01-2020 à 11:36:03  profilanswer
 

jyggalag a écrit :

C'est ce que j'ai cru comprendre, mais dans ce cas, comment pourrais-je résoudre cette situation ?  [:jyggalag]


 
Pour reprendre ton code :  
 
- ligne 1 : tu récupères ton ISBN dans la variable ISBN, mais ensuite tu n'en fais plus rien.
 
- lignes 2, 5, 8, 14 : tu fais totalement fausse route en utilisant range() pour découper ton ISBN. Range() te fournit une suite d'entiers selon les bornes que tu fournis en argument, ce n'est pas du tout la même chose. Si tu veux découper ton ISBN, tu dois slicer la chaine de caractères contenue dans ta variable ISBN.
 
Exemples :
 

Code :
  1. >>> ISBN = "1234567890ABC"
  2. >>> ISBN[2:2]
  3. '3'
  4. >>> ISBN[2:5]
  5. '345'
  6. >>> ISBN[9:]
  7. '0ABC'


 
https://docs.python.org/3/tutorial/ [...] ml#strings


---------------
J'ai un string dans l'array (Paris Hilton)
n°2344053
jyggalag
Posté le 06-01-2020 à 17:57:53  profilanswer
 

Hmm. Je vais essayer, cela résoudra normalement mon problème. Merci encore !  [:jyggalag]  
 
(Je mettrai le topic en "résolu" une fois que j'aurai achevé mon script)
 
Edit : Après correction du script, celui-ci m'amène à une nouvelle erreur. Voici d'abord le bloc concerné, ainsi que la ligne concernée surlignée en rouge.
 

Code :
  1. if ISBN[0]==9:
  2.     if ISBN[1]==7:
  3.         if ISBN[2]==8:
  4.             PremPartie=ISBN[0]+ISBN[1]+ISBN[2]+ISBN[3]+ISBN[4]+ISBN[5]+ISBN[6]+ISBN[7]+ISBN[8]+ISBN[9]+ISBN[10]+ISBN[11]
  5.             DeuxPartie=2*(ISBN[1]+ISBN[3]+ISBN[5]+ISBN[7]+ISBN[9]+ISBN[11])
  6.             TroiPartie=PremPartie+DeuxPartie
  7.             QuatPartie=map(int,str(TroiPartie))
  8.             CinqPartie=QuatPartie[1]
  9.             SixPartie=10-CinqPartie


 
Et voici l'erreur :  
 

Code :
  1. if ISBN[12]!=SixPartie:
  2. NameError: name 'SixPartie' is not defined


 
Il me faudrait une réponse absolument avant demain...  [:jyggalag]


Message édité par jyggalag le 06-01-2020 à 18:28:22
n°2344080
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 06-01-2020 à 22:44:48  profilanswer
 

Ta variable SixPartie est définie uniquement si les 3 conditions sont remplies (lignes 1, 2 et 3)

 

Si ton code ne passe pas dans ces 3 conditions, alors aucune de tes variables xxxPartie ne sera définie, dont SixPartie. Pour qu'elle soit définie, ton ISBN doit commencer par "978".

 

Tu dois initialiser tes 6 variables avant les 3 tests :

 
Code :
  1. PremPartie = None
  2. DeuxPartie = None
  3. # ainsi de suite jusqu'à SixPartie
  4.  
  5. if ISBN[0] == 9:
  6.   if ISBN[1] == 7:
  7.      if ISBN[2] == 8:
  8.         PremPartie = (...)
  9.         # etc
 

Et au passage, modifie tes bornes pour éviter tes if imbriqués :

 
Code :
  1. if ISBN[0:3] == '978':
  2. (...)


Message édité par Harkonnen le 06-01-2020 à 23:08:10

---------------
J'ai un string dans l'array (Paris Hilton)
n°2344092
jyggalag
Posté le 07-01-2020 à 09:26:48  profilanswer
 

Oh. Merci bien !  [:jyggalag]  
 
Ca devrait suffir, normalement.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Python

  Erreur : "'int' object is not subscriptable"

 

Sujets relatifs
[PHP] - nesbot/Carbon: diffForHumans() amène une erreur 500Erreur Excerpt - Impossible d'enregistrer une page du thème
[Python] Erreur de Syntaxe try:Erreur macro python
Erreur import librairie pythoninterprétation d'une erreur java
Erreur code Formulaire de saisie excelErreur de segmentation inconnue
Erreur "DDERR_SURFACELOST"VBA - Erreur Exécution
Plus de sujets relatifs à : Erreur : "'int' object is not subscriptable"


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite) / Groupe LDLC / Shop HFR