Obtenir un rapport d'essai de la boucle jusqu'à ce que la valeur obtenue
Je vais essayer d'aller à un utilisateur d'entrer un nombre entre 1 et 4. J'ai ce code pour vérifier si le numéro est correct, mais je veux le code de la boucle autour de plusieurs fois jusqu'à ce que le nombre est correct. Personne ne sait comment faire cela? Le code est ci-dessous:
def Release():
try:
print 'Please select one of the following?\nCompletion = 0\nRelease ID = 1\nVersion ID = 2\nBuild ID = 3\n'
a = int(input("Please select the type of release required: "))
if a == 0:
files(a)
elif a == 1:
files(a)
elif a == 2:
files(a)
elif a == 3:
files(a)
else:
raise 'incorrect'
except 'incorrect':
print 'Try Again'
except:
print 'Error'
Release()
Je suis aussi d'avoir une erreur à propos de l'exception que j'ai entré:
kill.py:20: DeprecationWarning: catching of string exceptions is deprecated
except 'incorrect':
Error
Merci pour toute aide
C'est vraiment une mauvaise conception, une mauvaise saisie de l'utilisateur ici n'est pas vraiment une exception.
Double Possible de Comment faire pour recommencer après exception?
Double Possible de Comment faire pour recommencer après exception?
OriginalL'auteur chrissygormley | 2010-02-11
Vous devez vous connecter pour publier un commentaire.
OriginalL'auteur Johannes Charra
Moderne Python exceptions sont des classes; en utilisant
raise 'incorrect'
, vous êtes à l'aide d'un obsolète langue fonctionnalité appelée chaîne des exceptions. Le Des erreurs et des Exceptions section du tutoriel Python serait un bon endroit pour commencer avec la base de gestion des exceptions en Python.En général, les exceptions ne sont pas l'idéal pour votre situation, de toute façon—une simple
while
boucle devrait être suffisant. Les Exceptions doivent être réservés à des situations exceptionnelles, et une mauvaise saisie de l'utilisateur n'est pas exceptionnel, c'est prévu.La boucle-version de
Release
ressemblerait à quelque chose comme ceci:P. S.
a
est un mauvais nom de variable, vous devrez probablement changer àchosen_option
ou quelque chose comme ça.OriginalL'auteur Hank Gay
Votre approche semble être une très longue haleine pour accomplir quelque chose d'assez simple:
OriginalL'auteur sykora
Vous êtes à la fois lancer et attraper l'exception dans le même bloc de code, ce n'est pas vraiment ce que la gestion des exceptions. Vous pouvez faire de mieux, soit par sortir d'une boucle ou d'en gardant une condition. E. g.:
EDIT: Ajouté vérification des erreurs dans l'int de l'analyse.
OriginalL'auteur Max Shawabkeh
Au lieu d'utiliser des exceptions que vous pourriez faire quelque chose comme ceci:
C'est vrai. Pas utilisable en tant que tel
OriginalL'auteur Anssi
OriginalL'auteur ghostdog74