我想检查用户名和密码是否至少包含一个符号?

3 投票
5 回答
5123 浏览
提问于 2025-04-17 20:21

我想让这个函数在我的 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

5 个回答

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

函数 somestring.isalnum() 会返回 False,如果字符串中的所有字符不是字母或数字的话。

这些字符的具体分类是跟地区有关的,所以你要确认你使用的是哪个地区的标准。

顺便提一下,ASCII 只定义到字符编码 127。如果超过 127,你就需要知道你在使用哪个字符集和编码。不过像 #! 这样的字符在 ASCII 中是有定义的,它们的字符编码在 30 多的范围内。其实,使用一些库函数会更好,因为它们可以帮你处理这些具体的字符编码。

4

你可以检查一下 string.punctuation 是否在字符串里存在。

>>>string.punctuation
'!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'

撰写回答