2017-09-13 1 views
0

Cette question n'a pas été posée par rapport à Python 3.6. Je besoin d'une solution de re-Prompt une question d'entrée utilisateur spécifique dans une série de questions d'entrée si les données sont donné comme autre chose qu'un entier ou flottant dans ce cas.Réactivation rapide entrée utilisateur après type incorrect de données est donné en Python 3.6

permet de dire qu'ils entrée les données de flotteur correct pour la première question, mais laisse alors dire que l'entrée d'un caractère de chaîne dans la deuxième question. Cela génère un "ValueError: impossible de convertir la chaîne en float:".

Est-il possible en utilisant une boucle ou une autre méthode pour ré-invite la question d'entrée SECOND qu'ils ont échoué à mettre les données entier/float en? En outre, pouvez-vous ré-inviter seulement la deuxième question au lieu de devoir recommencer et ré-inviter à la première question?

counter = 0 
counter += float(input("What is number 1?")) 
counter += float(input("What is number 2?")) 
counter += float(input("What is number 3?")) 
print(counter) 

EDIT: J'ai lu les articles publiés contenant 9 réponses qui est similaire, mais non d'entre eux eu affaire à plusieurs questions d'entrée un après l'autre. Les réponses fournies ont été utiles, mais je ne comprends toujours pas comment ré-interroger la 2ème ou la 3ème question après l'entrée d'un type de données incorrect. En résumé: Je voudrais que le programme de re-question qui invite la échoué plutôt que l'utilisateur doit commencer à la question 1.

+0

Les réponses à les questions que vous avez trouvées sont toujours valides dans python 3.6 – roganjosh

+0

J'ai modifié ma question originale pour plus de clarté. –

+0

La construction utilisée pour ré-interroger une question peut être répétée autant de fois que vous le souhaitez pour autant de questions que vous le souhaitez. Vous devez avoir la question à l'intérieur d'une boucle while, et un 'try' /' except' dans cette boucle entourant le 'input', et un moyen de sortir de la boucle' while' lorsqu'une réponse correcte est entrée. 100% de ce dont vous avez besoin est dans le duplicata, vous avez juste besoin de l'extrapoler à votre cas d'utilisation unique. En d'autres termes, ne disposez pas de tous les 'input' dans un seul bloc' while' et vous êtes défini. – roganjosh

Répondre

0

Quelque chose comme ce pseudo-code fonctionnerait:

for q in questions: 
    while True: 
     ask_question 
     if question_result_validated: 
      break