如何在Python中验证变量是数字?
我正在写一个关于工程主题的代码,它要求用户输入几个值,然后程序将处理这些值 目前,我有以下代码:如何在Python中验证变量是数字?,python,Python,我正在写一个关于工程主题的代码,它要求用户输入几个值,然后程序将处理这些值 目前,我有以下代码: while True: strainx =input("Please enter a value for strain in the x-direction: ") num_format = re.compile("^[1-9][0-9]*\.?[0-9]*") isnumber = re.match(num_format,strainx) if isnumber:
while True:
strainx =input("Please enter a value for strain in the x-direction: ")
num_format = re.compile("^[1-9][0-9]*\.?[0-9]*")
isnumber = re.match(num_format,strainx)
if isnumber:
break
简单地说,我试图要求用户为straintx输入一个值,这是一个数字。如果用户输入的不是数字,则问题将重复,直到用户输入数字为止。但是,通过使用此方法,代码不接受小数,并且在某些情况下用户必须输入小数。有什么办法可以解决这个问题吗?如果您使用的是Python 2,而不是使用正则表达式,那么您可以使用Python内置的类型检查机制 让我们在straintx不是数字时循环,然后检查最新输入是否是数字
is_number = False
while not is_number:
strainx =input("Please enter a value for strain in the x-direction: ")
is_number = isinstance(strainx, float) or isinstance(strainx, int)
如果您使用的是Python 2,而不是正则表达式,那么可以使用Python的内置类型检查机制 让我们在straintx不是数字时循环,然后检查最新输入是否是数字
is_number = False
while not is_number:
strainx =input("Please enter a value for strain in the x-direction: ")
is_number = isinstance(strainx, float) or isinstance(strainx, int)
如果用户输入了无法转换的内容,请尝试转换为浮点并捕获ValueError:
while True:
strainx = input("Please enter a value for strain in the x-direction: ")
try:
number = float(strainx)
break # if valid entry we break the loop
except ValueError:
# or else we get here, print message and ask again
print("Invalid entry")
print(number)
浮子铸件包括1 a 1.123等
如果您不想接受零,您可以在强制转换后检查数字是否为零,我假设负数也无效,因此我们可以检查数字是否为非只要尝试强制转换为浮点数,并在用户输入无法强制转换的内容时捕获ValueError:
while True:
strainx = input("Please enter a value for strain in the x-direction: ")
try:
number = float(strainx)
break # if valid entry we break the loop
except ValueError:
# or else we get here, print message and ask again
print("Invalid entry")
print(number)
浮子铸件包括1 a 1.123等
如果你不想接受零,你可以在施法后检查数字是否为零,我认为负数也是无效的,因此我们可以检查数字是否不如果你坚持使用正则表达式,此模式似乎有效:
"^(\-)?[\d]*(\.[\d]*)?$"
匹配可选负号,匹配任意位数,可选小数与任意位数
提示:您可以在if语句中直接使用isnumber=boolre.matchnum_格式、straintx或后面的部分。如果您坚持使用正则表达式,此模式似乎有效:
"^(\-)?[\d]*(\.[\d]*)?$"
匹配可选负号,匹配任意位数,可选小数与任意位数
提示:您可以在if语句中直接使用isnumber=boolre.matchnum_格式、strainx或后面的部分。如果您正在查找整数检查,请尝试以下操作-
isinstance( variable_name, int )
try:
number = float(variable_name)
print "variable is number"
except ValueError:
print "Not a number"
如果它返回True,那么变量是number,否则它是其他变量
但如果要检查字符值是否为number。eg-a=2
上面的脚本将返回False。
那么试试这个-
isinstance( variable_name, int )
try:
number = float(variable_name)
print "variable is number"
except ValueError:
print "Not a number"
如果要查找整数检查,请尝试以下操作-
isinstance( variable_name, int )
try:
number = float(variable_name)
print "variable is number"
except ValueError:
print "Not a number"
如果它返回True,那么变量是number,否则它是其他变量
但如果要检查字符值是否为number。eg-a=2
上面的脚本将返回False。
那么试试这个-
isinstance( variable_name, int )
try:
number = float(variable_name)
print "variable is number"
except ValueError:
print "Not a number"
这可能会有帮助:这个问题可以重新表述为如何验证变量是一个数字吗?这个问题的可能重复可能会有帮助:这个问题可以重新表述为如何验证变量是一个数字吗?字符串如何成为浮点或int的实例的可能重复?Python 2.X中的输入将把输入转换为合理的数据类型,即“x”将是字符串,2将是int,2.2将是float。用户将如何在非字符串的对象上使用正则表达式?Input返回python 3中的字符串。没有理由假设程序员没有因预期使用正则表达式而出错。我之前在评论部分要求进一步澄清,看看他们是否问了他想问的问题。字符串如何成为float或int的实例?Python 2.X中的输入将把输入转换为合理的数据类型,即“X”将是string,2将是int,2.2将是float。用户将如何在非字符串的对象上使用正则表达式?Input返回python中的字符串3没有理由假设程序员没有因预期使用正则表达式而出错。我之前在评论部分要求进一步澄清,看看他们是否问了他想问的问题;请求原谅比得到允许容易。假设它是一个vaid数,然后抓住它不是的情况。好的,非常感谢,这很有效!我有几个这样的输入。对于其中一个,我想指定输入也不能等于零,有没有办法做到这一点?当然。尝试强制转换后,添加一个if检查,查看数字是否为零。如果是这样,请打印一条消息,然后使用“继续”将中断放在ifI之外。我一直试图将其写入程序,但我真的不明白如何将其写入。你能再给我一些指导吗?谢谢这是;请求原谅比得到允许容易。假设它是一个vaid数,然后抓住它不是的情况。好的,非常感谢,这很有效!我有几个这样的输入。对于其中一个,我想指定输入也不能等于零,有没有办法做到这一点?
当然尝试强制转换后,添加一个if检查,查看数字是否为零。如果是这样,请打印一条消息,然后使用“继续”将中断放在ifI之外。我一直试图将其写入程序,但我真的不明白如何将其写入。你能再给我一些指导吗?感谢使用Python 3,输入的返回值将始终是一个字符串,无论其内容如何,因此instanceof check在那里永远不会工作。假设使用Python 3,输入的返回值将始终是一个字符串,无论其内容如何,因此instanceof check在那里永远不起作用。您不需要将单个字符类转义序列\d放入单独的字符类[]。你也不需要逃避破折号。您可以将表达式缩短为^-?\d*\。\d*?$。如果使用re.match,实际上不需要插入符号^。不需要将单个字符类转义序列\d放入单独的字符类[]。你也不需要逃避破折号。您可以将表达式缩短为^-?\d*\。\d*?$。如果使用re.match,实际上不需要插入符号。