Python问题求解。

IPv4采用三十二位二进制位数记录地址。在实际使用中,IP地址通常使用点分十进制记法表示。将IP地址评分为四段,每段地址使用0到255围内的十进制无符号整数表示。另外IPv4地址根据第一段IP的值分为5类地址。写一个程序,从键盘输入一个字符串形式的IP地址,判断IP地址是否是合法的IPv4地址。如果是合法地址,判断其地址类型。(A0127b类128191,c类192到223。d类224239E类,240254。)

测试结果:

img

img

代码如下:

# 判断字符是否是整数
def isInt(s):
    for i in s:
        if i < '0' or i > '9':
            return False
    return True


# 判断是否是合法ip
def isvalid(s):
    ls = s.split('.')
    if len(ls) != 4:
        return False
    else:
        ip = []
        for i in ls:
            if isInt(i) == False:
                return False
            v = int(i)
            if v < 0 or v > 255:
                return False
            else:
                ip.append(v)
        if ip[0] < 128:
            print('A类')
        elif ip[0] < 192:
            print('B类')
        elif ip[0] < 224:
            print('C类')
        elif ip[0] < 240:
            print('D类')
        else:
            print('E类')
        return True


s = input()
b = isvalid(s)
if b == False:
    print('不合法')

完整代码如下,望采纳

import re

def check_ipv4(ip):
    # 判断IP地址是否是合法的IPv4地址
    pattern = r"^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$"
    if re.match(pattern, ip):
        # 如果是合法的IPv4地址,判断其地址类型
        segments = ip.split(".")
        if int(segments[0]) in range(0, 128):
            return "A类地址"
        elif int(segments[0]) in range(128, 192):
            return "B类地址"
        elif int(segments[0]) in range(192, 224):
            return "C类地址"
        elif int(segments[0]) in range(224, 240):
            return "D类地址"
        else:
            return "E类地址"
    else:
        return "不合法的IPv4地址"

ip = input("请输入一个字符串形式的IP地址:")
# 判断IP地址是否是合法的IPv4地址
check_ipv4(ip)