Python判断子网掩码是否合法

上课练习题

判断用户输入的子网掩码是否合法

print ("**** 子网掩码的合法性判断程序 ****")
mask = input("please input mask address is:")
mask_split = mask.split(".")#让输入的字符分割成列表
noOb = [] #不要转换后的ob
for i in mask_split:#小数点隔开的每一数字段
    i = bin(int(i))#每一数字段转换为每一段的二进制数字段
    i = i[2:] #从每一段的二进制数字段的第三个数开始,因为前面有两个ob
    noOb.append(i.zfill(8))
#将除去了ob的每一二进制数字段自动右对齐填充到8位并添加到noOb这个空的列表里		
	   #.append:用于在列表末尾添加新的对象 
   				#.zfill:原字符串右对齐,自动填充到8位。
whole_mask = ''.join(noOb)
			#''是空,以空连接noOb生成一个新的字符串
              #.join(序列)将序列中的元素以指定的字符连接生成一个新的字符串
whole = int(whole_mask,base=10) #将输入的十进制合并好转化成二进制                        
whole_str = str(whole)#将其转换为字符串,方便用find\rfind进行查找
whole0_find = whole_str.find("0")#查0从哪里开始
					  #.find()从左向右查找字符串,如果包含字字符串返回开始的索引值,否则返回-1。
whole1_rfind = whole_str.rfind("1")#查1在哪里结束
					   #.rfind()返回字符串最后一次出现的位置(从右向左查询),如果没有匹配项则返回-1。                      
if whole1_rfind+1==whole0_find:#两者位置差1位为正确
    print ("true")
else:
    print("error")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值