0
votes

Python: Comment savoir quelle partie provoque une erreur en utilisant Essayer / Sauf?

Je veux utiliser un seul essayer \ sauf pour de nombreuses variables. Je veux savoir quelle partie cause de l'erreur afin que je puisse l'imprimer à l'utilisateur sous le sauf partie. xxx

Je veux savoir quel INT (x) cause l'erreur afin que je puisse l'imprimer à l'utilisateur? Y a-t-il un moyen de le faire? Je ne veux pas essayer de chaque partie parce que mes variables sont presque infinies;)


4 commentaires

Similaire à Cette question


Pourquoi avez-vous toutes ces variables en premier lieu? Votre exemple ici semblerait les rendre plus appropriés pour être utilisés comme liste. (Et à son tour, votre erreur serait capable d'être identifiée via la iereable qui remplit la liste)


@Sayse, ce sont des entrées de TK différentes, je veux savoir ce qui n'est pas INT donc je souhaite informer l'utilisateur d'entrer uniquement des entiers!


@MynameCalleb J'ai lu votre suggestion, mais ce n'est pas ce que j'ai exprimé. Je veux savoir pour quelle entrée (i, j, k, ...) L'utilisateur entre des lettres au lieu d'INTS. Mais merci de toute façon.


3 Réponses :


2
votes

Que diriez-vous de quelque chose comme ceci: xxx

Vous pouvez appeler la méthode parse_int pour d'autres variables au fur et à mesure que vous le voyez.

ps: vous ne pouvez pas attribuer à une expression comme n + 1 - cette dernière ligne avant le sauf dans votre code ne fonctionnera pas


2 commentaires

Merci. Oui, je sais n + 1 est faux, je l'ai écrit comme une clarification supplémentaire pour quel est le problème. Désolé mais ce n'est pas exactement ce dont j'ai besoin. Mais merci de toute façon.


Cela semble être le moyen le plus propre de me le faire. D'une manière ou d'une autre, vous devez garder une trace de l'objet que vous êtes sur.



1
votes

Si tous sont des entiers, et s'ils sont liés d'une certaine manière, vous pouvez utiliser une liste pour les stocker. La raison d'une autre liste avec des noms de variables est donc afin que vous puissiez utiliser le même index pour dire quelle variable a été erronée.

my_list=[]
my_list_variables=["a","b","c"]
i=0
while True:
    try:
        x=int(input("Please input "+my_list_variables[i]+" : "))
        my_list.append(x)
        i=i+1
        #Just make sure to add a if statement to quit out of the loop
        #Like if that is end of the amount of input you are asking.
        break
    except ValueError:
        #index i doesn't change so you can tell the user which variable they
        #entered a wrong input for.
        print("Error: input "+my_list_variables[i]+" have to be a number")


0 commentaires

1
votes

Je pense que @rdas a une meilleure réponse, mais depuis que vous ne l'aimez pas, vous pouvez faire quelque chose comme ça aussi, cela semble un peu hacky et pas beaucoup mieux que de faire ESSAYER code> sur chaque ligne.

try:
    last = 'i'
    i = int('10')
    last = 'j'
    j = int('ten')
except ValueError:
    print(f'Please enter an integer as {last}')


1 commentaires

Comme je l'ai dit, J, K, L, ... sont toutes des valeurs d'entrée TK d'une forme biiiig et je souhaite savoir où l'utilisateur tente d'entrer quelque chose qu'un entier. Donc, je peux l'imprimer sous le sauf partie. Y a-t-il un moyen de savoir que je, j, k, l, ... élever le ValueError ? Merci +1.