华为机试题-识别有效的Ip地址和掩码并分类Python实现
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了华为机试题-识别有效的Ip地址和掩码并分类Python实现,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2394字,纯文字阅读大概需要4分钟。
内容图文
![华为机试题-识别有效的Ip地址和掩码并分类Python实现](/upload/InfoBanner/zyjiaocheng/647/a9fb6755759e4c0fa119c31eeb9e74a5.jpg)
找个工作要会这个要会那个,真尼玛难…
从头开始吧,python以前没学过但是很看好,以后用的人越来越多,毕竟太容易上手了,咱也不能落伍了,拿华为机试题练手吧!
题目:
请解析IP地址和对应的掩码,进行分类识别。要求按照A/B/C/D/E类地址归类,不合法的地址和掩码单独归类。
所有的IP地址划分为 A,B,C,D,E五类
A类地址1.0.0.0~126.255.255.255;
B类地址128.0.0.0~191.255.255.255;
C类地址192.0.0.0~223.255.255.255;
D类地址224.0.0.0~239.255.255.255;
E类地址240.0.0.0~255.255.255.255
私网IP范围是:
10.0.0.0~10.255.255.255
172.16.0.0~172.31.255.255
192.168.0.0~192.168.255.255
? 子网掩码为二进制下前面是连续的1,然后全是0。(例如:255.255.255.32就是一个非法的掩码 ?输入描述:
多行字符串。每行一个IP地址和掩码,用~隔开。
输出描述:
统计A、B、C、D、E、错误IP地址或错误掩码、私有IP的个数,之间以空格隔开。
? 思路: 这道题网上方法很多,题目也比较简单,我选取其中一种方法实现, >>校验Ip是否合规; >>校验掩码是否合规; >>Ip与掩码均合规的情况下对Ip进行分类; >>继续判断是否为私网Ip; ? 代码:#!/usr/bin/python # -*- coding: utf-8 -* import sys A=0 B=0 C=0 D=0 E=0 error=0 privateIp=0 lastcode=['254','252','248','240','224','192','128','0'] def CheckIp(ip): if len(ip) !=4 or '' in ip: return False else: for i in range(4): if int(ip[i]) < 0 or int(ip[i]) > 255: return False else: return True def CheckMask(mask): if len(mask)!=4: return False else: if mask[0]=='255': if mask[1]=='255': if mask[2]=='255': if mask[3] in lastcode: return True else: return False elif mask[2] in lastcode and mask[3]=='0': return True else: return False elif mask[1] in lastcode and mask[2]==mask[3]=='0': return True else: return False elif mask[0] in lastcode and mask[1]==mask[2]==mask[3]=='0': return True else: return False while True: Input= sys.stdin.readline().strip() if Input == '': break ipList=Input.split('~')[0] maskList=Input.split('~')[1] ip=ipList.split('.') mask=maskList.split('.') if CheckIp(ip) and CheckMask(mask): if 1<=int(ip[0])<=126: A+=1 if 128<=int(ip[0])<=191: B+=1 if 192<=int(ip[0])<=223: C+=1 if 224<=int(ip[0])<=239: D+=1 if 240<=int(ip[0])<=255: E+=1 if int(ip[0])==10 or (int(ip[0])==172 and 16<=int(ip[1])<=31) or (int(ip[0])==192 and int(ip[1])==168): privateIp+=1 else: error+=1 print(Input) print('{} {} {} {} {} {} {}'.format(A,B,C,D,E,privateIp,error))
总结:
新手上路,所以走了很多弯路,python函数、循环均没有{}大括号进行组织,所以如果你是像我一样习惯用c#或Java,那刚开始大概率我尼玛了,因为代码没对齐可能得出的结果会截然不同,所以多注意下吧,其他没什么了,反正感觉只要懂点英文都能写了…
内容总结
以上是互联网集市为您收集整理的华为机试题-识别有效的Ip地址和掩码并分类Python实现全部内容,希望文章能够帮你解决华为机试题-识别有效的Ip地址和掩码并分类Python实现所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。