第十四讲作业求解
为什么运行不出结果,代码哪里错了吗?{:10_282:}# 密码安全性检查代码
#
# 低级密码要求:
# 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
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('请继续保持')
这个最佳答案由 风过无痕1989 给出,感谢 风过无痕1989 的回答。
单击隐藏图章
本帖最后由 风过无痕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):
{
}
用{}括起来,才表示该条件满足,需要执行的语句段,否则,只就会按语句的先后顺序全部执行的 本帖最后由 Hello. 于 2020-8-5 13:24 编辑
你不必将其转化为整型,len()函数需要字符串类型,具体看注释
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('请继续保持')
风过无痕1989 发表于 2020-8-5 13:16
这个最佳答案由 风过无痕1989 给出,感谢 风过无痕1989 的回答。
单击隐藏图章
老哥,人家python的不用{}好吧,再加上他就是你刚才回答的那个,去运行不了再来的,里面逻辑有问题好吧 本帖最后由 baige 于 2020-8-5 14:12 编辑
temp = input('请输入需要检查的密码组合:')
passwd = temp
length = len(passwd)
nums = '0123456789'
chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
str1 = r'~!@#$%^&*()_=-/,.?<>;:[]{}|\''
#判断字母数字和特殊字符 第一个特殊字符 第二个字母 第三个数字
flag1 =
#用来长度判断
flag2 = 0
#判断第一个字符
flag = 0
for each in chars:
if passwd in chars:
flag = 1
#判断密码长度
if length <= 8 :
flag2 = 1
elif 8 < length < 16 :
flag2 = 2
else :
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
#判断一共几种字符
cnt = 0
for i in range(0,3):
cnt += flag1
if cnt == 1 and flag2 == 1:
print('您的密码安全级别评定为:低'
'请按以下方式提升您的密码安全级别'
' 1.密码必须由数字、字母及特殊字符三种组合'
' 2.密码只能由字母开头'
' 3.密码长度不能低于16位')
elif cnt == 2 and flag2 == 2:
print('您的密码安全级别评定为:中'
'请按以下方式提升您的密码安全级别'
' 1.密码必须由数字、字母及特殊字符三种组合'
' 2.密码只能由字母开头'
' 3.密码长度不能低于16位')
elif cnt == 3 and flag2 == 3 and flag == 1:
print('您的密码安全级别评定为:高')
print('请继续保持')
else :
print('未定义')
风过无痕1989 发表于 2020-8-5 13:16
这个最佳答案由 风过无痕1989 给出,感谢 风过无痕1989 的回答。
单击隐藏图章
?????????? 永恒的蓝色梦想 发表于 2020-8-5 16:12
??????????
我也不知怎么回事
页:
[1]