Tu es sûr que tu as bien la ligne annee=int(annee) ? Tu ne t'es même pas trompé dans un nom ?
L'erreur telle que tu la décris et avec le morceau de code que tu donnes voudrait que annee soit une chaîne de caractères quand tu testes annee % 4 == 0.
le else et le elif font parties de la structure du if. Dans la console, pour "fermer" une structure (if..; if..else..; if..elif..else..; for...;while...; def...; etc) il faut appuyer sur entrée de manière à revoir le prompt de la console (>>>)
si tu mets ton code dans un fichier .py (en passant par IDLE par exemple), il n'y aura pas ce type de "soucis"
il est préférable que j'utilise pycharm à la place du IDLE
j'ai écrit ce code dans pycharm et ça marchait bien
le code:
espaces = ' ' *25 print('%s 12 rue du Homevent'%espaces) print('%s Landes Scintillantes'%espaces) print("%s Vent d'Ouest"%espaces) print() print() print('cher Monsieur,') print() print('permettez-moi de vous signaler que des tuiles manquent') print('sur le toit des toilettes du jardin.') print("le vent de la nuit dernière les a faites s'envoler.") print() print('salutations') print('Michel Line')
mais dans l'IDLE, ils m'ont affiché "syntax error: multiple statments foundwhile compiling a sindle statment"!!!!
merci d'avance
- Edité par HindMorsaoui 19 novembre 2020 à 21:28:34
si tu fais un copier/coller du code dans la console IDLE, ça va donner cette erreur (IDLE ne sais pas interpréter plusieurs lignes à la fois), mais si tu les rentres une à une, ça va marcher, ou si tu les mets dans un fichier .py ou via une fonction.
def affiche():
espaces = ' ' *25
print('%s 12 rue du Homevent'%espaces)
print('%s Landes Scintillantes'%espaces)
print("%s Vent d'Ouest"%espaces)
print()
print()
print('cher Monsieur,')
print()
print('permettez-moi de vous signaler que des tuiles manquent')
print('sur le toit des toilettes du jardin.')
print("le vent de la nuit dernière les a faites s'envoler.")
print()
print('salutations')
print('Michel Line')
cependant, message d'erreur quand je le réalise (version Python3.9)
>>> a=2
>>> if a > 0: # Si a est positif
... print("a est positif.")
... if a < 0:
File "<stdin>", line 3
if a < 0:
^
SyntaxError: invalid syntax
>>>
Bonjour à tous,
même problème que Samy,
pour pouvoir faire deux boucles if il faut que j'indente l'une dans l'autre, ce qui il me semble, n'a pas la même signfication en logique informatique.
ce qui ressemble à peu pres à quelques chose comme cela.
J'ai essayé sur Python 3.9 également. C'est vrai que ça donne une erreur. Si je tape Enter au lieu du second if, Python affiche correctement. Si je met un else et un autre print, Python ne fait rien tant que je n'ai pas tapé Enter.
Le Tout est souvent plus grand que la somme de ses parties.
Salut, D'abord, c'est plus une question sur Linux que Python. Emacs est un éditeur de Linux, et pas le standard. Tu parles de dossier .py, ce serait plutôt un fichier. Pour créer un dossier, il faut utiliser la commande mkdir Tu peux créer un fichier .py avec la commande touch. Je ne vois pas pourquoi Emacs refuserait de créer le fichier, mais ça fait trop longtemps que je ne l'ai pas utilisé. PS Je suis sur Windows mais j'ai déjà travaillé sur Unix.
Le Tout est souvent plus grand que la somme de ses parties.
a priori tu utilises le même nom de variables pour des choses différentes Fanta1 et Fanta2 sont une fois une StringVar() et ensuite (2 lignes en dessous) un entier qui identifie un OptionMenu. change le nom de la variable qui stocke l'identifiant de OptionMenu.
dans l'exemple donné, il faudra faire v.get() pour récupérer la valeur choisie
listeOptions = ('train', 'avion', 'bateau')
v = StringVar()
v.set(listeOptions[0])
om = OptionMenu(root, v, *listeOptions)
choix=v.get() #on récupère la valeur texte du choix
indice=listeOptions.index(choix) #on récupère l'indice correspondant dans la liste de création
dans une de mes fonctions qui convertit de décimale vers hexadécimal il n'y avait pas d'erreur juscequ'à que je la lance dans le code et il me dit qu'il y a une erreur sur la ligne avec le while car le signe > n'est pas approprié pour x . l'erreur qui apparaît c'est :"TypeError: '>' not supported between instances of 'str' and 'int' mais ducoup je sais qu'il me dise que ce n'est pas possible de mettre cela entre un str et un int et ce serait quoi?
dans une de mes fonctions qui convertit de décimale vers hexadécimal il n'y avait pas d'erreur juscequ'à que je la lance dans le code et il me dit qu'il y a une erreur sur la ligne avec le while car le signe > n'est pas approprié pour x . l'erreur qui apparaît c'est :"TypeError: '>' not supported between instances of 'str' and 'int' mais ducoup je sais qu'il me dise que ce n'est pas possible de mettre cela entre un str et un int et ce serait quoi?
Probablement que ta variable x récupère une chaîne et non un entier. Donc, en début de fonction, il faudrait écrire x=int(x). Au passage, ta fonction dec_hexa refait ce que la fonction Python standard hex fait.
Ta fonction ne convertit pas du décimal en hexadécimal, elle calcule la représentation hexadécimale d'un nombre.
C'est peut-être là la source de ta confusion : la fonction reçoit un nombre en argument et renvoie une chaîne de caractères.
Si tu as reconverti en int ta chaîne qui était en représentation décimale. ton r%16 te donne donc un chiffre entre 0 et 15 inclus. Il pourrait servir d'indice pour trouver le symbole hexadécimal comme suit: digit="0123456789abcdef"[r]
Le Tout est souvent plus grand que la somme de ses parties.
Euh j'ai une question j'ai créer un programme calculatrice sur python mais j'ai envie qu'enfaite il y a une boucle de 1 à 4 et que decque je met 5 sa me met "entrer votre premier nombre" à la place de au revoir
print ("1 for addition\n2 for subtraction\n3 for multiplication\n4 for division\n5 for quitter") number: int = int(input('Veillez entre votre type de calcul :')) number1 = input('Entrer votre premier nombre :') number2 = input('Entrer votre second nombre :')
while (number != 5):
if number == 1: #print('{} + {} = '.format(number1, number2)) print(number1+number2)
ttD'abord, tu ne convertis pas tes nombre qui sont des chaînes avec input() Il faut faire number1 = int(input("Entrez le premier nombre ")) Ensuite, ce n'est pas clair quel type de boucle tu veux faire. Veux-tu toujour garder la même opération ou changer d'opération à chaque fois? Ça pourrait ressembler à ceci: while operation:=int(input("1 for addition, 2 ... Enter to terminate") or 0): nombre1 = int(...) nombre2 = int(...) if operation == 1: # Faire l'addition et l'afficher. ...
Le Tout est souvent plus grand que la somme de ses parties.
entwanne — @entwanne — Un zeste de Python — La POO en Python — Notions de Python avancées — Les secrets d'un code pythonique
Le Tout est souvent plus grand que la somme de ses parties.
Le Tout est souvent plus grand que la somme de ses parties.
Le Tout est souvent plus grand que la somme de ses parties.
Découverte Python Doc Tkinter Les chaînes de caractères
entwanne — @entwanne — Un zeste de Python — La POO en Python — Notions de Python avancées — Les secrets d'un code pythonique
Le Tout est souvent plus grand que la somme de ses parties.
Le Tout est souvent plus grand que la somme de ses parties.