python - 在python中,你如何检查一个字符串是否同时包含大写和小写字母

标签 python string

我看过与我的问题类似的另一篇文章,Password check- Python 3 ,除了我的问题涉及检查密码是否包含大写和小写问题。我的代码如下,但是执行时无法识别密码中的大小写字母,它只识别一种类型。我怎样才能让它识别这两种类型?还有一种更简单的方法可以让代码检查是否所有这些值都出现,而不必为每个单独的步骤创建函数?

def Get_Password():
    return input("Enter your desired password: ")

def Count_Digits(password):
    return sum(character.isdigit() for character in password)

def Valid_password_length(password):
    if len(password) >= 10:
        return ('step1' == True)
    else:
        return ('step1' == False, print("Invalid password: too short"))

def Valid_password_characters(password):
    if password.isalnum():
        return ('step2' == True)
    else:
        return ('step2' == False, print("Invalid password: illegal character detected"))

def Valid_password_numdigit(password):
    if Count_Digits(password) >= 2:
        return ('step3' == True)
    else:
        return ('step3' == False, print("Invalid password: Must have at least 2 digits"))

def Valid_password_lowercase(password):
    for i in (password):
        if i.islower() == True:
            return ('step4' == True)
        else:
            return ('step4' == False, print("Invalid password: No lowercase characters detected"))

def Valid_password_uppercase(password):
    for i in (password):
        if i.isupper() == True:
            return ('step5' == True)
        else:
            return ('step5' == False, print("Invalid password: No uppercase characters detected"))

def password_checker():
    password = Get_Password()
    Valid_password_length(password)
    Valid_password_characters(password)
    Valid_password_numdigit(password)
    Valid_password_lowercase(password)
    Valid_password_uppercase(password)

    if 'step1' and 'step2' and 'step3' and 'step4' and 'step5' == True:
        print("Congratulations! This password is valid")

password_checker()

最佳答案

import sys

def Valid_password_mixed_case(password):
    letters = set(password)
    mixed = any(letter.islower() for letter in letters) and any(letter.isupper() for letter in letters)
    if not mixed:
        print("Invalid password: Mixed case characters not detected", file=sys.stderr)
    return mixed

完整的解决方案:

import sys

def Get_Password():
    return input("Enter your desired password: ")

def Count_Digits(password):
    return sum(1 for character in password if character.isdigit())

def Valid_password_length(password):
    correct_length = len(password) >= 10

    if not correct_length:
        print("Invalid password: too short", file=sys.stderr)

    return correct_length

def Valid_password_characters(password):
    correct_characters = password.isalnum()

    if not correct_characters:
        print("Invalid password: illegal character detected", file=sys.stderr)

    return correct_characters

def Valid_password_numdigit(password):
    sufficient_digits = Count_Digits(password) >= 2

    if not sufficient_digits:
        print("Invalid password: Must have at least 2 digits", file=sys.stderr)

    return sufficient_digits

def Valid_password_mixed_case(password):
    letters = set(password)

    lower = any(letter.islower() for letter in letters)
    upper = any(letter.isupper() for letter in letters)

    if not upper:
        print("Invalid password: No uppercase characters detected", file=sys.stderr)

    if not lower:
        print("Invalid password: No lowercase characters detected", file=sys.stderr)

    return lower and upper

def password_checker():
    password = Get_Password()
    if Valid_password_length(password) and \
        Valid_password_characters(password) and \
        Valid_password_numdigit(password) and \
        Valid_password_mixed_case(password):

        print("Congratulations! This password is valid")

password_checker()

关于python - 在python中,你如何检查一个字符串是否同时包含大写和小写字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39991064/

相关文章:

python - 创建 Qt 显示

python - 为什么 "except"语句中的无效异常名称不会立即导致 NameError?

java - 使用 Java 字符串时的提示和技巧,以提高性能和安全性

java - Java 中的 copyValueOf?

python - 子进程 "TypeError: a bytes-like object is required, not ' str'"

python - 使用请求模块导出 csv

python - 跳过无数据网页的条件

java - 使用从文本文件中删除所有数字和字母数字字符

python - 如何在输出之前自动过滤 Excel 工作表

c++ - 在 vector 中搜索其第一个参数的所有实例,然后将它们返回到 vector 中