【最终呈现结果】

输入IP地址和掩码,就可以计算出网络段地址、主机地址范围以及广播地址。

【详细代码实现以及注释】

import re
#引入正则表达式模块IPAddr='162.31.233.69'
IPMask='17'
#输入IP地址和子网掩码,可以用input,让用户输入IP10L = re.findall(r'\d*', IPAddr) #用正则表达式挑出IP地址的四个十进制数
for x in IP10L:IP10L.remove('')
print('第一步:'+str(IP10L))
#把IP地址转换为四位十进制数的数列IP2L=[]
IP2=''
for x in IP10L:#MyBin=str(bin(int(x))).strip('0b')   #该方法容易误杀后面的0MyBin = str(bin(int(x)))[2:]MyZero='0'*(8-len(MyBin))             #前面需要补充0的位数IP2L.append(str(MyZero)+(bin(int(x)))[2:])
for x in IP2L:IP2=IP2+str(x)
print('第二步:'+str(IP2L))
print('第三步:'+str(IP2))
#把IP地址统一转换成四位二进制形式的数列,最后用空字符串拼接成一个整体def Masker(mask,NetorHost):if NetorHost==0:                        #计算网络部分系列MyNetworkt1=str(IP2[0:mask])+str(str(NetorHost)*(32-int(IPMask)))print('第四步:' + str(MyNetworkt1))#根据掩码位数把二进制IP整体主机部分全部置0,用来计算第一主机FirstIPt1=str(IP2[0:mask])+str(str(NetorHost)*(32-int(IPMask)-1))+str(1)#二进制第一主机IPprint('第五步:' + str(FirstIPt1))MyNetwork2=[]FirstIPt2=[]i=0while i<=3:MyNetwork2.append(int(MyNetworkt1[i*8:(i+1)*8],2)) #把二进制形式网络段MyNetwork1分成四段,且转换为十进制形式。FirstIPt2.append(int(FirstIPt1[i*8:(i+1)*8],2))  #把二进制形式第一主机分成四段,且转换为十进制形式。i+=1MyNetworkt3=str(MyNetwork2)[1:-1].replace(',','.')  #网络段改写成点分式,不是逗号分式。MyNetwork=MyNetworkt3.replace(' ','')                #网络段进一步去掉空格FirstIPt3=str(FirstIPt2)[1:-1].replace(',','.')     #第一主机改写成点分式,不是逗号分式。FirstIP=FirstIPt3.replace(' ','')                   #第一主机进一步去掉空格print('第六步:网络地址 ' + str(MyNetwork))print('第七步:第一主机 ' + str(FirstIP))else:                                    #计算主机部分系列MyNetworkt1=str(IP2[0:mask])+str(str(NetorHost)*(32-int(IPMask)))print('第八步:' + str(MyNetworkt1))                 #广播地址的二进制形式LastIPt1=str(IP2[0:mask])+str(str(NetorHost)*(32-int(IPMask)-1))+str(0)#最后一个主机地址的二进制形式print('第九步:' + str(LastIPt1))MyNetwork2=[]LastIPt2=[]i=0while i<=3:MyNetwork2.append(int(MyNetworkt1[i*8:(i+1)*8],2))   #广播地址转换十进制LastIPt2.append(int(LastIPt1[i*8:(i+1)*8],2))       #最后一个主机地址转换为十进制i+=1MyNetworkt3=str(MyNetwork2)[1:-1].replace(',','.')     #点分式MyNetwork=MyNetworkt3.replace(' ','')                  #去掉空格LastIPt3=str(LastIPt2)[1:-1].replace(',','.')LastIP=LastIPt3.replace(' ','')print('第十步:最后主机 ' + str(LastIP))print('十一步:广播地址 ' + str(MyNetwork))Masker(int(IPMask),0) #网络地址,就是说主机部分等于0
Masker(int(IPMask),1) #主机地址,就是说主机部分不为0

元进Python(3)---如何实现IP子网掩码计算器功能?相关推荐

  1. python获取网卡的ip子网掩码和网关

    import netiface import os def getNet(): """获取所有网口名字""" NetAll = netifa ...

  2. 用python的正则表达式实现简单的计算器功能

    #!/usr/bin/env python # -*- coding:utf-8 -*- import sys import redef welcome_func():""&quo ...

  3. python设置本机IP地址、子网掩码、DNS,获取本机IP地址、子网掩码、DNS、MAC

    python设置本机IP地址.子网掩码.DNS,获取本机IP地址.子网掩码.DNS.MAC main.py """=== coding: UTF8 ==="&q ...

  4. Python自动化运维——IP地址处理模块

    模块:IPy 功能:辅助我们高效的完成IP的规划工作 安装: 学习python中有什么不懂的地方,小编这里推荐加小编的python学习群:895 817 687 有任何不懂的都可以在里面交流,还有很好 ...

  5. python实现网络与IP地址计算

    网络与IP地址计算 1. 关于掩码位 介绍 子网掩码都是每段8位2进制,共32位 子网掩码用来划分局域网的IP地址的,需要和网络地址结合起来使用,计算方法:2^(32-掩码位数)-2 如常见的24位数 ...

  6. 用Python获取免费代理IP

    前言 为什么要IP代理:当采集数据, 批量采集数据, 请求速度过快, 网站可能会把你IP封掉 <你的网络进不去这个网站> IP代理换一个IP, 再去采集请求数据 一. 抓包分析数据来源 1 ...

  7. python10进制转2进制掩码_Python简单实现子网掩码转换的方法

    本文实例讲述了Python简单实现子网掩码转换的方法.分享给大家供大家参考,具体如下: 这里实现将子网掩码长度转换为具体的子网掩码地址: def exchange_maskint(mask_int): ...

  8. Python通过GeoIP获取IP信息(国家、城市、经纬度等)

    IP地址信息是非常重要的情报信息,通过IP可以定位到该IP所在的国家.城市.经纬度等. 获取IP信息的方式有很多,很多服务商都提供了相应的地址库或API接口服务. 如国内的ipip.net,国外的ip ...

  9. Python之免费代理ip的抓取与使用

    Python之免费代理ip的抓取与使用 使用爬虫不可避免的就会遇到网站的各种封ip操作,因此就需要我们找寻代理,通过代理进行操作,屏蔽自己真实ip. 本文直接从网站中抓取代理ip地址,进行测试,并将测 ...

  10. IP 子网掩码等网络相关知识学习心得

    一: 为什么需要ip地址? ip地址类似于身份证,网络上每台设备都有属于自己的专属ip地址.试想一下,如果有两台主机有相同的ip,当其中一台向服务器发送请求,但是服务器却把请求响应返回给另一台主机,那 ...

最新文章

  1. 行业观察(一)| 从渠道为王到数据为王——浅谈服装零售企业的数字化转型...
  2. android连接usb外设通讯_iOS App连接外设的几种方式
  3. java jtable添加_将带有数据的JTable添加到JDialog
  4. ExtJs2.0学习系列--Ext.Panel
  5. C#模拟MSN窗体抖动
  6. 信息安全管理与评估_计算机工程学院教师参加“信息安全管理与评估赛项”说明会...
  7. html语义化有哪些优点,语义化的HTML结构到底有什么好处?
  8. 从几个版本的memcpy的测速过程学习一点底层的东西
  9. 目录浏览器对话框控件 c# 1614822374
  10. mysql数据库中excel数据的导入与导出
  11. pandas读取csv文件数据并对指定字段使用matplotlib画折线图
  12. Atitit sumdoc ta index list atiitt 2008 diary 大事记v2 s222.docx Atiti. 2010---2016大事记 just world new
  13. 【HDU6051】if the starlight never fade
  14. 阿佐数据分析python小抄【pandas基础数据处理】
  15. Xshell官网免费版
  16. STK航空仿真(一)界面配置和插入模型
  17. 凯盛融英在港招股书“失效”:遭证监会严格发问,需补充披露
  18. 这七种职业男人让多少日本女性着迷
  19. Spark 基础知识
  20. android 版本更新原理,蒲公英 - 文档中心 - SDK 自动更新机制

热门文章

  1. 大数据专业认知实习作业
  2. 读研计算机技术与控制工程比较,电气工程与控制工程研究生考研就业的区别,哪个比较好...
  3. linux开发屏幕保护代码,使用xscreensaver编写屏幕保护程序的提示和技巧?
  4. 显卡刷bios改型号_A卡修改BIOS软件/刷显卡BIOS软件
  5. linux系统刷机教程,在 Linux 刷 BIOS
  6. BlazeDS知识积累
  7. 软考网络工程师下午题知识点汇总
  8. 【.Net】.Net操作AD域账号,获取AD用户后可以获取的属性列表 directoryEntry Properties list
  9. 关于 Win32/Conficker.B 蠕虫的病毒警报
  10. word中插入高分辨率图片,并且保存为PDF图片仍然高清的方法