web-dev-qa-db-fra.com

Moyen court pour convertir une chaîne en int Python 3

Donc, dans mon code, je fais généralement cela pour convertir string en int, mais je me demandais s'il y avait un moyen moins maladroit, parce que ça fait un peu long.

    myInput = int(myInput)

C’est peut-être ce qu’il faut faire, mais merci d’avance si vous avez des idées.

7
Sam Banks

Tout d'abord, la fonction str convertit la valeur d'une variable en chaîne. Étant donné que vous essayez de convertir une chaîne en un entier, je vous suggère d'utiliser la fonction int ( https://docs.python.org/3/library/functions.html#int ).

Votre code python ressemblerait à ceci:

myInput = int(myInput)

Cette fonction à 3 lettres fait ce dont vous avez besoin de manière brève. En fait, dans d'autres langages comme Java, la syntaxe est presque deux fois plus longue.

Exemple Java

int myIntInput = Integer.parseInt(myInput);
17
Gonzalo

Peut-être espériez-vous quelque chose comme myNumber = myInput.toInt. Mais il n'est actuellement pas possible de le faire en mode natif. Et assez amusant, si vous voulez extraire la partie entière d'une chaîne de type float, vous devez d'abord convertir float, puis int. Ou esle vous obtenez ValueError: invalid literal for int(). Donc, c’est un moyen robuste: 

myInput = int(float(myInput))

Par exemple:

>>> nb="88.8"
>>> int(nb)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '88.8'
>>> int(float(nb))
88
2
biocyberman

S'il s'agit d'une entrée utilisateur, il est probable que l'utilisateur entre une chaîne. Donc, mieux vaut attraper l'exception aussi bien avec try:

UserInput = '88.8'
try:
    int(float(UserInput))
except:
    UserInput = 0
print(UserInput)
1
Jan Meeuwissen