ValueError: invalid littéral pour int() avec la base 10: "stop"
Chaque fois que j'essaie de me code, il fonctionne, mais lorsque je tape dans 'stop'
il me donne une erreur:
ValueError: invalid littéral pour int() avec la base 10: 'stop'
def guessingGame():
global randomNum
guessTry = 3
while True:
guess = input('Guess a Number between 1 - 10, You have 3 Tries, or Enter Stop: ')
if int(guess) == randomNum:
print('Correct')
break
if int(guess) < randomNum:
print('Too Low')
guessTry = guessTry - 1
print('You have, ' + str(guessTry) + ' Guesses Left')
if int(guess) > randomNum:
print('Too High')
guessTry = guessTry - 1
print('You have, ' + str(guessTry) + ' Guesses Left')
if guessTry == 0:
print('You have no more tries')
return
if str(guess) == 'stop' or str(guess) == 'Stop':
break
OriginalL'auteur Chris Pickett | 2013-05-24
Vous devez vous connecter pour publier un commentaire.
La chaîne passée à
int()
ne doit contenir que des chiffres:Une solution rapide est d'utiliser la gestion des exceptions ici:
Et vous pouvez utiliser
guess.lower() == 'stop'
pour correspondre à toutes les majuscules en minuscules combinaison de "stop":if guess.lower() == 'stop'
et attraper tous les "stop" de la capitalisation des possibilités.FWIW, il serait préférable de ne pas appeler
int
trois fois quand on est assez, et de garder le bloc d'essai aussi court que possible.Pour l'enregistrement, les chaînes transmises à
int()
peut contenir de l'attaque et de fuite des espaces ainsi que les chiffres.OriginalL'auteur Ashwini Chaudhary
Voici un plus pythonic (Python 3) de la version.
OriginalL'auteur bruno desthuilliers
Vous essayez de convertir la chaîne de caractères "stop" à un nombre entier. Cette chaîne n'a pas de représentation valide comme un entier, de sorte que vous obtenez cette erreur. Vous devriez mettre
que la première case
Une autre suggestion est d'utiliser des minuscules sur l'entrée et ensuite, vérifiez les minuscules "stop". De cette façon, vous aurez à vérifier qu'une seule fois et il capture soit 'Stop', 'STOP', 'sTOp', etc..
if str.lower(guess) == 'stop'
Il n'y a pas une telle chose comme un "cast" en Python.
int
est un type (classe) etint(somestring)
instancie un nouveau type int.OriginalL'auteur Pablo Mescher