用Python程序判断两个ip是否同网段的代码编写过程及思路

目标功能

基础功能
1.输入正确格式ip正常运行 √
2.3次输入机会 √
3.255掩码判断 √
4.两位数掩码判断 √

后续完善
1.排除输入格式不满足xxx.xxx.xxx.xxx √
2.排除输入空值 √
3.排除输入负数和字符 √
4.排除输入参数大于255 or 输入两位数掩码大于32 √
5.排除非法地址(0.123.0.0,0.0.0.1) √    

先思考大概结构,完善思路,然后开始逐步编写

 1.根据第二个 三次机会 基本功能,基本可以先确定最外层循环

for i in range(1,4):#外层 3次机会 循环
 if 可能1:
   print(结果1)
 continue
 if 可能2:
   print(结果2)
 continue
 if.......

 2.使用input取值

 print('第',i,'/3 次')
 yi=input('请输入第一个ip(XXX.XXX.XXX.XXX  0<=XXX<=255):')
 er=input('请输入第二个ip(XXX.XXX.XXX.XXX  0<=XXX<=255):')
 ym=input('请输入子网掩码(8-32 & 255.xxx,xxx,xxx):')

 2.首先判断输入参数格式合法性

 if len(yi.split('.'))==4 and len(er.split('.'))==4 : #判断格式合法性
  pass
 else:
  print("ip地址输入格式有误,请重新输入")
  continue

 使用split拆分获取的参数,判断是否有三个' . '(四数三点,1.2.3.4)。错误会continue跳出本次循环(最外层 3次机会)

即使输入字符或数字,不输入‘ . ’,长度会为0,也不满足 len()==4

  2.排除空值

 if len(yi.split('.')[0])==0 or len(yi.split('.')[1])==0 or len(yi.split('.')[2])==0 or len(yi.split('.')[3])==0:  #排除空值
      print("第一个ip地址输入的数值不能有空值,请重新输入")
      continue
 if len(er.split('.')[0])==0 or len(er.split('.')[1])==0 or len(er.split('.')[2])==0 or len(er.split('.')[3])==0:
      print("第二个ip地址输入的数值不能有空值,请重新输入")
      continue

使用 [] 截取split字段,并判断字符长度

  3.判断是否为0~9之间的数字,排除-0、字符与负数

 sum=0
 pd=0
 for i in range(0,len(yi.split('.'))):            #排除除数字参数可能性
  for a in range(0,len(yi.split('.')[i])):
      for b in range(0,10):
            if yi.split('.')[i][a]==str(b):
                sum=0
                break
            if yi.split('.')[i][a]!=str(b):
                sum=1
      if sum==1:
       print('请给ip参数重新输入正确的ip数值,而不是除数字外的字符或负数')
       pd=1
       break 
 if pd==1:
       continue

例如:111.222.333.444

             1     2     3     4

外层 i 循环遍历1 2 3 4

中层 a 循环遍历1234中的111,222,333,444

里层 b 循环判断字符

当一个字符循环完一次里循环b之后,sum仍为1,表示字符未匹配上0~9中的字符,则不满足条件,break退出循环并给第二个判断变量赋值。

  4.排除参数大于255的可能性

排除了空值和字符后就可以进行转换操作了

 if int(yi.spl
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值