0
votes

Comment retourner un autre retour?

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 commentaires

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. return fait 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 un si "


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.


3 Réponses :


0
votes

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


0 commentaires

0
votes

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. :)


1 commentaires

est-ce que cela a répondu à ta question?



0
votes

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


1 commentaires

Cela a-t-il fonctionné pour vous s'il vous plaît cochez-le si c'est le cas. Merci!