用户输入由一组手机号码构成的列表(元素为字符串),编写程序判断它们是否符合手机号码的规则,即由11位阿拉伯数字组成。先判断字符串位数是否正确,如果不对则输出wrong weishu;如果字符串包含非数字字符则输出wrong char,如果符合要求则输出ok。输出分行显示。定义2个Exception的子类WeishuError和CharError,分别处理上述2种异常。 【注意】运行效果应如下所示,格式错误算结果错误。 测试1:(第1行为输入,第2行为输出) ['13912341234','1391234123x','139000'] ok wrong char wrong weishu
时间: 2024-03-04 07:50:08 浏览: 168
判断手机号码是否正确
3星 · 编辑精心推荐
好的,我会尽力回答你的问题。以下是我的回答:
```python
class WeishuError(Exception):
pass
class CharError(Exception):
pass
def check_phone_numbers(numbers):
for number in numbers:
if not number.isdigit():
raise CharError("wrong char")
if len(number) != 11:
raise WeishuError("wrong weishu")
print("ok")
# 测试
numbers = ['13912341234','1391234123x','139000']
try:
check_phone_numbers(numbers)
except WeishuError as e:
print(str(e))
except CharError as e:
print(str(e))
```
解释一下:
首先我们定义了两个异常类 `WeishuError` 和 `CharError`,分别用于处理位数错误和字符错误。这两个类都继承自 `Exception` 类。
然后我们定义了一个 `check_phone_numbers` 函数,用于检查输入的手机号码是否符合规则。该函数接收一个列表 `numbers`,遍历列表中的每个元素,判断其是否为纯数字并且是否为11位。如果不符合要求,则抛出相应的异常;如果符合要求,则输出 "ok"。
最后我们进行了一次测试,给出了一个包含有格式错误的手机号码列表,并尝试检查它们是否符合规则。如果有异常抛出,则捕获并输出异常信息;否则不做任何处理。
阅读全文