一般地,可以作为密码字符的主要有数字、小写字母、大写字母和几个标点符号。密码安全强度主要和字符串的复杂程度有关系,字符串中包含的字符种类越多,认为其安全强度越高。按照这个标准,可以把安全强度分为强密码、中高、中低、弱密码。其中强密码表示字符串中同时含有数字、小写字母、大写字母、标点符号(, . ! ; ? < >)这四类字符,而弱密码表示字符串中仅包含四类字符中的一种。
要求:编写程序,输入一个字符串,输出该字符串作为密码时的安全强度,要求密码必须至少包含6个字符。运用运算符in判断字符类型,使用字典结构存放数据。
你题目的解答代码如下:
def pas(s):
text = {0:"空密码",1:"弱密码",2:"中低密码",3:"中高密码",4:"强密码"}
upper=0
lower=0
digit=0
other=0
for c in s:
if c.isupper():
upper=1
elif c.islower():
lower=1
elif c.isdigit():
digit=1
else:
other=1
return text[upper+lower+digit+other]
s = input("请输入密码字符:")
while len(s)<6:
s = input("要求密码必须至少包含6个字符。重新输入密码字符:")
print(pas(s))
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!
不确定使用字典结构的意思,可以直接调用内置的字符类型
import string
lib={'low':string.ascii_lowercase,'up':string.ascii_uppercase,'num':string.digits,'pun':',.!;?<>'}
low=up=num=pun=False
while True:
pwd=input()
if len(pwd)>=6:break
for i in pwd:
if i in lib['low']:low=True
if i in lib['up']:up=True
if i in lib['num']:num=True
if i in lib['pun']:pun=True
strong=low+up+num+pun
if strong>3:
print('强密码')
elif strong>2:
print('中高密码')
elif strong>1:
print('中低密码')
else:
print('弱密码')
满足题目要求:运用运算符in判断字符类型,使用字典结构存放数据。
import string
def level(pin):
dic = {0:"无效",1:"弱",2:"中低",3:"中高",4:"强"}
lib = {1:string.ascii_lowercase,2:string.ascii_uppercase,3:string.digits,4:',.!;?<>'}
pinlevel = 0
for v in lib.values():
for p in pin:
if p in v:
pinlevel += 1
break
return dic[pinlevel * len(pin)>=6] + '密码'
print(level(input()))
import string
lib={'low':string.ascii_lowercase,'up':string.ascii_uppercase,'num':string.digits,'pun':',.!;?<>'} # 利用字典结构,构建分类的密码可用字符集
while True:
pwd=input("请输入密码(长度不小于6个字符)")
if len(pwd)>=6:
break
print("密码长度低于6个字符,请重新输入")
low=up=num=pun=0
for i in pwd: # 分别判断密码中是否有某类字符
if (i in lib['low']) :
low=1
if (i in lib['up']) :
up=1
if (i in lib['num']) :
num=1
if (i in lib['pun']) :
pun=1
s=low+up+num+pun
rtStr=["弱","中低","中高","强"]
print("密码 `{}` 是 {} 级密码".format(pwd, rtStr[s-1]))