【问题标题】:Making a password program in python用python制作密码程序
【发布时间】:2017-05-09 19:34:38
【问题描述】:

我正在用python制作一个区分大小写的密码程序,其中密码必须有一个大写字母,一个小写字母,并且必须至少为8个字符。代码如下:

password = input("Please enter a password:")
upperFlag = False
lowerFlag = False
while len(password) < 8:
    try:
        password = input("Password not long enough")
    except:
        print("Error")
for char in password:
    if char == char.upper():
        upperFlag = True
        print("Up")

    elif char == char.lower():
        lowerFlag = True

代码现在只是一个概念,这就是为什么我写了代码来打印大写字母。我的问题是如何让程序只打印一次这个语句,而不是为每个字符打印? (例如“向上”、“向上”、“向上”等)

【问题讨论】:

    标签: python passwords uppercase lowercase


    【解决方案1】:

    既然你要设置一个标志,如果设置了标志,就在最后打印。

    for char in password:
        if char.isupper():
            upperFlag = True
        else:
            lowerFlag = True
    if upperFlag:
        print("Up")
    

    您也可以使用这样的推导式,而不是显式循环:

    if any(char.isupper() for char in password):
        print("Up")
    

    【讨论】:

      【解决方案2】:

      你必须做一个测试,看看你是否已经打印了'Up'语句。

      if not upperFlag:
           upperFlag = True
           print('Up')
      

      别忘了在代码开始时将 upperFlag 设置为 False,否则你会得到 NameError

      【讨论】:

        【解决方案3】:

        只需在print("Up") 之后插入break 语句:

        password = input("Please enter a password:")
        upperFlag = False
        lowerFlag = False
        while len(password) < 8:
            try:
                password = input("Password not long enough")
            except:
                print("Error")
        for char in password:
            if char == char.upper():
                upperFlag = True
                print("Up")
                break #<-- insert break here
        
            elif char == char.lower():
                lowerFlag = True
        

        【讨论】:

        • 如果在第一个大写字母之后有任何小写字母,这将无法检测到...
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-03-18
        • 1970-01-01
        • 2016-07-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多