Python写出IP合法性(初学者)

文章介绍了如何判断IP地址的合法性,包括使用正则表达式、IPy类库和字符串分割法。通过示例代码展示了使用字符串分割法进行IP验证的过程,检查IP是否由4段0-255的数字组成。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如何判定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种方法:

  1. 正则表达式判定 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地址合法性判断_马拉萨的春天的博客-优快云博客

  2. 引用IPy类库  PS:本人目前能力 写不出能够入大家法眼的,网上也有很多详细介绍

  3. 字符串分割法 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 而是懂得逻辑能够自己写出自己的代码

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值