上课练习题
判断用户输入的子网掩码是否合法
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")