存在一种虚拟IPv4地址,由4小节组成,每节的范围为0~255,以#号间隔,虚拟IPv4地址可以转换为一个32位的整数,例如:
现以字符串形式给出一个虚拟IPv4地址,限制第1小节的范围为1128,即每一节范围分别为(1~128)#(0~255)#(0~255)#(0~255),要求每个IPv4地址只能对应到唯一的整数上。如果是非法IPv4,返回invalid IP
输入一行,虚拟IPv4地址格式字符串
输出一行,按照要求输出整型或者特定字符
输入
100#101#1#5输出
1684340997输入
1#2#3输出
invalid IP代码:
# 读取输入
ip = input().strip()
# 分割字符串
parts = ip.split('#')
# 必须是4段
if len(parts) != 4:
print("invalid IP")
else:
try:
# 转为整数
p1 = int(parts[0])
p2 = int(parts[1])
p3 = int(parts[2])
p4 = int(parts[3])
# 校验范围:第一段 1~128,其余 0~255
if not (1 <= p1 <= 128):
print("invalid IP")
elif not (0 <= p2 <= 255):
print("invalid IP")
elif not (0 <= p3 <= 255):
print("invalid IP")
elif not (0 <= p4 <= 255):
print("invalid IP")
else:
# 计算 32 位整数
res = (p1 << 24) | (p2 << 16) | (p3 << 8) | p4
print(res)
except:
# 非数字非法
print("invalid IP")