前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用python验证IP地址

用python验证IP地址

作者头像
算法与编程之美
发布2024-04-14 08:27:10
670
发布2024-04-14 08:27:10
举报

1 问题

如何用python验证IP地址。

给定一个字符串queryIP。如果是有效的IPv4地址,返回"IPv4";如果是有效的IPv6地址,返回“IPv6”;如果不是上述类型的IP地址,返回“Neither"。

有效的IPv4地址 是“x1.x2.X3.×4”形式的IP地址;其中0<=Xi<=255且Xi不能包含前导零。一个有效的IPv6地址是一个格式为“x1:x2:x3:x4:x5:x6:x7:x8"的IP地址。其中:1<=Xi.length <=4;Xi是一个十六进制字符串,可以包含数字、小写英文字母('a'到‘f')和大写英文字母(‘A'到'F');在Xi中允许前导零。

2 方法

  1. 首先定义Solution类;
  2. 定义两个子函数判断两种IP串;
  3. 运用多层判断,根据IP地址子串,字符等存在条件进行验证。
  4. 遍历前五个字符。 因为“或”一定出现在前五个字符中。

代码清单 1

class Solution:def validIPAddress(self, queryIP: str) -> str:def validIPv6(IP_string): IP_lst = IP_string.split(':') if len(IP_lst) != 8: # IPv6必须由8个子串组成 return False for IP in IP_lst: if not 1 <= len(IP) <= 4: # 每个子串小于4个字符 return False for char in IP: if not ('0' <= char <= '9' or 'a' <= char <= 'f' or 'A' <= char <= 'F'): return False return True def validIPv4(IP_string): IP_lst = IP_string.split('.') if len(IP_lst) != 4: # IPv4必须由4个子串组成 return False for IP in IP_lst: if not IP.isnumeric() or not 0 <= int(IP) <= 255: return False if str(int(IP)) != IP: # 不能有前导0 return False return True for char in queryIP[:5]: if char == '.': return 'IPv4' if validIPv4(queryIP) else 'Neither' elif char == ':': return 'IPv6' if validIPv6(queryIP) else 'Neither' return 'Neither'

3 结语

针对此类边界条件较多的问题,提出定义类,函数的方法,通过实验,证明该方法是有效的。此方法结合熟练运用了所学的基本python知识,知识虽简单,但需要较清晰的逻辑关系来分类讨论。对验证对象条件的充分理解,是解决此题的关键。希望未来能利用更复杂的python知识解决更多问题。

本文参与?腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-04-12,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 算法与编程之美 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com