Faudrait peut-être arreter de poster vos problèmes sur ce sujet, qui n'est pas fait pour ça, ce n'est pas un topic poubelle, …
…, ça devient pénible à force.
- Edité par Mad scientist le 2 décembre 2015 à 13:21:41
lLolLic avant de poser une question, vérifie ton code sinon tu apprendras rien. Première ligne, il manque une parenthèse. Et enlève ton str, cherche à savoir ce que te renvois un INPUT. Tu comprendras que ton str ne sert pas dans ce cas ci.
Si quelqu'un sait faire une petite fiche sur le "X" object is not subscriptable, je suis preneur !!
TypeError / "X" object is not (subscriptable | callable | iterable | …)
Exemple:
>>> x = 25
>>> a = x[0]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'int' object is not subscriptable
Pourquoi Python lève cette exception ?
Python utilise le Duck Typing, c'est à dire que le fait qu'un objet soit utilisable dans un contexte donné est déterminé par les comportements qu'il supporte plus que par son type (par exemple, un objet supportant l'accès à des éléments avec un index (subscriptable), un objet pouvant être appelé, comme une fonction, (callable), …).
L'erreur vient du fait que vous utilisez un objet ne supportant pas certains comportements attendus (par exemple vous essayez d'accéder à un élément ayant un certain index d'un objet de type int, comme dans le code donné en exemple).
Il faut donc s'assurer que les objets que l'on utilise supportent bien les comportements auquels on s'attend.
Comment modifier son code en conséquence ?
En utilisant des objets ayant un type approprié. Si je reprend l'exemple donné plus haut:
>>> x = [25]
>>> a = x[0]
25
Si vous êtes l'auteur de la classe, il faut que vous implémentez les méthodes spéciales nécessaires (voir le Data Model de Python donné dans les liens).
>>> 5 * range(2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for *: 'int' and 'range'
Pourquoi Python lève cette exception ?
L'une des opérandes utilisée dans l'expression posant problème n'a pas le type attendu. Voir plus haut pour une explication d'un cas particulier (certainement le plus courant) de cette erreur.
Cette erreur indique souvent que vous essayez de faire quelque chose qui n'a pas de sens, comme dans l'exemple donné plus haut.
Comment modifier son code en conséquence ?
En utilisant une valeur ayant un type compatible avec ce qui est attendu.
Bonjour a tous, je suis un debutant dans le developpement python. tout d'abord je tiens a m'excuser si je ne suis pas au bon endroit pour poser mon problème. le problème est le suivant: dans le but de faire communiquer deux ordinateurs j'ai fais deux scripts. Le premier,celui du client(qui fonctionne) et le second (server.py), celui du serveur qui me renvoit l'erreur suivante: "bash: ./server.py: /usr/local/bin/python3.5^M: bad interpreter: No such file or directory "
ma question est: quelle est l'erreur et comment puis-je la resoudre. Merci d'avance
Ce n'est pas vraiment une erreur de Python, mais plutôt bash qui n'a pas réussi à trouver l'interpréteur que tu lui a donné. À mon avis c'est parce que tu as des caractères (peut-être invisibles) en trop (^M).
Sinon on préfère généralement utiliser #!/usr/bin/env python3.5 pour localiser l'interpréteur de manière un peu plus portable. Parce que moi, mon interpréteur se trouve dans /usr/bin, pas /usr/local/bin.
- Edité par Mad scientist 15 février 2016 à 12:18:59
Tu as quoi en faisant env python3.5 (avec bash) ? Si tu n'as rien (No such file or directory), essaye de faire export PATH=$PATH:/usr/local/bin puis de relancer ton programme, ou bien env PATH=$PATH:/usr/local/bin ./server.py.
- Edité par Mad scientist 15 février 2016 à 13:48:58
Bonjour a tous j'ai finalement resolus le problème Mad tu avais raison c'etait un problème du bash le fichier etait au format dos donc fallait le convertir
au format unix en tapant la commande suivante dans le bash : dos2unix server.py
Ce qui explique le caractère invisible (^M -> Carriage return, retour à la ligne au format DOS -> Carriage return + Line feed, au format Unix -> Line feed).
Par contre vu que tu ne postait plus de réponse je pensais que ton problème était résolu, du coup je t'avais un peu oublié, désolé.
bonsoir a tous, en poursuivant mon apprentissage de python je suis tombé sur les Threads. Dans le but de resoudre le problème de fonction bloquantes,
et toujour dans la programmation reseau j'ai creé deux threards qui seront executés côté client. Le soucis c'est que malgré le soin que je porte a la vérification des indentations j'ai le message suivant:
class Threadreception(Thread): ^ IndentationError: expected an indented block
voici le code des threads:
class Threadreception(Thread): def __init__(self,connexion): Thread.__init__(self) self.connexion = connexion
def run(self): while True: message_r = self.connexion.recv(1024).decode() print(message_r) if message_r in ["fin",""]: self.close()
class Threademission(Thread): def __init__(self,connexion): Thread.__init__(self) self.connexion = connexion
def run(self): while True: message_s = input("message: ") self.connexion.send(message_s.encode()) if message_s in ["fin",""]: self.close()
ma question est : pourquoi j'obtiens ce message alors que les indentations sont (a mon avis) respectées?
Tu te trompes d'endroit pour poster. Ici c'est un lieu où on vient simplement regarder les erreurs courantes. Si tu ne trouves pas la réponse, alors c'est sur le forum principal qu'il faut poster ta question.
Re-bonjour, dans le cadre d'un projet en ISN on a décidé de faire une petite calculatrice qui fait étude de fonction, statistiques etc... On y a intégré une interface graphique en .py. Le soucis c'est que j'aimerais lancer mon interface graphique depuis mon application est ce que vous pouvez m'aider svp? J'ai cherché sur google mais je ne retombe que sur des erreurs. Prenons un exemple. Si mon fichier a pour chemin
Ô pauvre petit post-it, piétiné par ces ignares illettrés - incapables qu'ils sont, de lire les règles d'un forum ou ne serait-ce que le premier message d'un sujet - et abandonné par la modération...
Bonjour à tous, j'ai une erreur dans mon petit programme. Je reproduisais l'exemple du cours sur les structures conditionnels, forme complète if, else, et elif dont voici l'exemple :
>>> a = 5
>>> if a > 0: # Si a est positif
... print("a est positif.")
... if a < 0: # a est négatif
... print("a est négatif.")
Mais le problème c'est que dès je fais entrée après la ligne 3 cela me met une erreur et je ne comprend pas puisque dans la ligne 3 que j'ai recopié je vois pas ce qui pourrais gêner. Voici ce que cela me met :
J'ai bien compris qu'il y avait une erreur de syntaxe à la ligne 3 mais je ne vois pas du tout laquelle.
Je vous remercie par avance de vos explications ^^
- Edité par thuringwethilmit 24 février 2016 à 14:36:32
# Programme écrit en Python3 # Il permet de savoir si trois longueur peuvent former un triangle et les caractéristique de celui-ci (rectangle, isocèle ou équilatéral)
print("Veuillez saisir les données suivantes : ")
a = int(input("Premier coté : ")) b = int(input("Deuxième coté : ")) c = int(input("Troisième coté : "))
if (a < 0): a = int(input("Veuillez de nouveau entré ce coté mais positif cette fois : ")) elif (b < 0): b = int(input("Veuillez de nouveau entré ce coté mais positif cette fois : ")) elif (c < 0): c = int(input("Veuillez de nouveau entré ce coté mais positif cette fois : ")
if a == b or a == c or b == c : <== ICI print("Ce triangle est isocèle.") elif (a == b) & (a == c): print("Ce triangle est équilatéral.") elif (s1 == t2) or (s2 == t1) or (s3 == t): print("Ce triangle est rectangle.")
Lorsque j'exécute mon programme, l'interpréteur python me dit, là où j'ai écris ICI, SyntaxError : Invalid Syntax
Bonjour à tous, j'ai dû créer un programme pour un projet bac isn
or dès la 1ere classe du programme l'image arriere plan (que nous avons crée avec le logiciel gimp) ne s'affiche pas, et nous ne trouvons pas l'erreur cela marque " raise RuntimeError('Too early to create image')
quelqu'un saurait il nous aider sur ce qu'il y aurait à transformer
from tkinter import * import random import time
class Jeu: def _init_(self): self.tk = Tk() self.tk.title("albert s'echappe") self.tk.resizable(0, 0) self.tk.wm_attributes("-topmost", 1) self.canvas = Canvas(self.tk, width=500, height=500, \ highlightthickness=0) self.canvas.pack() self.tk.update() self.hauteur_canevas = 500 self.largeur_canevas = 500 self.ap = PhotoImage(file="arriere-plan.gif") larg = self.ap.width() haut = self.ap.height() for x in range(0, 5): for y in range(0, 5): self.canvas.create_image(x * larg, y * haut, \ image=self.ap, anchor='nw') self.creations = [] self.enfonction = True
def boucle_principale(self): while 1: if self.enfonction == True: for creation in self.creations: creation.deplacer() self.tk.update_idletasks() self.tk.update() time.sleep(0.01)
def deplacer(self): self.animer() if self.y < 0: self.compte_sauts += 1 if self.compte_sauts > 20: self.y = 4 if self.y > 0: self.compte_sauts -= 1 co = self.coords() gauche = True droite = True haut = True bas = True tombe = True if self.y > 0 and co.y2 >= self.jeu.hauteur_canevas: self.y = 0 bas = False elif self.y < 0 and co.y1 <= 0: self.y = 0 haut = False if self.x > 0 and co.x2 >= self.jeu.largeur_canevas: self.x = 0 droite = False elif self.x < 0 and co.x1 <= 0: self.x = 0 gauche = False for creation in self.jeu.creations: if creation == self: continue co_creation = creation.coords() if haut and self.y < 0 and collision_haut(co, co_creation): self.y = -self.y haut = False if bas and self.y > 0 \ and collision_bas(self.y, co, co_creation): self.y = co_creation.y1 - co.y2 if self.y < 0: self.y = 0 bas = False haut = False if bas and tombe and self.y == 0 \ and co.y2 < self.jeu.hauteur_canevas \ and collision_bas(1, co, co_creation): tombe = False if gauche and self.x < 0 and collision_gauche(co, co_creation): self.x = 0 gauche = False if creation.finjeu: self.jeu.enfonction = False if droite and self.x > 0 and collision_droite(co, co_creation): self.x = 0 droite = False if creation.finjeu: self.jeu.enfonction = False if tombe and bas and self.y == 0 \ and co.y2 < self.jeu.hauteur_canevas: self.y = 4 self.jeu.canvas.move(self.image, self.x, self.y)
class CreationPorte(Creation): def _init_(self, jeu, image_photo, x, y, largeur, hauteur): Creation._init_(self, jeu) self.image_photo = image_photo self.image = jeu.canvas.create_image(x, y, \ image=self.image_photo, anchor='nw') self.coordonnees = Coords(x, y, x + (largeur / 2), y + hauteur) self.finjeu = True
Site personnel : Julien Gidel - AutoMate - PHPresentation