编写函数判断给定字符串是否为有效数字。 (有效数字列举:["2", "089", "-0.1", "+3.14", "2e10", "3E-7"])
时间: 2023-10-12 16:06:22 浏览: 137
可以使用 Python 内置的字符串方法和正则表达式来判断一个字符串是否为有效数字。
以下是使用正则表达式的代码:
```python
import re
def is_valid_number(s):
pattern = r'^\s*([-+]?(\d+(\.\d*)?|\.\d+)([eE][-+]?\d+)?)\s*$'
return bool(re.match(pattern, s))
```
使用示例:
```python
>>> is_valid_number("2")
True
>>> is_valid_number("089")
True
>>> is_valid_number("-0.1")
True
>>> is_valid_number(" 3.14")
True
>>> is_valid_number("2e10")
True
>>> is_valid_number("3E-7")
True
>>> is_valid_number("1.2.3")
False
>>> is_valid_number("abc")
False
>>> is_valid_number("1.")
True
```
这里使用了正则表达式 `r'^\s*([-+]?(\d+(\.\d*)?|\.\d+)([eE][-+]?\d+)?)\s*$'` 来进行匹配,这个正则表达式的含义如下:
- `^` 表示以正则表达式开始;
- `\s*` 表示可能有若干个空格;
- `[-+]?` 表示可能有一个正负号;
- `(\d+(\.\d*)?|\.\d+)` 表示一个整数或者一个小数,其中整数部分可以有多位数字,小数部分可以没有,也可以有多位数字,但是不能只有小数点;
- `([eE][-+]?\d+)?` 表示一个科学计数法的指数部分,其中 `e` 或 `E` 表示科学计数法的基数,后面可能有一个正负号和若干个数字,这个部分可以没有;
- `\s*` 表示可能有若干个空格;
- `$` 表示以正则表达式结束。
使用 Python 内置的字符串方法也可以实现判断一个字符串是否为有效数字:
```python
def is_valid_number(s):
try:
float(s)
return True
except ValueError:
return False
```
使用示例:
```python
>>> is_valid_number("2")
True
>>> is_valid_number("089")
True
>>> is_valid_number("-0.1")
True
>>> is_valid_number(" 3.14")
True
>>> is_valid_number("2e10")
True
>>> is_valid_number("3E-7")
True
>>> is_valid_number("1.2.3")
False
>>> is_valid_number("abc")
False
>>> is_valid_number("1.")
True
```
这里使用了 Python 内置的 `float()` 函数来将字符串转换为浮点数,如果转换失败就会抛出一个 ValueError 异常,我们可以利用这个异常来判断这个字符串是否为有效数字。
阅读全文