Bonsoir,
J'ai une erreur python dont je n'arrive pas à trouver l'origine
elif numero_gagnant % 2 == nombre_mise % 2:
TypeError: not all arguments converted during string formatting
Si quelqu'un savait de quoi il s'agit,
Merci,
SR
Bonsoir,
J'ai une erreur python dont je n'arrive pas à trouver l'origine
elif numero_gagnant % 2 == nombre_mise % 2:
TypeError: not all arguments converted during string formatting
Si quelqu'un savait de quoi il s'agit,
Merci,
SR
Bonsoir,
Comment sont créées tes variables numero_gagnant et nombre_mise ?
Je dis ça parce-que si je teste sur mon interpréteur, ça me donne une erreur si par exemple j'essaye de faire une opération numérique avec une chaîne de caractères...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 >>> "ldfj"%2 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: not all arguments converted during string formatting
En gros j'ai repris le corrigé du livre de vincent le goff septembre 2011 apprenez à programmer en python en voulant simplifier la solution de la page 92 dont voici le code
et sur ce code, j'ai cette erreur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 import os from random import randrange from math import ceil argent = 1000 continuer_partie = True print("vous vous installez à la tablette de roulette avec" , argent , "$") nombre_mise = -1 nombre_mise = input ("taper le nombre sur lequel vous voulez miser (entre 0 et 49) : ") mise = 0 mise = input ("taper le montant de votre mise : ") numero_gagnant = randrange(50) print ("la roulette tourne....... ..... et s'arrete sur le numero" , numero_gagnant) if numero_gagnant == nombre_mise : print ("felicitations ! vous obtenez" , mise * 3, "$ !") argent += mise * 3 elif numero_gagnant % 2 == nombre_mise % 2: mise = ceil(mise * 0.5) print ("vous avez mise sur la bonne couleur vous obtenez" , mise , "$") argent += mise else : print ("desole l'ami ce n'est pas pour cette fois; vous perdez votre mise ") argent -= mise if argent <= 0 : print ("vous etes ruine ! c'est la fin de la partie ") continuer_partie = False else : print ("vous avez à present " , argent , "$") quitter = input ("souhaitez vous quitter le casino (o/n) ? ") if quitter == "o" or quitter == "0" : print ("vous quitter le casino avec vos gains ") continuer_partie = False os.system("pause")
D'après ce qui est dit dans ce tutoriel https://python.developpez.com/cours/...3/?page=page_8, la fonction input renvoie une CHAINE de caractères.
(String en anglais ...) on retrouve le mot string que tu avais dans ton message d'erreur et qui était quand même un sacré indice.
Ce que tu voudrais faire, c'est tester si 2 nombres sont de même parité,
Mais ce que tu fais, c'est tester si 2 chaines sont de même parité. Et l'opérateur % appliqué sur une chaîne, ça plante.
Pour t'en assurer, la recette magique qui aide toujours en phase de débuggage, c'est d'utiliser la fonction print.
En ligne 13, met : print ( type( nombre_mise) )
Et regarde ce qu'il t'indique.
la solution de fred marche; la votre renvoie la même erreur
Pourtant le livre de dec 2011 c'est le python 3 le 4 n'existe pas.Le livre serait t'il déjà obsolète ?
Merci pour la réponse
C'est sans doute la version 2.6 ou 2.7, et ces versions sont obsolètes pour les débutants. Pour ton apprentissage il est souhaitable d'abandonner ce tutoriel.
Ce code utilise l'ancienne version du langage, et tu dois remplacer input par int(input(...)) là où on demande un entier...
Partager