0
votes

Pourquoi cette fonction Python renvoie-t-elle une erreur aucune erreur?

Dans le manuel, le Guide du débutant de Python 3, il existe un exemple de fonction au chapitre 11. Le programme est: xxx

la sortie, selon le manuel, doit être: xxx

mais je reçois: < Pré> xxx

Cependant, si je saisi d'abord une chaîne au lieu d'un entier, l'erreur que la fonction est censée protéger contre, elle fonctionne: xxx P> Quelqu'un voudrait-il expliquer pourquoi la fonction renvoie un "non-pied"?


1 commentaires

Êtes-vous sûr que la fonction dans le livre n'a pas réellement le dédouané un niveau? (par exemple - ce n'est pas réellement dans le pendant la boucle elle-même ...)


3 Réponses :


0
votes

Lorsque vous entrez un entier au premier essai, vous n'entrez pas la boucle tandis que la boucle (car la condition n'est jamais satisfaite), vous n'allez donc pas atteindre retour qui se trouve dans cette boucle. Vous auriez dû mettre ce retour en dehors de la boucle: xxx


0 commentaires

0
votes

Vous avez mis le retour code> à l'intérieur de la boucle, qui n'est jamais entré si vous entrez un numéro comme 20. Donc:

def get_integer_input(message):
    value_as_string = input(message)
    while not value_as_string.isnumeric():
        print("The input must be an integer greater than zero.")
        value_as_string = input(message)
        print(value_as_string)

    return int(value_as_string)
age = get_integer_input("Please input your age: ")
age = int(age)
print("age is", age)


1 commentaires

Merci beaucoup! Cela fonctionne comme il devrait maintenant. Le manuel met le «retour» à l'intérieur de la boucle et je ne pouvais pas travailler l'erreur. C'est la troisième erreur dans le manuel jusqu'à présent - les deux autres étaient plus faciles à trouver - alors peut-être que j'utilise le mauvais livre!



0
votes

Un simple correctif: xxx

a ajouté la valeur de retour juste sous la boucle tandis que dans get_integer_input comme sinon, il ne renvoie jamais rien parce que le value_as_string < / Code> Compte comme numérique lors de la vérification de celle-ci, tandis que la boucle et donc n'est pas fausse et que la boucle tandis que la boucle tandis que ne commence pas d'autres instructions par défaut, le Age = get_integer_input ("Veuillez saisir votre âge:") < / Code> Obtient un back de basses et quand il tente de résoudre cela à un int: Âge = Int (Âge) Il jette une erreur comme vous ne pouvez convertir aucune dans un numéro utilisable.

En tant que telle, mettez une valeur de retour en dehors de celle-ci, tandis que la boucle résout le problème, comme maintenant la fonction est renvoyer une valeur au lieu de défaut de défaut à aucun retour.


1 commentaires

Merci beaucoup, cela fonctionne comme il devrait maintenant. Et merci pour l'explication!