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