如何判定IP合法性呢?首先得知道IP的定义,当然这里要知道IP定义的可以去 @打杂人 某位大佬ip段/数字,如192.168.0.1/24是什么意思?_10.0.192.0/24的网络段是多少_打杂人的博客-优快云博客
IP有4段用 . 这个小点分段 例如192.168.1.1(合法) 255.255.1.1
判断合法?怎么判断3种方法:
- 正则表达式判定 PS:本人目前能力 不会 但是还是查了一下
^(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|[1-9])\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)$
正则表达式可以参考 @马拉萨的春天 大佬 查看正则表达式的详细内容判定IP地址合法性的三种方法_ip地址合法性判断_马拉萨的春天的博客-优快云博客
-
引用IPy类库 PS:本人目前能力 写不出能够入大家法眼的,网上也有很多详细介绍
-
字符串分割法 PS:本人目前能力很会写的
所以我以第三种的方式给大家展示
代码如下
ip = input("请输入合法IP:") #自己输入IP
def f(s): #自定义函数
list = ip.split('.') #以 . 这个字符进行4位分割,依次判断合法
if len(list) != 4: #如果不是4位判定为No
return 'No'
for i in range(4): #for循环4次进行判断
try: #用try,如果执行出错,则后续代码不会继续执行,而是直接跳转至错误处理代码
tmp = int(list[i])
if tmp not in range(0,256): #如果输入的IP 4位判断不在范围内0到255内判定No
return 'No'
except: #try处理如果出错直接跳转此位置处理
return 'No'
return 'Yes'
print(f(ip))
input以此输入IP来代入代码内判断 不多说了吧!
我用def函数 进行自定义只要调用def我就能实现对函数体的调用
split( )函数,指定分隔符对字符串进行切片 ,这是最简便的,让人理解的
- str -- 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。
- num -- 分割次数。默认为 -1, 即分隔所有。
第二步即使 if 判断 ,既然知道了IP是以 . 小点开始分割成4段,那么我就判它分割后的长度 != 4 如果不是判定输出No,那么不合法~~~例如:
那么4段IP过审核了(过 if 判断了)for循环 4次 开始,循环4次是因为IP分割成段就是4段
同时我用 try 语句,如果执行出错,后续代码将不会执行,而直接跳转至错误处理代码,即except语句块开始运行代码处理。
老样子还是 4段 一段段处理判断 从 i 开始(即第一段开始)以int的数据形式放入tmp里,用if进行判断,但是我这里是 not in 从0开始到255结束,如果不在这个范围(0-255)内 判定输出No,例如有一段是超出了(0-255)的:
循环内我们做完了,都是判定错误非法IP进行输出No,但我们总不能光 No 不 Yes 吧(没合法?)
所以return ' Yes ' ! 所以,错误都没有那么就是Yes了
不管是非法 还是合法 都是我 print( f( ip ))输出
希望看到我文章的初学者编程人员不是 ctrl c + ctrl v 而是懂得逻辑能够自己写出自己的代码