题解 | #合法IP#
https://www.nowcoder.com/practice/995b8a548827494699dc38c3e2a54ee9
def judge(str1): str2=str1.replace('.','') #将【.】去除,遍历str只要不是数字,就返回NO for i in str2: if not i.isdigit(): return 'NO' lis1=str1.split('.') #根据【.】分割成列表,当str第一个元素是【.】,或者两个【.挨在一起】,分割后列表中就会出现空字符串【‘’】,此时需要返回NO for i in lis1: if i == '': return 'NO' if len(lis1)!=4: #首先判断列表长度,不为4的都返回NO return 'NO' else: for i in range(4): if len(lis1[i])==3 and lis1[i][0]=='0' : #当i是三位数且第一位是0时返回NO return 'NO' elif len(lis1[i])==2 and lis1[i][0]=='0': #当i是两位数且第一位是0时返回NO return 'NO' else: #当i的整形值不在【0~255】之间时返回NO if int(lis1[i])<0 or int(lis1[i])>255: return 'NO' #如果for循环结束了,都没有返回值,则返回YES return 'YES' n=input() print(judge(n))