Python >> Tutoriel Python >  >> Python

Comment puis-je lire les entrées sous forme de nombres en Python ?

Êtes-vous prêt à faire passer vos connaissances Python au niveau supérieur ? Amusons-nous un peu avec les entrées. Seulement, au lieu de vous demander d'entrer votre nom, nous travaillerons avec des chiffres.

C'est une belle calculatrice simple. Vous entrez deux nombres et il les additionne pour vous donner une réponse. Simple, non ? Eh bien, voyons ce qui se passe lorsque nous entrons les deux nombres.

À moins que les mathématiques ne changent du jour au lendemain, nous sommes assez confiants pour dire que 3+3 n'est pas égal à 33 .

Qu'est-ce qui ne va pas?

Explication

C'est que votre sortie est une chaîne, pas un entier. C'est un problème. Vos entrées génèrent les réponses sous forme de chaîne, et non sous forme d'entier comme ils devraient l'être.

Ce n'est pas aussi gênant que vous le pensez. Vous apprenez et ces informations vous seront utiles à mesure que vous progressez dans vos efforts Python.

Par défaut, les entrées proposent une valeur de chaîne. Cela signifie que lorsque vous entrez un nombre dans votre entrée, il ne s'agit pas d'entrer 3, le nombre. Il s'agit d'entrer 3 sous forme de chaîne ou "3" (oui, cela inclut les guillemets. Si vous avez créé une variable, vous pouvez lui donner le numéro 3, ou vous pouvez la mettre entre guillemets et en faire une chaîne. Vous faites le ce dernier lorsque vous le mettez dans vos entrées.

C'est ainsi que vous vous retrouvez avec 3 + 3 égal à 33. Vous ne pouvez pas additionner correctement les chaînes. Ce serait comme si vous entriez un nom dans l'entrée et que vous l'ajoutiez par trois. Vous obtiendriez ce nom imprimé trois fois de suite (et sans espaces).

Vous ne pouvez pas additionner mathématiquement des chaînes. Et à cause de cela, vous ne pouvez pas les soustraire, les multiplier ou les diviser. Vous obtiendrez la même erreur de type vous informant que vous avez une chaîne.

Comment vérifiez-vous si votre entrée est une chaîne ou un entier en Python ?

Si vous êtes sceptique à ce sujet et que vous voulez une preuve supplémentaire que vous travaillez avec des chaînes. Créer print() déclarations pour les deux a et b . Ajoutez du type aux deux. Vous pouvez le formater comme ceci :

Vous devrez envelopper les deux variables dans le type() fonction. Le type est le moyen le plus simple pour vous de déterminer si vous avez une chaîne, un entier, un flottant ou un booléen.

Les deux déclarations devraient vous donner un <class 'str'> réponse, ce qui signifie qu'il s'agit d'une chaîne.

Maintenant, ce n'est pas la seule méthode que vous pouvez utiliser pour déterminer le type de données de l'objet. Il existe une autre fonction intégrée que vous pouvez utiliser appelée isinstance() .

Contrairement au type() fonction, isinstance() nécessite deux paramètres :la variable et la classe. La fonction renvoie un True ou False réponse. Pour cet exemple, vous envelopperiez la variable dans le isinstance() fonction et vous incluriez int comme second paramètre.

Et lorsque vous exécutez le code, cela devrait être votre résultat dans la CLI.

Par comparaison, si vous changez le deuxième paramètre en str , alors il renverra True comme réponse à vos entrées.

Celui que vous choisissiez pour votre script Python dépend de vous. Les deux fonctionnent très bien. Si vous débutez avec Python, il serait peut-être préférable d'utiliser le type() fonction.

Convertir votre chaîne d'entrée en entier

Ne vous inquiétez pas cependant. Vous êtes arrivé jusqu'ici dans votre processus Python. Vous pouvez surmonter ce barrage routier. Ce que vous devez faire, c'est ajuster votre variable. Vous devrez convertir vos réponses en nombres entiers. Comment faites-vous cela ?

C'est facile, pour être honnête. Et vous pouvez le faire de différentes manières.

Changement d'une chaîne en entier en Python

L'une des fonctions intégrées que vous pouvez utiliser dans Python est la fonction entière (ou int() ). Cela fonctionne comme ceci :

Si vous avez une chaîne comme x = "1" , alors tout ce que vous avez à faire est de mettre à jour votre variable et de faire x = int(x) donc quand vous print(x) vous obtiendrez 1 . Vous ne le remarquerez peut-être pas au début, mais essayez de faire une déclaration d'impression comme print(x+5) . Votre sortie sera égale à six. Alors que si vous l'essayiez dans l'autre sens avec une chaîne, vous obtiendrez une erreur.

Il existe maintenant deux façons d'utiliser la fonction entière pour le script précédent que nous avons essayé. Vous pouvez mettre à jour les variables après les entrées. Voici l'exemple :

Cela convertit les deux chaînes en nombres et vous pouvez les ajouter/soustraire/multiplier/diviser facilement à partir de là dans votre déclaration d'impression.

Lorsque vous l'exécutez, vous devriez obtenir les réponses que votre cœur désire.

Pousser un soupir de soulagement. Vous avez résolu un problème.

Solution complète

Il existe un moyen plus court pour convertir votre chaîne en nombre. Vous pouvez envelopper vos entrées dans la fonction entière.

Essayez-le vous-même dans notre shell de navigateur interactif :

Exercice  :Avez-vous toujours ce comportement inattendu lors du calcul d'opérations arithmétiques sur deux nombres ?

Lorsque vous le faites de cette façon, vous pouvez éviter de créer des variables supplémentaires. Cela permet à votre code d'avoir une belle apparence.

Si vous n'êtes toujours pas à l'aise avec autant de parenthèses, il peut être plus simple pour vous d'utiliser la première méthode.

Vous n'avez pas besoin d'utiliser les fonctions intégrées. Il existe un package Python qui peut vous aider.

Utiliser pyinputplus pour vos entrées

Si vous avez entendu parler ou lu "Automate The Boring Stuff With Python" alors vous connaissez probablement Al Sweigart et certains des programmes Python qu'il a créés. Si vous n'en avez pas entendu parler, vous devez consulter son site Web. C'est parfait pour les débutants en Python.

L'un des packages Python qu'il a créés, disponible sur GitHub, est connu sous le nom de pyinputplus . C'est un package qui vous permet de créer des entrées pour votre script Python.

Avec ce programme, vous n'avez pas à vous soucier de créer des variables supplémentaires juste pour convertir une chaîne en un entier comme nous l'avons fait ci-dessus. Avec ce package, vous pouvez créer des entrées pour les nombres et les nombres entiers. Et cela fonctionne à la fois pour Python 2 et 3.

Vous devrez l'installer sur votre ligne de commande. Si vous utilisez PIP, faites simplement pip install pyinputplus . À partir de là, vous devrez importer le package dans votre script comme ceci.

Et puis il y a deux fonctions que vous pouvez utiliser pour créer des entiers. Vous pouvez utiliser le inputNum ou le inputInt fonction. Pour cet exemple, nous avons utilisé ce dernier. L'un ou l'autre fonctionnera. Vous pouvez avoir votre script formaté comme ceci :

La meilleure partie de ce package est que vous n'avez même pas besoin de vous inquiéter et de vérifier s'il s'agit d'une chaîne ou d'un entier. Vous avez ce dont vous avez besoin et cela vous fait gagner du temps.

Ce qui est bien avec pyinputplus est-il vous permet d'être créatif avec vos entrées. Il y a tellement de choses que vous pouvez faire avec. Jouez avec. Vous ne serez pas déçu.

Quelle que soit la voie que vous emprunterez, sachez qu'il existe des solutions pour vous aider. Ce qui semble être un défi et une frustration maintenant ne le sera plus lorsque vous le comprendrez. Je promets que les efforts de programmation Python en valent la peine.