华为机考入门python3--(18)牛客18- 识别有效的IP地址和掩码并进行分类统计

分类:字符串

知识点:

  1. 字符串是否由数字组成     my_str.isdigit()

  2. 字符串填充    不足8位左侧填充0    my_str.zfill(8)

题目来自【牛客】

图片

 

import sys
def classify_ip(ip_mask):  ip_class, is_private_ip, mask_class = 'ignore_ip', 0, 'valid_mask'# 解析IP地址和子网掩码  ip, mask = ip_mask.split('~')  ip_parts = ip.split('.')  mask_parts = mask.split('.')# 验证IP地址是否合法  if len(ip_parts) != 4:  ip_class = 'error_ip'  for part in ip_parts:  if not part.isdigit() or int(part) < 0 or int(part) > 255:  ip_class = 'error_ip'  # 验证子网掩码是否合法  if len(mask_parts) != 4:  mask_class = 'error_mask'  for part in mask_parts:  if not part.isdigit() or int(part) < 0 or int(part) > 255:  mask_class = 'error_mask'  # zfill() 是字符串(str)对象的一个方法,用于在字符串的左侧填充零zero,直到字符串达到指定的长度。mask_binary = ''.join([bin(int(part))[2:].zfill(8) for part in mask_parts])# rfind() 是 Python 中字符串(str)对象的一个方法,用于在字符串中从右向左查找子字符串,# 并返回子字符串的最后一个匹配的索引。如果找不到子字符串,则返回 -1。# print(mask_binary)if '01' in mask_binary or mask_binary.count('1') == 0 or mask_binary.count('0') == 0:mask_class = 'error_mask'# IP地址分类  if ip_class != 'error_ip':# 判断是否为私有IPif int(ip_parts[0]) == 10 or (int(ip_parts[0]) == 172 and 16 <= int(ip_parts[1]) <= 31):is_private_ip = 1# 判断IP地址所属的类别if 1 <= int(ip_parts[0]) <= 126:ip_class = 'A'elif 128 <= int(ip_parts[0]) <= 191:ip_class=  'B'elif 192 <= int(ip_parts[0]) <= 223:ip_class = 'C'elif 224 <= int(ip_parts[0]) <= 239:ip_class = 'D'elif 240 <= int(ip_parts[0]) <= 255:ip_class = 'E'else:ip_class = 'ignore_ip'return ip_class, is_private_ip, mask_classcount = {'A': 0, 'B': 0, 'C': 0, 'D': 0, 'E': 0, 'error_ip': 0, 'error_mask': 0, 'private': 0, 'ignore_ip': 0}
for line in sys.stdin:ip_mask = line.strip()# print(ip_mask)ip_class, is_private_ip, mask_class = classify_ip(ip_mask)# print(ip_class, is_private_ip, mask_class)if ip_class == 'ignore_ip':count['ignore_ip'] += 1elif ip_class == 'error_ip':count['error_ip'] += 1elif mask_class == 'error_mask':count['error_mask'] += 1else:count[ip_class] += 1if is_private_ip == 1:count['private'] += 1print(count['A'], count['B'], count['C'], count['D'], count['E'], count['error_ip'] + count['error_mask'], count['private'])

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/645159.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

QT中对于QPushButton样式的调整

文章目录 前言1.QPushButton1.1 新建项目导入资源1.2 添加Push Button并定义样式1.3 调整样式1.4 实际需求情况1.5 背景色和边框 2. 一些概念理解2.1 图片2.2 边距 总结 前言 前段时间在调软件的样式&#xff0c;学到了些新的东西&#xff0c;也碰到了些问题&#xff0c;这里做…

Spring Cloud学习笔记(Ribbon):Ribbon的应用样例

这是本人学习的总结&#xff0c;主要学习资料如下 - 马士兵教育 1、Ribbon简介1.1、架构图1.2、简单实现负载均衡 2、配置负载均衡策略2.1、IRule2.2、使用IRule简单示例2.2.1、Overview2.2.1、注入IRule2.2.2、关联IRule和服务 1、Ribbon简介 我们都知道Ribbon是用于负载均衡…

浅析Java的字符串的底层和相关知识(恳请大佬指正)

本期经验和建议的总结&#xff1a; 在拼接字符串的时候&#xff0c;如果大量拼接时建议使用StringBuilder&#xff0c;在转为字符串。 1&#xff1a;Java的号比较的原理&#xff1a; 在Java中&#xff0c;号在对基本数据类型进行比较时&#xff0c;比较的时具体的数值大小例…

基于Google Gemini 探索大语言模型在医学领域应用评估和前景

概述 近年来&#xff0c;大规模语言模型&#xff08;LLM&#xff09;在理解和生成人类语言方面取得了显著的飞跃&#xff0c;这些进步不仅推动了语言学和计算机编程的发展&#xff0c;还为多个领域带来了创新的突破。特别是模型如GPT-3和PaLM&#xff0c;它们通过吸收海量文本…

C# winform s7.net expected 22 bytes.”

S7.Net.PlcException:“Received 12 bytes: 32-02-00-00-00-00-00-00-00-00-81-04, expected 22 bytes.” 原因是博图的连接机制未勾选

使用CSS3 + Vue3 + js-tool-big-box工具,实现炫酷五一倒计时动效

时间过得真是飞速&#xff0c;很快又要到一年一度的五一劳动节啦&#xff0c;今年五天假&#xff0c;做好准备了吗&#xff1f;今天我们用CSS3 Vue3 一个前端工具库 js-tool-big-box来实现一个炫酷的五一倒计时动效吧。 目录 1 先制作一个CSS3样式 2 Vue3功能提前准备 3…

Linux SDIO-WiFi 协议栈

Linux SDIO-WiFi 协议栈 1. 简介2. BCMDHD2.1 WiFi模组2.2 驱动初始化&#xff08;dhd_module_init&#xff09; 3. Broadcom fullmac WLAN 1. 简介 2. BCMDHD BCMDHD&#xff1a;Broadcom Dongle Host DriverSIP&#xff1a;System In Package 2.1 WiFi模组 2.2 驱动初始化…

嬴图| ISO/IEC-GQL国际图语言标准发布,图技术开启新纪元

GQL作为继SQL之后的第二个数据库查询语言国际标准&#xff0c;近日正式发布。这标志着图技术开启新纪元——图时代即将到来&#xff01; 同时&#xff0c;这也预示着将有越来越多的组织采用“图”来解决各种复杂问题&#xff0c;更意味着SQL系统与负载将逐渐转向GQL&#xff0…

注意力机制(三)(不同注意力机制对比)

​&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a; &#x1f3c0;《深度学习基础知识》 相关专栏&#xff1a; ⚽《机器学习基础知识》 &#x1f3d0;《机器学习项目实战》 &#x1f94e;《深度学习项目实…

【Harmony3.1/4.0】笔记五

概念 本文综合row&#xff0c;column作为主要布局&#xff0c;结合image组件&#xff0c;text组件&#xff0c;textimput组件&#xff0c;button组件以及轮播布局搭建登录页面 效果图 ArkTS代码 //登录综合页面 Entry Component struct Five{//添加图片State imgs:Resource[…

C#:变量的更多内容

枚举&#xff1a;一种变量类型&#xff0c;用户定义一组可能的离散值&#xff0c;这些值可以用人们能理解的方式使用。 结构&#xff1a;一种合成的变量类型&#xff0c;由用户定义的一组其他变量类型组成。 数组&#xff1a;包含一种类型的多个变量&#xff0c;允许以索引方…

kubernetes中的附件组件Metrics-server与hpa资源实现对pod的自动扩容和缩容

一、概述 Metrics-Server组件目的&#xff1a;获取集群中pod、节点等负载信息&#xff1b; hpa资源目的&#xff1a;通过metrics-server获取的pod负载信息&#xff0c;自动伸缩创建pod&#xff1b; 二、安装部署 Metrics-Server组件 安装目的&#xff0c;就是给k8s集群安装top…