输入一串字符,判断输入的手机号码是否有效
问题分析:
1、用Phone表示输入的字符串。
2、手机号码的第一个特点,就是字符串全部都是数字字符,我们可以使用isnumeric0函数来对此进行判断。
3、手机号码的第二个特点是号码长度为11。现在国内运营商开通的有效手机号码网段如下。
4、移动网段:134、 135、136、137、138、139、150、151、152、 157、158. 159、182、183、 184、187、188、 147、 178
联通网段:130、 131、132、155、156、185、186、145、 176、179
电信网段:133、 153、180、181、189、177
5、可以将上面所有的网段放到列表hmd中,并判断字符串Phone的头三个数字字符是否在列表hmd中,从而判断字符串Phone 是否为有效的手机号码。在判断时一定要注意类型问题,Phone 是字符串,列表hmd中的元素如果是数字的话,就需要先进行类型转换,之后再进行判断。
hmd=[134,135,136,137,138,139,150,151,152,157,158,159,182,183,184,187,188,147,178,
130,131,132,155,156,185,186,145,176,179,
133,153,180,181,189,177]#列表
Phone=input("输入手机号码:")
if Phone.isnumeric():#判断Phone是否全部都是数字字符
if len(Phone)==11:#判断手机号是否为11位
if int(Phone[0:3])in hmd:#如果输入的手机号前三位数字在列表中,则输出"是一个有效号码"
print(Phone,"是一个有效号码")
else:#如果输入的手机号前三位数字不在列表中,则输出"不是有效运营商网段"
print(Phone,"不是有效运营商网段")
else:#如果手机号不是11位,则输出"号码位数不对!"
print(Phone,"号码位数不对!")
else:#如果输入的手机号字符串不全是数字,则输出"号码必须全是数字"
print(Phone,"号码必须全是数字")
程序运行结果:
![](https://i-blog.csdnimg.cn/blog_migrate/9a7fa3c67f61da79ffb712808c81fdec.png)
使用Python 提供的第三方库Phone,可以轻松地获取手机号码的网段、归属省份、归属城市 邮政编码、区号和运营商归属等信息。有兴趣的读者可以查阅相关资料并实践一下。