python作业答案
T2:
题目描述:
编写一个函数来验证输入的字符串是否是有效的 IPv4 或 IPv6 地址。
如果是有效的 IPv4 地址,返回 “IPv4” ;
如果是有效的 IPv6 地址,返回 “IPv6” ;
如果不是上述类型的 IP 地址,返回 “Neither” 。
解题思路:
根据输入的ip地址中的 “.” 和 “:” 来判断输入的ip地址的类型。
IPv4地址判断其中每个数是否在 0-255 之间,每个数前是否有违规的 0 存在。
IPv6地址判断每个字符串由16进制转换成10进制以后是否出现值错误,是否存在 “::”。
我的代码:
def ip_(ip):
res = 0
# 处理IPv4地址
if '.' in ip:
# 切割ip地址
s = ip.split('.')
# 判断ip是不是IPv4
if len(s) != 4:
print('Neither')
else:
for i in s:
if '0' in i and int(i) >= 1:
res += 1
break
if 255 >= int(i) >= 0:
continue
else:
res += 1
break
if res == 0:
print('IPv4')
else:
print('Neither')
# 处理IPv6地址:
if ':' in ip:
if '::' in ip:
print('Neither')
else:
# 切割输入的ip地址
s = ip.split(':')
# 判断这个地址是不是IPv6地址
for i in s:
if len(i) > 4:
res += 1
try:
int(i