Je cherche à utiliser des fonctions dans mon programme Python pour le rendre plus propre et plus efficace. Dans ma fonction, je renvoie vrai ou faux en fonction de la sélection de l'utilisateur. Bien que dans le cas où ils entrent une réponse incorrecte / invalide, j'aimerais renvoyer un retour de cette façon en ne posant plus de questions.
Modifier:
Pour être un peu plus descriptif; Je voudrais recréer ceci:
def askquestion(question):
response = input(question, "Enter T or F")
if response == "T":
return True
elif response == "F":
return False
else:
return None
def askmultiple():
questionOne = askquestion("Do you fruits?")
if questionOne == None:
return # Exit the function, not asking more questions
questionTwo = askquestion("Do you Apples?")
if questionTwo == None:
return # Exit the function, not asking more questions
Je veux arrêter de vérifier ensuite si c'est None et simplement retourner return. p>
3 Réponses :
Lorsque vous ne créez pas une instruction return à la fin d'une fonction qui est égale à un seul return et que ces deux sont égaux à un appel return None .
p> Vous pouvez donc organiser votre code comme:
if returned_value is None:
# do something a
elif returned_value is False:
# do something else
else: # value is True
# do something b
Vous pouvez essayer d'utiliser une boucle while pour vous assurer que l'utilisateur saisit une entrée correcte. Par exemple:
while not (what you want):
(ask for input again)
Dans ce cas, pendant que l'utilisateur saisit, "response" n'est pas un nombre, la console Python continuera à demander une réponse. Pour un modèle de base,
while not response.isdigit():
response = input("That was not a number try again")
J'espère que cela vous aidera. :)
est-ce que cela a répondu à ta question?
Utilisez un flux d'exception.
def ask_question(prompt):
while True:
response = input(prompt)
if response.upper() in ['T', 'F']:
break
return True if response.upper() == 'T' else False
Puisque table [response.upper ()] lèvera une KeyError si response.upper () n'est ni 'T' ni 'F' , vous pouvez l'attraper ci-dessous et utiliser ce flux pour vous sortir de la boucle .
Une autre option consiste à écrire un validateur qui oblige l'utilisateur à répondre correctement.
def ask_question(prompt):
"""Asks a question, translating 'T' to True and 'F' to False"""
response = input(prompt)
table = {'T': True, 'F': False}
return table[response.upper()] # this allows `t` and `f` as valid answers, too.
def ask_multiple():
questions = [
"Do you fruits?",
"Do you apples?",
# and etc....
]
try:
for prompt in questions:
result = ask_question(prompt)
except KeyError as e:
pass # this is what happens when the user enters an incorrect response
Cela a-t-il fonctionné pour vous s'il vous plaît cochez-le si c'est le cas. Merci!
Pouvez-vous s'il vous plaît montrer le code que vous avez jusqu'à présent pour que nous ayons une idée de ce que vous faites
"Je voudrais retourner un retour" cela n'a pas de sens.
returnfait partie d'une instruction, ce n'est pas un objet, il ne peut donc pas être retourné. vous pourriez aussi bien demander "comment puis-je renvoyer unsi"Il semble que vous vouliez ce que demander à l'utilisateur de fournir une entrée jusqu'à ce qu'il donne une réponse valide demandait. La seule raison pour laquelle je ne marque pas immédiatement un double est que votre question est trop vague pour être sûr qu'il s'agit d'un double.