鱼C论坛

 找回密码
 立即注册
查看: 1261|回复: 3

[已解决]第十四讲作业

[复制链接]
发表于 2020-8-5 12:27:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
第十四讲作业不知道if语句那里哪里错了,
0. 请写一个密码安全性检查的代码代码:check.py
  
# 密码安全性检查代码
#
# 低级密码要求:
#   1. 密码由单纯的数字或字母组成
#   2. 密码长度小于等于8位
#
# 中级密码要求:
#   1. 密码必须由数字、字母或特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\)任意两种组合
#   2. 密码长度不能低于8位
#
# 高级密码要求:
#   1. 密码必须由数字、字母及特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\)三种组合
#   2. 密码只能由字母开头
#   3. 密码长度不能低于16位

temp = input('请输入需要检查的密码组合:')
passwd = int(temp)
length = len(passwd)
nums = '0123456789'
chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
str1 = r'~!@#$%^&*()_=-/,.?<>;:[]{}|\''
flag1 = 0
flag2 = 0
#判断密码长度
if length <= 8:
    flag2 = 1
if length > 8:
    flag2 = 2
if length >16:
    flag2 = 3
for each in passwd:#判断是否包含字符
    if each in str1:
        flag1 += 1
        break
for each in passwd:#判断是否包含字母
    if each in chars:
        flag1 += 1
        break
for each in passwd:#判断是否包含数字
    if each in nums:
        flag1 += 1
        break
if (flag1 = 1) and (flag2 = 1):#显示这里包括下面两个if语句报错
    print('您的密码安全级别评定为:低'
          '请按以下方式提升您的密码安全级别'
          '       1.密码必须由数字、字母及特殊字符三种组合'
          '       2.密码只能由字母开头'
          '       3.密码长度不能低于16位')
if (flag1 = 2) and (flag2 = 2):
    print('您的密码安全级别评定为:中'
          '请按以下方式提升您的密码安全级别'
          '       1.密码必须由数字、字母及特殊字符三种组合'
          '       2.密码只能由字母开头'
          '       3.密码长度不能低于16位')
if (flag1 = 3) and (flag2 = 3):
    print('您的密码安全级别评定为:高')
    print('请继续保持')
最佳答案
2020-8-5 12:38:49
本帖最后由 Hello. 于 2020-8-5 13:23 编辑

应该用 == ,你用一个等于号不成赋值啦?
还有问题
temp = input('请输入需要检查的密码组合:')

passwd = temp # 不要转化为整型,整型没有长度,只有字符串才有
length = len(passwd)
nums = '0123456789'
chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
str1 = r'~!@#$%^&*()_=-/,.?<>;:[]{}|\''
flag1 = 0
flag2 = 0
#判断密码长度
if length <= 8:
    flag2 = 1
elif 16 > length > 8:
    flag2 = 2
elif length >= 16:
    flag2 = 3
for each in passwd:#判断是否包含字符
    if each in str1:
        flag1 += 1
        break
for each in passwd:#判断是否包含字母
    if each in chars:
        flag1 += 1
        break
for each in passwd:#判断是否包含数字
    if each in nums:
        flag1 += 1
        break
if (flag1 == 1) and (flag2 == 1):
    print('您的密码安全级别评定为:低'
          '请按以下方式提升您的密码安全级别'
          '       1.密码必须由数字、字母及特殊字符三种组合'
          '       2.密码只能由字母开头'
          '       3.密码长度不能低于16位')
if (flag1 == 2) and (flag2 == 2):
    print('您的密码安全级别评定为:中'
          '请按以下方式提升您的密码安全级别'
          '       1.密码必须由数字、字母及特殊字符三种组合'
          '       2.密码只能由字母开头'
          '       3.密码长度不能低于16位')
if (flag1 == 3) and (flag2 == 3):
    print('您的密码安全级别评定为:高')
    print('请继续保持')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-5 12:38:49 | 显示全部楼层    本楼为最佳答案   
本帖最后由 Hello. 于 2020-8-5 13:23 编辑

应该用 == ,你用一个等于号不成赋值啦?
还有问题
temp = input('请输入需要检查的密码组合:')

passwd = temp # 不要转化为整型,整型没有长度,只有字符串才有
length = len(passwd)
nums = '0123456789'
chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
str1 = r'~!@#$%^&*()_=-/,.?<>;:[]{}|\''
flag1 = 0
flag2 = 0
#判断密码长度
if length <= 8:
    flag2 = 1
elif 16 > length > 8:
    flag2 = 2
elif length >= 16:
    flag2 = 3
for each in passwd:#判断是否包含字符
    if each in str1:
        flag1 += 1
        break
for each in passwd:#判断是否包含字母
    if each in chars:
        flag1 += 1
        break
for each in passwd:#判断是否包含数字
    if each in nums:
        flag1 += 1
        break
if (flag1 == 1) and (flag2 == 1):
    print('您的密码安全级别评定为:低'
          '请按以下方式提升您的密码安全级别'
          '       1.密码必须由数字、字母及特殊字符三种组合'
          '       2.密码只能由字母开头'
          '       3.密码长度不能低于16位')
if (flag1 == 2) and (flag2 == 2):
    print('您的密码安全级别评定为:中'
          '请按以下方式提升您的密码安全级别'
          '       1.密码必须由数字、字母及特殊字符三种组合'
          '       2.密码只能由字母开头'
          '       3.密码长度不能低于16位')
if (flag1 == 3) and (flag2 == 3):
    print('您的密码安全级别评定为:高')
    print('请继续保持')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-5 12:44:04 | 显示全部楼层
本帖最后由 风过无痕1989 于 2020-8-5 12:47 编辑

if (flag1 = 1) and (flag2 = 1): 等三句是赋值,不是条件判断! 应该改为:

if (flag1 == 1) and (flag2 == 1):
{

}
if (flag1 == 2) and (flag2 == 2):
{

}
if (flag1 == 3) and (flag2 == 3):
{

}

用{}括起来,才表示该条件满足,需要执行的语句段,否则,只就会按语句的先后顺序全部执行的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 0 反对 1

使用道具 举报

发表于 2020-8-5 13:07:23 | 显示全部楼层
https://blog.csdn.net/qq_42224396/article/details/82085065
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-19 14:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表