#1 Le 30/10/2007, à 15:00
- shune
Python - TypeError: 'int' object is unsubscriptable
Bonjour,
j'essaye d'apprendre à programmer python, je réalise mon premier projet et je suis bloquée par quelques choses que je ne comprends pas tres bien, une erreur:
TypeError: 'int' object is unsubscriptable
voici le bout de code:
p=[C,C,C,C,C,H,H,H,H,H,H,H,H,H,H,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O]
(...)
#k=0
for k in range(29):
if p[k]=='H':
p[k]='| H '
elif p[k]=='O':
p[k]='| O '
elif p[k]=='C':
p[k]='| C '
else:
p[k]='| '
(...)
et voila l'erreur que ça me renvoie:
if p[k]==int('H'):
TypeError: 'int' object is unsubscriptable
je suis sure que c'est idiot mais je n'arrive pas à comprendre, quelqu'un pourrait-il m'expliquer s'il vous plait?
Dernière modification par shune (Le 30/10/2007, à 15:02)
Hors ligne
#2 Le 30/10/2007, à 15:24
- bsheep
Re : Python - TypeError: 'int' object is unsubscriptable
Salut, tu essayes de faire un cast d'un caractere vers un entier or c'est impossible directement.
Il faut pour cela utiliser les fonctions suivantes:
chr(n) affiche un caractère à partir de son code numérique (jusqu'à 255)
ord("c") affiche le code numérique d'un caractère
Hors ligne
#3 Le 30/10/2007, à 15:36
- bipede
Re : Python - TypeError: 'int' object is unsubscriptable
Quand tu postes du code, place le entre deux balises code, ce sera plus lisible...
Sinon pour ton problème...
ta liste p contient des noms de variables ou des caractères ?
Si ce sont des caractères, il doivent être entre cotes ...
p=['C','C','C','C','C','H','H','H','H','H','etc']
Ensuite l'erreur semble indiquer que p n'est pas une liste, mais un integer...
N'aurais-tu pas redéfini p dans la suite de ton code ?
EDIT: Fais attention à ce que tu recopies lorsque tu cherches de l'aide... Ca peut tromper...
Dernière modification par bipede (Le 30/10/2007, à 15:38)
Desktop: MSI - Intel® Core™ i5-3330 CPU @ 3.00GHz × 4 - RAM 8 go- Kubuntu 21.04 - Système sur SSD 64 Go - /home sur HDD 500 Go.
Laptop: DELL Inspiron-15 3567 - Intel® Core™ i5-7200 CPU @ 2.50GHz × 4 - RAM 8 go - HDD 1 To - Ubuntu 20.10 avec /home séparé.
Mon site: Les contributions du bipède
Hors ligne
#4 Le 30/10/2007, à 15:48
- shune
Re : Python - TypeError: 'int' object is unsubscriptable
en fait mon bout de code c'est cela:
C="C"
H="H"
O="O"
def pioche_():
p=[C,C,C,C,C,H,H,H,H,H,H,H,H,H,H,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O]
#shuffle(p)
return p
print pioche_()
k=0
for k in range(29):
if p[k]=='H':###ici ###
p[k]='| H '
elif p[k]=='O':
p[k]='| O '
elif p[k]=='C':
p[k]='| C '
else:
p[k]='| '
(...)
pardon pour la mise en forme maintenant je saurais!
en fait je penses avoir résolu -_- j'avais laisser ma def pioche_() et apres je l'appelais pas...
c'est cela?
Dernière modification par shune (Le 30/10/2007, à 15:57)
Hors ligne
#5 Le 30/10/2007, à 16:01
- bipede
Re : Python - TypeError: 'int' object is unsubscriptable
en fait mon bout de code c'est cela:
C="C" H="H" O="O" def pioche_(): p=[C,C,C,C,C,H,H,H,H,H,H,H,H,H,H,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O] #shuffle(p) return p print pioche_() k=0 for k in range(29): if p[k]=='H':###ici ### p[k]='| H ' elif p[k]=='O': p[k]='| O ' elif p[k]=='C': p[k]='| C ' else: p[k]='| ' (...)
pardon pour la mise en forme maintenant je serais
es-tu sûre que au lieu de k=0, tu n'as pas p=0 dans ton code ?
Car tu devrais déjà avoir une autre erreur (p n'est pas défini) avant d'avoir celle là.
En effet, p est défini dans la fonction pioche_(), et est invisible pour le reste du code, sauf si tu remplaces
print pioche_()
par
p = pioche_()
Desktop: MSI - Intel® Core™ i5-3330 CPU @ 3.00GHz × 4 - RAM 8 go- Kubuntu 21.04 - Système sur SSD 64 Go - /home sur HDD 500 Go.
Laptop: DELL Inspiron-15 3567 - Intel® Core™ i5-7200 CPU @ 2.50GHz × 4 - RAM 8 go - HDD 1 To - Ubuntu 20.10 avec /home séparé.
Mon site: Les contributions du bipède
Hors ligne
#6 Le 30/10/2007, à 17:49
- shune
Re : Python - TypeError: 'int' object is unsubscriptable
merci de vos réponses
Hors ligne
#7 Le 30/10/2007, à 21:03
- reeth
Re : Python - TypeError: 'int' object is unsubscriptable
C'est une question de variable locale / globale je crois. Dans ton def, il y a un p local (qui n'appartiens pas au reste du programme), donc tu ne peux l'utiliser directement. Ce que tu souhaites utiliser dans ton programme est la valeur retournée par ta fonction def, et donc il faut que tu affectes une variable globale à ton programme qui reprenne la valeur retournée par ton def.
Je ne sais pas si je suis bien clair mais je crois que c'est comme cela que ça fonctionne. Pour vérifier, tu peux toujours aller jeter un coup d'œil sur le bouquin de G. Swinnen.
Hors ligne
#8 Le 31/10/2007, à 17:34
- scholi
Re : Python - TypeError: 'int' object is unsubscriptable
en faite un:
"| ".join(p) serait pas 5 fois plus rapide?
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
Hors ligne
#9 Le 31/10/2007, à 18:47
- bipede
Re : Python - TypeError: 'int' object is unsubscriptable
en faite un:
"| ".join(p) serait pas 5 fois plus rapide?
Faut la laisser découvrir...
Desktop: MSI - Intel® Core™ i5-3330 CPU @ 3.00GHz × 4 - RAM 8 go- Kubuntu 21.04 - Système sur SSD 64 Go - /home sur HDD 500 Go.
Laptop: DELL Inspiron-15 3567 - Intel® Core™ i5-7200 CPU @ 2.50GHz × 4 - RAM 8 go - HDD 1 To - Ubuntu 20.10 avec /home séparé.
Mon site: Les contributions du bipède
Hors ligne
#10 Le 31/10/2007, à 22:12
- scholi
Re : Python - TypeError: 'int' object is unsubscriptable
en faite c'était une manière, assez maladroite je l'avoue, de lui montrer cette fonction monstre cool. Désolé si elle l'a mal pris.
Sinon allez voire www.pythonchallenge.com
Dernière modification par scholi (Le 31/10/2007, à 22:13)
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
Hors ligne
#11 Le 31/10/2007, à 22:43
- aleph
Re : Python - TypeError: 'int' object is unsubscriptable
> en faite c'était une manière, assez maladroite je l'avoue, de lui montrer cette fonction monstre cool. Désolé si elle l'a mal pris.
Ce qui est surtout maladroit, c'est que tu n'as pas saisi l'essence de ce qu'il ou elle voulait faire.
Un "join" n'est absolument d'aucune utilité.
#12 Le 31/10/2007, à 22:46
- scholi
Re : Python - TypeError: 'int' object is unsubscriptable
oui ça j'avais capté. Mais bon en attendant on avait déjà répondu à sa question... Donc ce qui est encore plus maladroit c'est ta remarque
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
Hors ligne
#13 Le 31/10/2007, à 23:09
- aleph
Re : Python - TypeError: 'int' object is unsubscriptable
> Mais bon en attendant on avait déjà répondu à sa question...
Où ?
Je veux bien admettre que le problème exposé est assez alambiqué et mal expliqué et que son auteur n'a donné de suite. Erreur de sa part. Je n'ai vu aucune réponse satisfaisante. Au plus proche de ce que l'on peu comprendre, c'est assez le cas type d'un filtrage map avec une fonction lambda, bien loin d'un join.