Python 如何检查字符串输入是否为数字?
如何检查用户的字符串输入是否为数字(例如Python 如何检查字符串输入是否为数字?,python,input,types,Python,Input,Types,如何检查用户的字符串输入是否为数字(例如-1、0、1等) 上述方法不起作用,因为输入总是返回字符串。只要尝试将其转换为int,如果不起作用,就退出 try: val = int(userInput) except ValueError: print("That's not an int!") 请参阅处理异常显然,这不适用于负值,但适用于正数 使用isdigit() 对于Python3,以下内容将起作用 userInput = 0 while True:
-1
、0
、1
等)
上述方法不起作用,因为
输入总是返回字符串。只要尝试将其转换为int,如果不起作用,就退出
try:
val = int(userInput)
except ValueError:
print("That's not an int!")
请参阅处理异常显然,这不适用于负值,但适用于正数
使用isdigit()
对于Python3,以下内容将起作用
userInput = 0
while True:
try:
userInput = int(input("Enter something: "))
except ValueError:
print("Not an integer!")
continue
else:
print("Yes an integer!")
break
这适用于任何数字,包括分数:
import fractions
def isnumber(s):
try:
float(s)
return True
except ValueError:
try:
Fraction(s)
return True
except ValueError:
return False
检查输入是否为正常工作
一个特定范围内的正整数
def checkIntValue():
'''Works fine for check if an **input** is
a positive Integer AND in a specific range'''
maxValue = 20
while True:
try:
intTarget = int(input('Your number ?'))
except ValueError:
continue
else:
if intTarget < 1 or intTarget > maxValue:
continue
else:
return (intTarget)
def checkIntValue():
如果**输入**为空,则“检查”可以正常工作
一个正整数,且在特定范围“”内
最大值=20
尽管如此:
尝试:
intTarget=int(输入('您的号码?'))
除值错误外:
持续
其他:
如果intTarget<1或intTarget>maxValue:
持续
其他:
返回(intTarget)
编辑:
您还可以使用下面的代码来确定它是数字还是负数
import re
num_format = re.compile("^[\-]?[1-9][0-9]*\.?[0-9]+$")
isnumber = re.match(num_format,givennumber)
if isnumber:
print "given string is number"
您还可以根据自己的具体要求更改格式。
我看到这篇文章有点晚了。但希望这能帮助其他正在寻找答案的人:)。如果给定代码中有任何错误,请告诉我。对于负数,我建议使用@karthik27
import re
num_format = re.compile(r'^\-?[1-9][0-9]*\.?[0-9]*')
然后对正则表达式match()、findall()等执行任意操作。今天早上,我还遇到了一些问题,用户无法输入非整数响应,以响应我对整数的特定请求
这就是最终对我有效的解决方案,它迫使我给出我想要的答案:
player_number = 0
while player_number != 1 and player_number !=2:
player_number = raw_input("Are you Player 1 or 2? ")
try:
player_number = int(player_number)
except ValueError:
print "Please enter '1' or '2'..."
当我使用
player_number = int(raw_input("Are you Player 1 or 2? ")
用户输入“J”或任何其他非整数字符。最好是将其作为原始输入,检查原始输入是否可以转换为整数,然后再进行转换。我知道这已经很晚了,但它可以帮助其他需要花费6个小时来解决这个问题的人。(我就是这么做的):
这是完美的:(检查输入中是否有字母/检查输入是整数还是浮点)
方法isnumeric()
将执行此任务():
但请记住:
>>>a = '-1'
>>>a.isnumeric()
False
isnumeric()
如果字符串中的所有字符都是数字字符,并且至少有一个字符,则返回True
所以负数是不被接受的。这里有一个简单的函数,用于检查输入的INT和RANGE。这里,如果输入是介于1-100之间的整数,则返回'True',否则返回'False'
a=10
isinstance(a,int) #True
b='abc'
isinstance(b,int) #False
def validate(userInput):
try:
val = int(userInput)
if val > 0 and val < 101:
valid = True
else:
valid = False
except Exception:
valid = False
return valid
def验证(用户输入):
尝试:
val=int(用户输入)
如果val>0且val<101:
有效=真
其他:
有效=错误
除例外情况外:
有效=错误
返回有效
以下是最简单的解决方案:
a= input("Choose the option\n")
if(int(a)):
print (a);
else:
print("Try Again")
最优雅的解决方案是已经提出的
a=123
bool_a = a.isnumeric()
不幸的是,它对负整数和a的一般浮点值都不起作用。如果您的目的是检查“a”是否是一个超出整数的通用数字,我建议使用下面的一个,它适用于所有类型的浮点和整数:)。以下是测试:
def isanumber(a):
try:
float(repr(a))
bool_a = True
except:
bool_a = False
return bool_a
a = 1 # integer
isanumber(a)
>>> True
a = -2.5982347892 # general float
isanumber(a)
>>> True
a = '1' # actually a string
isanumber(a)
>>> False
我希望你们觉得它有用:)基于答案的启发。我定义了一个函数,如下所示。看起来它很好用。如果您发现任何问题,请告诉我
def isanumber(inp):
try:
val = int(inp)
return True
except ValueError:
try:
val = float(inp)
return True
except ValueError:
return False
这将生成一个循环来检查输入是否为整数,结果如下所示:
>>> %Run 1.1.py
Type a number:d
"d" is not a number. Try again.
Type a number:
>>> %Run 1.1.py
Type a number:4
You typed 4.
>>>
如果您希望计算浮点值,并且希望接受NaN
s作为输入,但不接受其他字符串,如'abc'
,则可以执行以下操作:
def isnumber(x):
import numpy
try:
return type(numpy.float(x)) == float
except ValueError:
return False
可以对字符串使用isdigit()方法。
在这种情况下,正如您所说,输入始终是一个字符串:
user_input = input("Enter something:")
if user_input.isdigit():
print("Is a number")
else:
print("Not a number")
如果您特别需要int或float,可以尝试“is not int”或“is not float”:
如果您只需要使用int,那么我见过的最优雅的解决方案是“.isdigit()”方法:
我一直在使用一种不同的方法,我想与大家分享。从创建有效范围开始:
valid = [str(i) for i in range(-10,11)] # ["-10","-9...."10"]
现在询问一个号码,如果不在列表中,继续询问:
p = input("Enter a number: ")
while p not in valid:
p = input("Not valid. Try to enter a number again: ")
最后转换为int(这将起作用,因为列表仅包含作为字符串的整数:
p = int(p)
为什么不将输入除以一个数字呢?这种方法适用于所有情况。负数、浮点数和负数浮点数。还有空格和零
numList = [499, -486, 0.1255468, -0.21554, 'a', "this", "long string here", "455 street area", 0, ""]
for item in numList:
try:
print (item / 2) #You can divide by any number really, except zero
except:
print "Not A Number: " + item
结果:
249
-243
0.0627734
-0.10777
Not A Number: a
Not A Number: this
Not A Number: long string here
Not A Number: 455 street area
0
Not A Number:
自然的:[0,1,2。。。∞]
Python 2
it_is = unicode(user_input).isnumeric()
Python 3
it_is = str(user_input).isnumeric()
整数:[-∞, .., -2, -1, 0, 1, 2, ∞]
try:
int(user_input)
it_is = True
except ValueError:
it_is = False
浮动:[-∞, .., -2, -1.0...1, -1, -0.0...1, 0, 0.0...1, ..., 1, 1.0...1,
..., ∞]
try:
float(user_input)
it_is = True
except ValueError:
it_is = False
此解决方案只接受整数,只接受整数
def is_number(s):
while s.isdigit() == False:
s = raw_input("Enter only numbers: ")
return int(s)
# Your program starts here
user_input = is_number(raw_input("Enter a number: "))
试试这个!即使我输入负数,它也对我有效
def length(s):
return len(s)
s = input("Enter the String: ")
try:
if (type(int(s)))==int :
print("You input an integer")
except ValueError:
print("it is a string with length " + str(length(s)))
这将有助于:
print(user_input.isnumeric())
这将检查字符串中是否只有数字并且长度至少为1。
但是,如果尝试使用带有负数的字符串的isnumeric,isnumeric将返回False
这是一个适用于负数和正数的解决方案
try:
user_input = int(user_input)
except ValueError:
pass # user_input is not a numeric string!
您可以键入:
user_input = input("Enter something: ")
if type(user_input) == int:
print(user_input, "Is a number")
else:
print("Not a number")
try:
val = int(user_input)
except ValueError:
print("That's not an int!")
“-1”。isdigit()==False它对浮点数有效吗?我不这么认为,Llopis。当我给出这个答案时,在我知道足够多之前,我就开始回答问题了。我会像Daniel DiPaolo对int的回答一样,但使用float()而不是int().负数和浮点数返回false,因为“-”和“.”不是数字。isdigit()函数检查字符串中的每个字符是否在“0”和“9”之间。请使用isdecimal
而不是isdigit
,因为isdigit
是一种不安全的测试,它将unicode幂-of-2,²等字符识别为无法转换为整数的数字。我不知道在“输入总是返回字符串”中是否是科雷吗
try:
int(user_input)
it_is = True
except ValueError:
it_is = False
try:
float(user_input)
it_is = True
except ValueError:
it_is = False
def is_number(s):
while s.isdigit() == False:
s = raw_input("Enter only numbers: ")
return int(s)
# Your program starts here
user_input = is_number(raw_input("Enter a number: "))
def length(s):
return len(s)
s = input("Enter the String: ")
try:
if (type(int(s)))==int :
print("You input an integer")
except ValueError:
print("it is a string with length " + str(length(s)))
print(user_input.isnumeric())
try:
user_input = int(user_input)
except ValueError:
pass # user_input is not a numeric string!
user_input = input("Enter something: ")
if type(user_input) == int:
print(user_input, "Is a number")
else:
print("Not a number")
try:
val = int(user_input)
except ValueError:
print("That's not an int!")