鱼C论坛

 找回密码
 立即注册
12
返回列表 发新帖
楼主: zltzlt

Python:每日一题 388

[复制链接]
发表于 2020-5-12 10:38:48 | 显示全部楼层
领鱼币
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-12 11:10:08 | 显示全部楼层
  1. import re


  2. def func388(s):
  3.     ipv4 = r"^((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$"
  4.     ipv6 = r"^([\da-fA-F]{1,4}:){7}[\da-fA-F]{1,4}$"

  5.     if re.fullmatch(ipv4, s):
  6.         return "IPv4"
  7.     elif re.fullmatch(ipv6, s):
  8.         return "IPv6"
  9.     else:
  10.         return 'Neither'
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-14 13:38:59 | 显示全部楼层

输入 "2001:0db8:85a3:0:0:8A2E:0370:7334:" 结果有误
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-14 13:40:06 | 显示全部楼层
Twilight6 发表于 2020-5-1 23:29
凑合吧 最后附上自己的测试

输入 '1.1.1.1.' 出错
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-14 13:45:07 | 显示全部楼层

输入 "1e1.4.5.6" 出错
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-15 23:41:10 | 显示全部楼层
  1. import re

  2. def check_ip(a=None):
  3.     a = "2001:0db8:85a3:0:0:8A2E:0370:7334"
  4.     ipv4_flag = False

  5.     if ':' not in a:

  6. 没有鱼币的苦逼-.-
  7.         for k in a.split('.'):
  8.             if str(int(k)) != k:
  9.                 break
  10.             if 255 < int(k) or int(k) < 0:
  11.                 break
  12.         else:
  13.             ipv4_flag = True

  14.     if ipv4_flag:
  15.         print("IPV4")
  16.     else:
  17.         if re.match("([\dabcdef]{1,4}:){7}[\dabcdef]{1,4}$", a, re.I):
  18.             print("IPV6")
  19.         else:
  20.             print("Neither")
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-16 00:18:48 | 显示全部楼层
  1. import re


  2. def check_ip(a=None):
  3.     a = "2001:0db8:85a3:0:0:8A2E:0370:7334"
  4.     ipv4_flag = False

  5.     try:
  6.         if ':' not in a:

  7.             for k in a.split('.'):

  8.                 if str(int(k)) != k:
  9.                     break
  10.                 if 255 < int(k) or int(k) < 0:
  11.                     break
  12.             else:
  13.                 ipv4_flag = True
  14.     except:
  15.         pass

  16.     if ipv4_flag:
  17.         print("IPV4")
  18.     else:
  19.         if re.match("([0-9abcdef]{1,4}:){7}[0-9abcdef]{1,4}$", a, re.I):
  20.             print("IPV6")
  21.         else:
  22.             print("Neither")
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-19 17:18:04 | 显示全部楼层
  1. def fun388(x):
  2.     hex_temp = ':0123456789abcdefABCDEF'
  3.     dec_temp = '.0123456789'
  4.     if '.' in x and ':' not in x:
  5.         if len(x.split('.')) > 4:
  6.             return 'Neither'
  7.         for i in x:
  8.             if i not in dec_temp:
  9.                 return 'Neither'
  10.         for i in x.split('.'):
  11.             if i[0] == '0' or int(i) > 255:
  12.                 return 'Neither'
  13.         else:
  14.             return 'IPv4'
  15.     if ':' in x and '.' not in x:
  16.         if len(x.split(':')) > 16 or len(x.split(':')) < 8:
  17.             return 'Neither'
  18.         for i in x:
  19.             if i not in hex_temp:
  20.                 return 'Neither'
  21.         for i in x.split(':'):
  22.             if len(i) > 4:
  23.                 return 'Neither'
  24.         else:
  25.             return 'IPv6'
  26.     return 'Neither'
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-23 17:30:35 | 显示全部楼层
  1. def fun388(address):
  2.     if '.' in address and address.count('.') == 3:
  3.         splited = address.split('.')
  4.         for each in splited:
  5.             if each[0] == '0' or not each.isdecimal() or int(each) < 0  or int(each) > 255:
  6.                 break

  7.         else:
  8.             return 'IPv4'

  9.     elif ':' in address and address.count(':') == 7:
  10.         splited = address.split(':')
  11.         for each in splited:
  12.             if not each or len(each) > 4:
  13.                 break

  14.         else:
  15.             return 'IPv6'

  16.     return 'Neither'
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-31 10:41:44 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-19 17:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表