要对ip地址的规则较为熟悉,每个部分只有8位,所以一定是小于255的,但是由于是字符串不好比较,所以先比较位数,位数相同再比较字符串大小。因为是无符号的,所以出现符号一概算no。
while True:
try:
str1 = str(input())
k = []
flag = 0
for i in range(len(str1)):
if(str1[i] == '.'):
k.append(i)
if(str1[i] == '-'):
flag = 1
break
if(flag == 0):
for j in range(len(k)):
if(j == 0):
if(k[j] == 3):
if(str1[0:k[j]] > '255'):
flag = 1
break
elif(k[j] > 3):
flag = 1
break
elif(j == len(k)-1):
if(k[j] - k[j-1] == 4):
if(str1[k[j-1]+1:k[j]] > '255'):
flag = 1
break
if(len(str1) - k[j] == 4):
if(str1[k[j]+1:] > '255'):
flag = 1
break
if(k[j] - k[j-1] > 4):
flag = 1
break
if(len(str1) - k[j] > 4):
flag = 1
break
else:
if(k[j] - k[j-1] == 4):
if(str1[k[j-1]+1:k[j]] > '255'):
flag = 1
break
elif(k[j] - k[j-1] > 4):
flag = 1
break
if(flag == 0):
print('YES')
else:
print('NO')
except:
break 


京公网安备 11010502036488号