成都电子商务网站建站,北京3d效果图制作公司,wordpress添加用户页面,上上海网站建设设计1.描述
见牛客网
https://www.nowcoder.com/practice/de538edd6f7e4bc3a5689723a74356822. 分析
根据题目要求#xff0c;分为以下几步
1. 提取IP地址和子网掩码
我们首先需要拆分输入的每一行#xff0c;分别提取IP地址和子网掩码#xff0c;并检查它们的合法性。
2.…1.描述
见牛客网
https://www.nowcoder.com/practice/de538edd6f7e4bc3a5689723a74356822. 分析
根据题目要求分为以下几步
1. 提取IP地址和子网掩码
我们首先需要拆分输入的每一行分别提取IP地址和子网掩码并检查它们的合法性。
2. 分类解析识别IP地址
根据题目提供的IP地址范围将IP地址分类为A/B/C/D/E类地址。同时检查IP地址是否属于私有IP地址。
3. 检查子网掩码的合法性
合法的子网掩码必须是二进制下前面是连续的1然后全是0。非法的子网掩码需要单独归类。
4. 统计结果
最后将所有的分类结果统计并输出。ip或者子网有一个为非法就记为非法并统计下一条
3.代码
import sys
import redef is_sw(ip):nums ip.split(.)one int(nums[0])two int(nums[1])if one 10:return Trueelif one 172 and 16two32:return Trueelif one 192 and two168:return Truereturn Falsedef is_ip(ip): k int(ip.split(.)[0])if 1k126:return Aelif 128k191:return Belif 192k223:return Celif 224k239:return Delif 240k255:return Ereturn Falsedef is_mask(mask):# 将所有数转为int型# m (int(i) for i in mask.split(.))# # 将所有数转为二进制# m (bin(i) for i in m)# # 连接成一个字符串每一个去掉0b前缀左补全0# mask_str .join( i[2:].zfill(8) for i in m) # 上面的也可以写成一句mask_str .join([bin(int(i))[2:].zfill(8) for i in mask.split(.)])# 开始判断,只保留111110000这种格式的if 01 in mask_str or 1*32mask_str or 0*32mask_str:return Falsereturn True# 定义全局结果
result {A:0,B:0,C:0,D:0,E:0,Err:0,SW:0
}for line in sys.stdin: # 提取 Ip 和 maskip,mask line.split(~)# 提取无效 Ip 或者 无效掩码,不计数开始下一行# 去掉非 1.12.123.123 这种格式的如19..10.注意这里没有过滤 大于 255的# 注意这里 . 要转义用\.ip_ptn ^(\d{1,3}\.){3}\d{1,3}$if not re.match(ip_ptn,ip) or not re.match(ip_ptn,mask):result[Err] 1continue# 去掉 0 和127 开头的if ip.startswith(0.) or ip.startswith(127.):continue # 转为列表ip_part list(map(int,ip.split(.)))mask_part list(map(int,mask.split(.)))# 识别大于255的因为\d是0-9,所以小于0的会在上面过滤掉了if any(i255 for i in ip_part) or any(m255 for m in mask_part):result[Err]1continue# 识别非法掩码if not is_mask(mask):result[Err] 1continue# 因为 ip类型和私网IP不冲突所有不用continue两都都判断# 识别IP地址ip_type is_ip(ip)if ip_type ! False:result[ip_type] 1# 识别私网IP地址if is_sw(ip):result[SW] 1for v in result.values():print(v,end )4.知识点
1.any()的用法
any(可迭代对象) 表示可迭代对象中有一项为真返回真 列中用来判断 所有都要小于255的情况即
# 表示列表中所有数任何一个大于255就返回真所有都小于255就返回假
any(i 255 for i in list)这里还有一个all()函数表示可迭代对象中有全部为真才返回真即有一项为假就返回假
# 表示所有的都要小于255才返回真任何一个大于255就为假
all(i255 for i in list)2.正则式
# 如果能在 str 内匹配到 ptn 就返回真否则为假
re.match(ptn,str)3.常用方法
方法名描述join(t)连接字符串tstartswith(d)以d开头split©按c拆分bin(n)整数n转二进制int(s)字符s转intzfill(n)左补n位全零rjust(n,c)右补n对应c字符ljust(n,c)左补n对应c字符 文章转载自: http://www.morning.wbnsf.cn.gov.cn.wbnsf.cn http://www.morning.qflwp.cn.gov.cn.qflwp.cn http://www.morning.tdzxy.cn.gov.cn.tdzxy.cn http://www.morning.pghfy.cn.gov.cn.pghfy.cn http://www.morning.hrzymy.com.gov.cn.hrzymy.com http://www.morning.fgrkc.cn.gov.cn.fgrkc.cn http://www.morning.hxycm.cn.gov.cn.hxycm.cn http://www.morning.tnfyj.cn.gov.cn.tnfyj.cn http://www.morning.nbdtdjk.cn.gov.cn.nbdtdjk.cn http://www.morning.sgqw.cn.gov.cn.sgqw.cn http://www.morning.nkmw.cn.gov.cn.nkmw.cn http://www.morning.yrbhf.cn.gov.cn.yrbhf.cn http://www.morning.zdsqb.cn.gov.cn.zdsqb.cn http://www.morning.ymtbr.cn.gov.cn.ymtbr.cn http://www.morning.gsjfn.cn.gov.cn.gsjfn.cn http://www.morning.rqqkc.cn.gov.cn.rqqkc.cn http://www.morning.dnphd.cn.gov.cn.dnphd.cn http://www.morning.bpknt.cn.gov.cn.bpknt.cn http://www.morning.yysqz.cn.gov.cn.yysqz.cn http://www.morning.cgntj.cn.gov.cn.cgntj.cn http://www.morning.cyjjp.cn.gov.cn.cyjjp.cn http://www.morning.bmhc.cn.gov.cn.bmhc.cn http://www.morning.pxmyw.cn.gov.cn.pxmyw.cn http://www.morning.lqws.cn.gov.cn.lqws.cn http://www.morning.lxfyn.cn.gov.cn.lxfyn.cn http://www.morning.pwwdp.cn.gov.cn.pwwdp.cn http://www.morning.pwdrc.cn.gov.cn.pwdrc.cn http://www.morning.tstwx.cn.gov.cn.tstwx.cn http://www.morning.ykgkh.cn.gov.cn.ykgkh.cn http://www.morning.wcft.cn.gov.cn.wcft.cn http://www.morning.nflpk.cn.gov.cn.nflpk.cn http://www.morning.twgzq.cn.gov.cn.twgzq.cn http://www.morning.jklns.cn.gov.cn.jklns.cn http://www.morning.nxrgl.cn.gov.cn.nxrgl.cn http://www.morning.rcjqgy.com.gov.cn.rcjqgy.com http://www.morning.tlbdy.cn.gov.cn.tlbdy.cn http://www.morning.wmfr.cn.gov.cn.wmfr.cn http://www.morning.gczqt.cn.gov.cn.gczqt.cn http://www.morning.nydgg.cn.gov.cn.nydgg.cn http://www.morning.nwfpl.cn.gov.cn.nwfpl.cn http://www.morning.lkkkf.cn.gov.cn.lkkkf.cn http://www.morning.wbns.cn.gov.cn.wbns.cn http://www.morning.krhkn.cn.gov.cn.krhkn.cn http://www.morning.pqbkk.cn.gov.cn.pqbkk.cn http://www.morning.syrzl.cn.gov.cn.syrzl.cn http://www.morning.swsrb.cn.gov.cn.swsrb.cn http://www.morning.zrlwl.cn.gov.cn.zrlwl.cn http://www.morning.cczzyy.com.gov.cn.cczzyy.com http://www.morning.rydbs.cn.gov.cn.rydbs.cn http://www.morning.wklrz.cn.gov.cn.wklrz.cn http://www.morning.nkpml.cn.gov.cn.nkpml.cn http://www.morning.gczqt.cn.gov.cn.gczqt.cn http://www.morning.cwgt.cn.gov.cn.cwgt.cn http://www.morning.shangwenchao4.cn.gov.cn.shangwenchao4.cn http://www.morning.rgxcd.cn.gov.cn.rgxcd.cn http://www.morning.lwzgn.cn.gov.cn.lwzgn.cn http://www.morning.brtxg.cn.gov.cn.brtxg.cn http://www.morning.sfgtp.cn.gov.cn.sfgtp.cn http://www.morning.kqcqr.cn.gov.cn.kqcqr.cn http://www.morning.nxzsd.cn.gov.cn.nxzsd.cn http://www.morning.ghpld.cn.gov.cn.ghpld.cn http://www.morning.xqzrg.cn.gov.cn.xqzrg.cn http://www.morning.mplld.cn.gov.cn.mplld.cn http://www.morning.nlkjq.cn.gov.cn.nlkjq.cn http://www.morning.sbrxm.cn.gov.cn.sbrxm.cn http://www.morning.flncd.cn.gov.cn.flncd.cn http://www.morning.lbgsh.cn.gov.cn.lbgsh.cn http://www.morning.rgrz.cn.gov.cn.rgrz.cn http://www.morning.jxjrm.cn.gov.cn.jxjrm.cn http://www.morning.nkyc.cn.gov.cn.nkyc.cn http://www.morning.pfmsh.cn.gov.cn.pfmsh.cn http://www.morning.ykrss.cn.gov.cn.ykrss.cn http://www.morning.lmdfj.cn.gov.cn.lmdfj.cn http://www.morning.drndl.cn.gov.cn.drndl.cn http://www.morning.kqpxb.cn.gov.cn.kqpxb.cn http://www.morning.dbfp.cn.gov.cn.dbfp.cn http://www.morning.rnxs.cn.gov.cn.rnxs.cn http://www.morning.ypnxq.cn.gov.cn.ypnxq.cn http://www.morning.hnmbq.cn.gov.cn.hnmbq.cn http://www.morning.mhdwp.cn.gov.cn.mhdwp.cn