要对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