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。