全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 python论坛
1265 4
2019-12-25
2019-12-25_213742.png

个人代码如下:

def verify():
    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]

    number=input('Enter you number: ')
    if len(number)!=11:
        print('Invalid length, your number should be in 11 digits')
        verify()
    elif number[0:2] in CN_mobile:
        print('Operator: China mobile')
    elif number[0:3] in CN_mobile:
        print('Operator: China mobile')
    elif number[0:2] in CN_union:
        print('Operator: China Union')
    elif number[0:3] in CN_union:
        print('Operator: China Union')
    elif number[0:2] in CN_telecom:
        print('Operator: China Telecom')
    elif number[0:3] in CN_telecom:
        print('Operator: China Telecom')
    else:
        print('No such a operator')
        verify()
verify()


但是运行之后就是下面这样

Enter you number: 123
Invalid length, your number should be in 11 digits
Enter you number: 15962332563
No such a operator
Enter you number:

不知道错在哪里
还请高手帮忙指点

谢谢


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2019-12-26 11:36:15
input is a string and the lists are all lists of integers.
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2020-1-8 19:28:27
input进来的是string字符串,需要转换成列表list才能判断长度吧
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2020-1-9 07:02:53
楼主的代码有几处错:
1. number变量是字符串,它的前三或前四位任然是字符串,要将字符串转变成整数后,才能和三个LIST里的元素相比较,因为楼主定义的那三个LIST的元素都是整数;
2. 取前三位的正确写法是number[0:3],而不是number[0:2]。同理,取前四位的正确写法是number[0:4];
3. if else那段代码的逻辑有错。楼主的本意是检查电话号码的前三或前四位,但按照楼主那段代码的逻辑,如果电话号码的前三位是170,程序会错误地将它归为China mobile。正确的做法是:如果前三位是170,则要检查前四位。

以下是我写的代码,在我电脑上能正确给出结果。

def verify():
    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]

    number=input('Enter you number: ')
    if len(number)!=11:
        print('Invalid length, your number should be in 11 digits')
        return
    elif number[0:3] == '170':
        prefix = int(number[0:4])
    else:
        prefix = int(number[0:3])
        
    if prefix in CN_mobile:
        print('Operator: China mobile')
    elif prefix in CN_union:
        print('Operator: China Union')
    elif prefix in CN_telecom:
        print('Operator: China Telecom')
    else:
        print('No such a operator')
        
    return
   
verify()
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2020-1-16 23:12:06
thanks for sharing
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群