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