如何检查 Python 2.x 中的输入是字符串还是整数?
How do I check if an input is a string or int in Python 2.x?
我正在尝试检查输入的是单词还是数字。
var = input("var: ")
if isinstance(var, str):
print "var = word"
else:
print "var = number"
这是我想出的代码,但遗憾的是它不起作用;
我是 python 和一般编程的新手,所以我不知道很多命令,
任何建议将不胜感激^^
要检查变量类型,您可以执行以下操作:
>>> x = 10
>>> type(x)
<type 'int'>
对于字符串:
>>> y = "hi"
>>> type(y)
<type 'str'>
使用isinstance
:
x = raw_input("var: ")
try:
int(x)
except ValueError:
print "string"
else:
print "int"
input()
总是 return 给你一个字符串(str
类型)。您可以对该字符串执行多项操作以检查它是否为 int
您可以尝试将该字符串转换为 int:
var = input("var: ")
try:
var = int(var)
except ValueError:
print "var is a str"
print "var is an int"
您可以使用正则表达式来检查字符串是否仅包含数字(如果您的 int
是十进制,对于其他基数,您必须使用适当的符号):
import re
var = input("var: ")
if re.match(r'^\d+$', var):
print "var is an int"
else:
print "var is a str"
input()
将在将您的输入交给您之前对其进行评估。也就是说,如果用户输入 exit()
,您的应用程序将退出。从安全的角度来看,这是不希望的。您可能希望改用 raw_input()
。在这种情况下,您可以期望返回值是一个字符串。
如果您仍想检查字符串内容是否可转换为(整数)数字,请按照此处讨论的方法进行操作:
- How do I check if a string is a number (float) in Python?
一个简短的概述:尝试将其转换为数字,看看是否失败。
示例(未经测试):
value = raw_input()
try:
int(value)
print "it's an integer number"
except ValueError:
print "it's a string"
供参考:
- https://docs.python.org/2/library/functions.html#int
- https://docs.python.org/2/library/functions.html#input
- https://docs.python.org/2/library/functions.html#raw_input
注意 input()
函数的语义随着 Python 3:
正如@paidhima 所说,input
函数将始终return python 3.x 中的字符串。
示例:
Python 3.4.0 (default, Apr 11 2014, 13:05:11)
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> var = input("var: ")
var: 12
>>> var
'12'
>>>type(var)
<class 'str'>
>>>
如果我执行以下操作:
>>> var = input("var: ")
var: aa
>>> var
'aa'
>>> type(var)
<class 'str'>
>>>
它们都是字符串,因为让程序决定是给我们一个字符串还是一个整数不是一个好主意,我们希望我们在程序中构建的逻辑来处理它。
在 python3.x 你的例子是行不通的,但你可以试试这个:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
var = input('var: ')
# we try to conver the string that we got
# in to an intiger
try:
# if we can convert it we store it in the same
# variable
var = int(var)
except ValueError:
# if we can't convert we will get 'ValueError'
# and we just pass it
pass
# now we can use your code
if isinstance(var, str):
print("var = word")
else:
print("var = number")
# notice the use of 'print()', in python3 the 'print is no longer
# a statement, it's a function
现在使用 python2.x 回到您的脚本。
正如我上面所说,使用函数 input
不是一个好习惯,您可以使用 raw_input
在 python2.x 中的作用与 input
在 python 中的作用相同3.x.
我要再说一遍,因为我不想混淆你:
Python2.x:
input
# evaluates the expression(the input ) and returns what
# can make from it, if it can make an integer it will make one
# if not it will keep it as a string
raw_input
# it will always return the expression(the input ) as a string for
# security reasons and compatibility reasons
Python3.x
input
# it will always return the expression(the input ) as a string for
# security reasons and compatibility reasons
注意,python3.x中没有raw_input
.
您的代码应该可以正常工作,在 python2.x 中,确保您使用正确 python,我希望这在某种程度上对您有所帮助。
你试过了吗str.isdigit()
?
例如:
v = raw_input("input: ")
if v.isdigit():
int(v)
print "int"
else:
print "string"
我正在尝试检查输入的是单词还是数字。
var = input("var: ")
if isinstance(var, str):
print "var = word"
else:
print "var = number"
这是我想出的代码,但遗憾的是它不起作用; 我是 python 和一般编程的新手,所以我不知道很多命令, 任何建议将不胜感激^^
要检查变量类型,您可以执行以下操作:
>>> x = 10
>>> type(x)
<type 'int'>
对于字符串:
>>> y = "hi"
>>> type(y)
<type 'str'>
使用isinstance
:
x = raw_input("var: ")
try:
int(x)
except ValueError:
print "string"
else:
print "int"
input()
总是 return 给你一个字符串(str
类型)。您可以对该字符串执行多项操作以检查它是否为 int
您可以尝试将该字符串转换为 int:
var = input("var: ") try: var = int(var) except ValueError: print "var is a str" print "var is an int"
您可以使用正则表达式来检查字符串是否仅包含数字(如果您的
int
是十进制,对于其他基数,您必须使用适当的符号):import re var = input("var: ") if re.match(r'^\d+$', var): print "var is an int" else: print "var is a str"
input()
将在将您的输入交给您之前对其进行评估。也就是说,如果用户输入 exit()
,您的应用程序将退出。从安全的角度来看,这是不希望的。您可能希望改用 raw_input()
。在这种情况下,您可以期望返回值是一个字符串。
如果您仍想检查字符串内容是否可转换为(整数)数字,请按照此处讨论的方法进行操作:
- How do I check if a string is a number (float) in Python?
一个简短的概述:尝试将其转换为数字,看看是否失败。
示例(未经测试):
value = raw_input()
try:
int(value)
print "it's an integer number"
except ValueError:
print "it's a string"
供参考:
- https://docs.python.org/2/library/functions.html#int
- https://docs.python.org/2/library/functions.html#input
- https://docs.python.org/2/library/functions.html#raw_input
注意 input()
函数的语义随着 Python 3:
正如@paidhima 所说,input
函数将始终return python 3.x 中的字符串。
示例:
Python 3.4.0 (default, Apr 11 2014, 13:05:11)
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> var = input("var: ")
var: 12
>>> var
'12'
>>>type(var)
<class 'str'>
>>>
如果我执行以下操作:
>>> var = input("var: ")
var: aa
>>> var
'aa'
>>> type(var)
<class 'str'>
>>>
它们都是字符串,因为让程序决定是给我们一个字符串还是一个整数不是一个好主意,我们希望我们在程序中构建的逻辑来处理它。 在 python3.x 你的例子是行不通的,但你可以试试这个:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
var = input('var: ')
# we try to conver the string that we got
# in to an intiger
try:
# if we can convert it we store it in the same
# variable
var = int(var)
except ValueError:
# if we can't convert we will get 'ValueError'
# and we just pass it
pass
# now we can use your code
if isinstance(var, str):
print("var = word")
else:
print("var = number")
# notice the use of 'print()', in python3 the 'print is no longer
# a statement, it's a function
现在使用 python2.x 回到您的脚本。
正如我上面所说,使用函数 input
不是一个好习惯,您可以使用 raw_input
在 python2.x 中的作用与 input
在 python 中的作用相同3.x.
我要再说一遍,因为我不想混淆你: Python2.x:
input
# evaluates the expression(the input ) and returns what
# can make from it, if it can make an integer it will make one
# if not it will keep it as a string
raw_input
# it will always return the expression(the input ) as a string for
# security reasons and compatibility reasons
Python3.x
input
# it will always return the expression(the input ) as a string for
# security reasons and compatibility reasons
注意,python3.x中没有raw_input
.
您的代码应该可以正常工作,在 python2.x 中,确保您使用正确 python,我希望这在某种程度上对您有所帮助。
你试过了吗str.isdigit()
?
例如:
v = raw_input("input: ")
if v.isdigit():
int(v)
print "int"
else:
print "string"