yuhanhanhan 发表于 2019-9-27 13:22:44

关于第五章作业的一点疑问

symbols = '~!@#$%^&*()_=-/,.?<>;:[]{}\|'
chars = 'abcdefghijklmnopqrstuvwxyzABCCDEFGHIJKLMNOPQRSTUVWXYZ'
nums = '0123456789'
t = 'y'
while t == 'y':
    passwd = input('您输入的密码为空(或空格),请重新输入:')
    length = len(passwd)
    while (passwd.isspace()) or (length == 0):
      passwd = input('您输入的密码为空(或空格),请重新输入:')
      length = len(passwd)
      #flag_len 和 flag_con分别是什么意思,有什么作用#
    if length <= 8:
      flag_len = 1
    elif 8 < length < 16:
      flag_len = 2
    else:
      flag_len = 3
    flag_con = 0
    for each in passwd:
      if each in symbols:
            flag_con = flag_con + 1
            break
    for each in passwd:
      if each in chars:
            flag_con = flag_con + 1
            break
    for each in passwd:
      if each in nums:
            flag_con = flag_con + 1
            break
       #while 1这里的1是怎么来的,有什么作用#
    while 1:
      print('您的密码安全等级为:',end = '')
      if flag_len == 1 or flag_con == 1:
            print('低')
      elif flag_len == 2 or flag_con == 2:
            print('中')
      else:
            print('高')
            print('请继续保持')
            break
      print('111')
      break
    t=input('还要测试么?("y"继续,其他退出)')
   #好像并没有实现第一个字母必须大写#

这是验证密码的安全等级的那个题,上面程序代码中标红的区域就是我的疑问,一共有三个:flag_len 和 flag_con分别是什么意思,有什么作用;while 1这里的1是怎么来的,有什么作用;这个程序好像并没有实现第一个字母必须大写

yuweb 发表于 2019-9-27 15:26:31

1、flag_len其实就是根据密码长度判断的等级,小于等于8的为1级,大于8小于16的为2级,其他的为3级
   flag_con是密码等级的另外一个判断,就是复杂程度加分的说法,如果包含特殊字符加1分,如果包含大小写字母加1分,如果包含数字加1分
当密码长度等级为1且复杂程度得分为1时,安全等级为低,以此类推(懒得写了)

2、while 1 是代表条件始终成立,在其他地方是要做无限循环,在当前这段代码中并没有要无限循环的意思,因为在判断之后不管条件是什么最终都break了,只执行了一次

3、并没有实现第一个字母必须大写
页: [1]
查看完整版本: 关于第五章作业的一点疑问