打卡day03

"""
我们在注册应用的时候,常常用手机号作为账户名,在短信验证之前一般都会检验号码的真实性,如果不存在的号码就不会放验证码。检验规则如下:
长度不少于11位
是移动、联通、电信号段中的一个电话号码
移动号段,联通号段、电信号段如下:
CN_mobile = [134,135,136,137,138,139,150,151,152,157,158,159,182,183,184,
187,188,147,178,1705]
CN_union = [130,131,132,155,156,185,186,145,176,1709]
CN_telecom = [133,153,180,181,189,177,1700]
手机号验证小提示:使用 while 来进行位数检查、用 in 来判断运营商
"""


def test_number():

    while True:
        number = input('enter your number:')
        CN_mobile = {134, 135, 136, 137, 138, 139, 150, 151, 152, 157, 158, 159, 182, 183, 184, 187, 188, 147, 178, 1705}
        CN_union = [130, 131, 132, 155, 156, 185, 186, 145, 176, 1709]
        CN_telecom = [133, 153, 180, 181, 189, 177, 1700]
        first_three = int(number[0:3])
        first_four = int(number[0:4])
        if len(number )== 11:
            if first_three in CN_mobile or first_four in CN_mobile:
                print('OPerator:China Mobile')
                print('我们正在通过短信向你的手机发送验证码',number)
                break
            elif first_three in CN_union :
                print('Operator:China union')
                print('我们正在通过短信向你的手机发送验证码',number)
                break

            elif first_three in  CN_telecom :
                print('Operator:China telecom')
                print('我们正在通过短信向你的手机发送验证码',number)
            else:
                print('没有这种操作')
        else:
                print('无效长度,你的号码应该输入11位')



test_number()

在程序中,常常有一些无限循环的情况,比如当一个程序没有异常发生的时候,让循环一直执行,这时候就需要用到while(True)....break,这种用法;

如果你使用了if first_three or first_four in CN_mobile :会一直得到CN_mobile的结果,这是因为在布尔值运算中130 or1301 会为True

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值