我想让这个函数在我的is_password_good函数中工作。
def is_ascii(some_string) :
for each_letter in some_string:
if ord(each_letter) < 128:
return False
return True
is_good_password函数确保用户的密码长度至少为10个字符,并且至少存在一个大写和小写。
如何通过ASCII功能检查用户是否使用ASCII标准至少使用一个符号创建密码?
def is_good_password(password):
count_upper, count_lower = 0, 0
for characters in password:
if characters.isupper():
count_upper += 1
if characters.islower():
count_lower += 1
is_password_good = True
if len(password) <= 10:
print "Password is too weak, must be more than 10 characters long!"
is_password_good = False
if count_upper < 1 or count_lower < 1:
print "Password must contain at least one uppercase and one lowercase character!"
is_password_good = False
create_user(database)
print "Welcome! Username & Password successfully created!"
return is_password_good
答案 0 :(得分:4)
您可以检查字符串中是否存在string.punctuation
。
>>>string.punctuation
'!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'
答案 1 :(得分:2)
import re
def getmix(password):
Upper=len(set(re.findall(r'[A-Z]',password)))
Lower=len(set(re.findall(r'[a-z]',password)))
Nums=len(set(re.findall(r'[0-9]',password)))
Symb=len(set(re.findall(r'[~!@#$%^&\*()_+=-`]')))
return (Upper, Lower, Nums, Symb)
应该给你一个很好的起点。
答案 2 :(得分:2)
如果字符串中的所有字符都不是字母或数字,函数somestring.isalnum()
将返回False
。
这些类别的精确定义取决于区域设置;确保您知道您正在使用的语言环境。
通过by,ASCII只定义为字符代码127.如果你超过127,你需要知道你正在处理哪个字符集和编码。但是,像#
和!
这样的字符确实是用ASCII定义的,并且字符代码的长度在30英尺范围内。无论如何,最好使用库函数抽象出精确的字符代码。
答案 3 :(得分:1)
has_symbol = False
for c in '~!@#$%^&*()_+=-`':
if c in password:
has_symbol = True
break
if not has_symbol:
print "Password must contain at least one uppercase and one lowercase character!"
is_password_good = False
答案 4 :(得分:1)
始终使用内置的,不要自己滚动,所以本着这种精神,使用字符串模块作为规范的符号列表:
import string
symbols = string.punctuation
并打印symbols
向我们展示了这些字符:
!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
你可以传递给any
“另一个可迭代的”构造:
if any(char in symbols for char in some_string):
print 'password good'
但是,我实际上更喜欢set方法而不是上面的结构:
if set(symbols).intersection(some_string):
print 'password good'
但是Triplee对isalnum的建议同样有效,不需要导入字符串模块,而且更短。
if not some_string.isalnum():
print 'password good'