当前位置: 首页 > article >正文

HJ18 识别有效的IP地址和掩码并进行分类统计

题目

HJ18 识别有效的IP地址和掩码并进行分类统计

思路

先将十进制带点的ip地址转成二进制序列(没有点),再直接比较。
rjust右对齐,左边补充0.
re.search(“/./.”, str) 找str中的"…", 找到第一个匹配的返回一个object,找不到返回None。

代码

import sys
import re 

def get_bin(input):
    '''
    input: 10 base with dot
    output: 01 base no bot
    '''
    str_ = ""
    for e in input.split("."):
        str_ += bin(int(e))[2:].rjust(8, "0")

    return str_
A,B,C,D,E,EIM,P = 0, 0, 0, 0, 0, 0, 0
for line in sys.stdin:
    a = line.split()[0]
    ip, m = a.split("~")
    if m == "0.0.0.0" or m == "255.255.255.255":
        EIM += 1 
        continue 
    # if ip.split(".")[0] in ("0", "127"):  # 如果写成ip.split(".")[0]=="0" or ip.split(".")[0]=="127" 不对 因为== 和 or 同等级会左右依次比较
    #     continue
    if (ip.split(".")[0]=="0") or (ip.split(".")[0]=="127"): # 加括号可以
        continue
    if re.search("01", get_bin(m)):
        EIM += 1
        continue
    bin_ip = get_bin(ip)
    if re.search(r"/./.", ip):
        EIM += 1
    elif get_bin("1.0.0.0") <= bin_ip <= get_bin("126.255.255.255"):
        A += 1
        if get_bin("10.0.0.0") <= bin_ip <= get_bin("10.255.255.255"):
            P += 1
    elif get_bin("128.0.0.0") <= bin_ip <= get_bin("191.255.255.255"):
        B += 1
        if get_bin("172.16.0.0") <= bin_ip <= get_bin("172.31.255.255"):
            P += 1
    elif get_bin("192.0.0.0") <= bin_ip <= get_bin("223.255.255.255"):
        C += 1
        if get_bin("192.168.0.0") <= bin_ip <= get_bin("192.168.255.255"):
            P += 1
    elif get_bin("224.0.0.0") <= bin_ip <= get_bin("239.255.255.255"):
        D += 1
    elif get_bin("240.0.0.0") <= bin_ip <= get_bin("255.255.255.255"):
        E += 1
print("{} {} {} {} {} {} {}".format(A,B,C,D,E,EIM,P))
    

参考

【华为机试Python3题解】HJ18识别有效的IP地址和掩码并进行分类统计


http://www.kler.cn/a/106489.html

相关文章:

  • [Qt]系统相关-多线程、线程安全问题以及线程的同步机制
  • MATLAB语言的文件操作
  • 港口危货储存单位生产管理人员题库附答案
  • 计算机网络 (54)系统安全:防火墙与入侵检测
  • Java - WebSocket
  • Git下载安装
  • 【算法|动态规划No30】leetcode5. 最长回文子串
  • gRPC之gateway集成swagger
  • 【C#】LIMS实验室信息管理系统源码
  • 强化学习------PPO算法
  • CSGO游戏搬砖的10个冷知识,90%的人还不知道
  • HarmonyOS 音频开发指导:使用 OpenSL ES 开发音频播放功能
  • 腾讯云学生专享云服务器介绍及购买攻略
  • 刷题笔记day03-链表
  • 知识图谱--Jena基础操作和检索推理应用
  • 工作之外看点书籍的一点体会
  • VC++程序崩溃时,使用Visual Studio静态分析dump文件
  • java面试--线程总结
  • LLM系列 | 22 : Code Llama实战(下篇):本地部署、量化及GPT-4对比
  • 中间件安全-CVE 复现K8sDockerJettyWebsphere漏洞复现
  • 国产服务器安装onlyoffice详细教程
  • Spring Cloud Config
  • [编程工具]_vimrc配置
  • Go结构体接口反射
  • 回溯法:雀魂启动!
  • 网络协议--广播和多播