Comment puis-je vérifier si une entrée est une chaîne de caractères ou int en Python 2.x?
Je suis en train de vérifier si une entrée est un mot ou un nombre.
var = input("var: ")
if isinstance(var, str):
print "var = word"
else:
print "var = number"
C'est le code, je suis venu avec, mais malheureusement ne fonctionne pas;
Je suis nouveau sur python et la programmation en général, donc je ne sais pas beaucoup de commandes,
toute suggestion serait apprécié ^^
- Qu'entendez-vous par "ne fonctionne pas"?
- EDIT: Oups,
raw_input
va toujours retourner une chaîne de caractères,input
un eval.. ORIGINAL: Lainput
fonction est toujours retourner une chaîne de caractères, même si vous n'entrer que des chiffres. - Toute entrée me renvoie 'var = mot', même si j'en entrée une chaîne de caractères.
- merci, j'ai remarqué qu'un moment après que j'ai tapé.
- Est le raw_input un meilleur choix alors
raw_input
est la façon correcte en Python2- double possible de Comment puis-je vérifier si les entrées brutes est entier dans python 2.7?
- Merci à vous tous ^^ a vraiment aidé à m'en sortir! J'aime la façon dont actifs de ce site.
Vous devez vous connecter pour publier un commentaire.
input()
et de les évaluer votre entrée avant de le remettre à vous. C'est, si l'utilisateur entreexit()
, votre demande sera sortie. Ce n'est pas souhaitable du point de vue de la sécurité. Vous pouvez utiliserraw_input()
à la place. Dans ce cas, vous pouvez vous attendre à la valeur retournée est une chaîne.Si vous voulez toujours vérifier si les chaînes de contenu est convertible en un (entier) nombre, veuillez suivre la démarche discuté ici:
Un bref aperçu: Juste essayer de le convertir en nombre, et voir si elle échoue.
Exemple (non testé):
Pour référence:
Noter que la sémantique de la
input()
modification de la fonction avec Python 3:string
etnumber
sorties lorsque l'entrée est une chaîne de caractères. Mettre la dernière impression d'uneelse:
déclaration et il devrait fonctionner parfaitement. @ManakinAvez-vous essayé
str.isdigit()
?Par exemple:
input()
serait toujours de retour pour vous une chaîne de caractères (str
type). il y a plusieurs choses que vous pouvez faire avec cette chaîne pour vérifier si il est unint
vous pouvez essayer de convertir cette chaîne de type int:
vous pouvez utiliser une expression régulière pour vérifier si la chaîne ne contient que des chiffres (si votre
int
est décimal, pour d'autres bases que vous auriez à utiliser les symboles appropriés):Pour vérifier le type de variable, vous pouvez effectuer les opérations suivantes:
Pour la chaîne:
À l'aide de
isinstance
:type
vérification des types dans une conditionnelle, utilisezisinstance
. En tout cas, il n'y a aucun point à vérifier le type dex
si vous utilisezraw_input
, car il sera toujours une chaîne de caractères.Comme @paidhima dit le
input
fonction retournera toujours une chaîne de caractères en python 3.x.Exemple:
Si je ne les suivants:
Ils sont tous les deux en chaîne, car il n'est pas une bonne idée d'avoir le programme de décider si elle va nous donner une chaîne de caractères ou et entier, nous voulons la logique que nous construisons dans le programme pour le gérer.
En python3.x vous exemple n'est pas va fonctionner, mais vous pouvez l'essayer ceci:
Maintenant de retour à votre script à l'aide de python2.x.
Comme je l'ai dit ci-dessus ce n'est pas une bonne pratique d'utiliser la fonction
input
, vous pouvez utiliserraw_input
qui fonctionne de la même dans python2.x commeinput
dans python3.x .Je vais le dire encore une fois parce que je ne veux pas vous embrouiller :
Python2.x:
Python3.x
Attention, dans python3.x il n'y a pas de
raw_input
.Votre code devrait fonctionner très bien, en python2.x, assurez-vous d'utiliser le droit de python, et j'espère que cela vous a aidé d'une manière ou d'une autre.