在Python中,测试输入是否为格式良好的数字的最Pythonic方式是使用异常处理和正则表达式。以下是一个示例:
import re
def is_valid_number(input_str):
try:
float(input_str)
return True
except ValueError:
return False
def is_valid_number_regex(input_str):
pattern = r'^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$'
return bool(re.match(pattern, input_str))
input_str = "123.45"
if is_valid_number(input_str):
print("The input is a valid number")
else:
print("The input is not a valid number")
if is_valid_number_regex(input_str):
print("The input is a valid number using regex")
else:
print("The input is not a valid number using regex")
在这个示例中,我们定义了两个函数:is_valid_number
和is_valid_number_regex
。第一个函数使用异常处理来测试输入是否为有效数字,而第二个函数使用正则表达式来测试输入是否为有效数字。
在这个示例中,我们使用了float()
函数来尝试将输入转换为浮点数。如果输入是有效数字,那么float()
函数将不会引发异常,我们将返回True
。如果输入不是有效数字,那么float()
函数将引发ValueError
异常,我们将返回False
。
在第二个函数中,我们使用了正则表达式来测试输入是否为有效数字。正则表达式的模式是^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$
,它匹配以下模式:
e
或E
开头,后面跟着可选的正负号和至少一个数字如果输入匹配正则表达式模式,那么re.match()
函数将返回一个匹配对象,我们将返回True
。否则,我们将返回False
。
在这个示例中,我们使用了两个不同的测试方法来测试输入是否为有效数字,并且我们使用了Python的异常处理和正则表达式功能来实现这些测试方法。
领取专属 10元无门槛券
手把手带您无忧上云