文章
5
粉丝
495
获赞
1
访问
44.9k
def Convert(n):
res=""
table="0123456789ABCDEF"
while n>0:
res+=table[n%16]
n//=16
if len(res)<2:
res+="0"*(2-len(res))
return res[::-1]
inp=input().split(".")
if len(inp)!=4:
print("Error")
else:
res="0x"
for numstr in inp:
try:
num=int(numstr)
if num>255 or num<0:
print("Error")
break
else:
res+=Convert(num)
if len(res)==10:
print(res)
except:
print("Error")
break
实现思路:
①读入字符串,按照“.”分割字符串形成列表,判断列表中字符串的个数,若个数为4则进一步判断;否则为不合法的ip地址,退出。
②对于分割后的列表中每一个子串,尝试转换为整型,若出现异常则说明含有整数数字之外的字符,属于不合法的ip地址,退出;否则进一步判断。
③转换为整型的数字在[0,255]内,则为正确的ip地址的一部分,转换为16进制后拼接进入res字符串:若res长度为10(前导0x+4组两位16进制数,共10位),输出,再转到②读下一个子串,否则不输出,转到②;否则属于不合法的ip地址,退出。
登录后发布评论
暂无评论,来抢沙发