沈工大小o 发表于 2020-10-20 14:28:29

判断密码安全程度,鱼c作业题,怎么判断if else while 谁和谁对其呀

symbols = '''`!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>'''
chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
nums = '0123456789'
passwd = input('请输入需要检查的密码组合:')
length = len(passwd)
while (passwd.isspace() or length == 0):
    passwd = input("您输入的密码为空(或空格),请重新输入:")
    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 += 1
                break
      for each in passwd:
            if each in chars:
                flag_con += 1
                break
      for each in passwd:
            if each in nums:
                flag_con += 1
                break
      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("请按以下方式提升您的密码安全级别:\n\\t1. 密码必须由数字、字母及特殊字符三种组合\n\\t2. 密码只能由字母开头\n\\t3. 密码长度不能低于16位'")
            break
这程序我晕了谁能给我改改错,再给我讲讲不胜感激
0. 请写一个密码安全性检查的脚本代码:check.py
# 密码安全性检查代码
# 低级密码要求:
#   1. 密码由单纯的数字或字母组成
#   2. 密码长度小于等于8位
# 中级密码要求:
#   1. 密码必须由数字、字母或特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\)任意两种组合
#   2. 密码长度不能低于8位
# 高级密码要求:
#   1. 密码必须由数字、字母及特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\)三种组合
#   2. 密码只能由字母开头
#   3. 密码长度不能低于16位

资治通鉴 发表于 2020-10-20 15:22:18

看他密码里面出现的特殊符号的长度和频率,进行判断
对不同字符加权,比如!.,;()*这些符号的权重大一点,123bc这种权重小一点

资治通鉴 发表于 2020-10-20 15:23:18

对密码的各个字符加权,根据权重求和,得到所谓的密码安全程度

笨鸟学飞 发表于 2020-10-20 19:48:11

本帖最后由 笨鸟学飞 于 2020-10-20 19:50 编辑

symbols = '''`!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>'''   #定义特殊符号字符串
chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'#定义所有字母字符串
nums = '0123456789'#定义所有数字字符串
passwd = input('请输入需要检查的密码组合:')#获取用户输入的密码(字符串型),并赋值给变量passwd
length = len(passwd)   #获取用户输入密码的长度(也就是密码有几位),并赋值给变量length
while (passwd.isspace() or length == 0):          #密码中只有空格,或者长度等于0的时候,则进入循环,否则直接跳转到while循环代码段之后执行,然而并没有语句了,注意看缩进,while循环代码段在(while)和(与 while缩进齐平的代码语句)之间。。。例如
whlie True:#为真进入循环,否则跳转到print并开始执行(注意看缩进对齐)
    ****   
    ****
print(****)

沈工大小o 发表于 2020-10-22 15:07:15

我知道程序每一行的意思,我现在分不清缩进问题,不知道谁应该和While对齐,然后导致程序没有正常执行,能帮我改下正确的对齐程序吗

疾风怪盗 发表于 2020-10-22 15:23:33

沈工大小o 发表于 2020-10-22 15:07
我知道程序每一行的意思,我现在分不清缩进问题,不知道谁应该和While对齐,然后导致程序没有正常执行,能 ...

symbols = '''`!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>'''
chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
nums = '0123456789'
passwd = input('请输入需要检查的密码组合:')
length = len(passwd)
while (passwd.isspace() or length == 0):
    passwd = input("您输入的密码为空(或空格),请重新输入:")
else:
    if length <= 8:
      flag_len = flag_con=1
    elif 8 < length < 16:
      flag_len = flag_con=2
    else:
      flag_len = 3
      flag_con = 0
      for each in passwd:
            if each in symbols:
                flag_con += 1
                break
      for each in passwd:
            if each in chars:
                flag_con += 1
                break
      for each in passwd:
            if each in nums:
                flag_con += 1
                break
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("请按以下方式提升您的密码安全级别:\n\\t1. 密码必须由数字、字母及特殊字符三种组合\n\\t2. 密码只能由字母开头\n\\t3. 密码长度不能低于16位'")
    break

沈工大小o 发表于 2020-10-22 15:48:44

沈工大小o 发表于 2020-10-22 15:07
我知道程序每一行的意思,我现在分不清缩进问题,不知道谁应该和While对齐,然后导致程序没有正常执行,能 ...

symbols = '''`!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>'''
chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
nums = '0123456789'
passwd = input('请输入需要检查的密码组合:')
length = len(passwd)
flag_len=0
flag_con=0
while (passwd.isspace() or length == 0):
    passwd = input("您输入的密码为空(或空格),请重新输入:")
    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 += 1
            break
    for each in passwd:
      if each in chars:
            flag_con += 1
            break
    for each in passwd:
      if each in nums:
            flag_con += 1
            break
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("请按以下方式提升您的密码安全级别:\n\\t1. 密码必须由数字、字母及特殊字符三种组合\n\\t2. 密码只能由字母开头\n\\t3. 密码长度不能低于16位'")
    break
经过我的修改小甲鱼的程序终于跑起来了

疾风怪盗 发表于 2020-10-22 15:55:13

沈工大小o 发表于 2020-10-22 15:48
symbols = '''`!@#$%^&*()_+-=/*{}[]\|'";:/?,.'''
chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMN ...

你确定,这样跑起来的是对的?

按这个代码运行:
请输入需要检查的密码组合:1
您的密码安全级别评定为:高
请继续保持
页: [1]
查看完整版本: 判断密码安全程度,鱼c作业题,怎么判断if else while 谁和谁对其呀