Python练习之IP地址合法性判断

Python练习之IP地址合法性判断


互联网上的每台计算机都有-一个IP,合法的IP格式为: A.B.C.D。 其中
A、B、C、D均为[0, 255]中的整数。为了简单起见,我们规定这四个整数中不允许有前导零存在,如001。 现在给你-一个字符串s (s不含空白符),请你判断s是不是合法IP,若是,输出Yes,否则输出No。如: s=“202.115.32.24”, 则输出Yes; s=“a.11.11.11”, 则输出No

'''
切分IP地址
判断第i个是否符合要求
先判断是否为整数 
再判断首位是否为0
再判断是否在0-255内
都符合 为Yes
'''         
loc=input()
mem=loc.split('.')
isip=False

if len(mem)!=4:#如果个数不为4
    isip=False
else:#此时有4位
    for i in range(4):
        try:
            a=int(mem[i])#判断是否为整数,并赋值
            if(mem[i][0]==0):
                   isip=False
                   break
            else:
                if(a>255 or a<0):
                    isip=False
                    break
                else:
                    isip=True
        except:
           isip=False
           break
 if isip==True:
    print ("YES")   
else:
    print("NO")

一、运用知识点:
1.列表拆分split方法

2.先设定“真”“假”变量,最后再进行判断 (亮点)

3.try 与except用法

4.系统自带isinstance()函数,判断是否为int类型

二、一些尝试

1.想得到二维数组,于是split了两次:
第一次是mem=loc.split(’.’)
第二次又用了icon=mem.split()
但后来发现无需如此操作,只需“mem[i][0]==0”直接当二维数组使用即可
可见,pythton 比 C++更接近自然语言

2.python中且和或不是(&&)和(||)而是(and)和(or)

3.int(i)只能转化全由数字组成的str为int

4.本来用的是exit(),但是会在spyder环境下会直接重启,其退出执行整个程序的效果只能在编译器中显现。所以后来用break,替代了exit。

你可能感兴趣的:(python)