首页 > 试题广场 >

判断ip地址是否合法

[编程题]判断ip地址是否合法
  • 热度指数:980 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解


某网络系统需要对输入的IP地址进行合法性判断。IP地址由四个十进制数字组成,每个数字的取值范围是0到255(包含0和255)。
IP地址的格式为X.X.X.X,其中X表示一个十进制数字。系统要求判断输入的IP地址是否合法,即满足以下条件:


1.IP地址由四个数字组成,用点号分隔。

2.每个数字的取值范围是0到255。

3.数字之间没有多余的前导零,例如01是非法的。

4.IP地址不能以点号开始或结束,例如.192.168.0.1和192.168.0.1.是非法的。

不合法的情况下输出"invalid",合法的情况下,你还需要判断是哪一类地址:

A类地址:地址范围从1.0.0.0到126.0.0.0

B类地址:地址范围从128.0.0.0到191.255.255.255

C类地址:范围从192.0.0.0到223.255.255.255
其它地址:合法输入,但是不是A、B、C类
请通过代码实现上述功能


输入描述:
一行字符串,表示需要判断的IP地址


输出描述:
不合法的情况下,输出“invalid”
A类地址,输出“A_address"
B类地址,输出“B_address"
C类地址,输出“C_address"
其它地址,输出“other”
示例1

输入

1.2.3.4

输出

A_address
示例2

输入

1.1.1.256a

输出

invalid
示例3

输入

192.168.0.1

输出

C_address
ip = input()
if ip[0] == '.'&nbs***bsp;ip[-1] == '.':
    print('invalid')
else:
    flag = True
    for i in range(len(ip)):
        if ip[i] != '.' and (ip[i]< '0'&nbs***bsp;ip[i] > '9'):
            flag = False
            print('invalid')
            break
        elif ip[i] == '.':
            if ip[i+1] == '.':
                flag = False
                print('invalid')
                break
    if flag:
        iplist = ip.split('.')
        if len(iplist) != 4:
            print('invalid')
        else:
            flag = True
            for j in iplist:
                if j[0] == '0' and len(j) > 1:
                    flag = False
                    print('invalid')
                    break
                elif int(j) < 0&nbs***bsp;int(j) > 255:
                    flag = False
                    print('invalid')
                    break
            if flag:
                iplist = [int(i) for i in iplist]
                if (iplist[0] >= 1 and iplist[0] < 126)&nbs***bsp;\
                (iplist[0] == 126 and iplist[1] == 0 and iplist[2] == 0 and iplist[3] == 0):
                    print('A_address')
                elif iplist[0] >= 128 and iplist[0] < 192:
                    print('B_address')
                elif iplist[0] >= 192 and iplist[0] < 224:
                    print('C_address')
                else:
                    print('other')

发表于 2023-08-31 11:42:40 回复(0)