用户输入由一组手机号码构成的列表(元素为字符串),编写程序判断它们是否符合手机号码的规则,即由11位阿拉伯数字组成。先判断字符串位数是否正确,如果不对则输出wrong weishu;如果字符串包含非数字字符则 输出wrong char, 如果符合要求则输出ok。输出分行显示。定义2个Exception的子类WeishuError和CharError, 分别处理上述2种异常。
时间: 2024-02-21 22:56:45 浏览: 141
好的,我可以帮你编写这个程序。以下是 Python 代码实现:
```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")
elif len(number) != 11:
raise WeishuError("wrong weishu")
else:
print("ok")
# 测试样例
numbers = ['12345678901', '1234567890a', '123456789011']
try:
check_phone_numbers(numbers)
except WeishuError as e:
print(e)
except CharError as e:
print(e)
```
首先定义了两个异常类`WeishuError`和`CharError`,分别处理位数错误和非数字字符错误。然后定义了一个函数`check_phone_numbers`,参数为一个手机号码列表`numbers`。函数遍历列表中的每个手机号码,如果不是纯数字则抛出`CharError`异常,如果长度不为11则抛出`WeishuError`异常,否则输出`ok`。
最后,我们定义一个测试样例,测试手机号码列表:`['12345678901', '1234567890a', '123456789011']`。在`try`块中调用`check_phone_numbers`函数,如果抛出`WeishuError`异常则打印错误信息`wrong weishu`,如果抛出`CharError`异常则打印错误信息`wrong char`。
阅读全文