-1

我正在创建一个随机密码生成器。我想创建一个输入字段,其中密码的长度只能是最小 8 和最大 16。如果用户输入的长度不是允许的长度,它会一直要求用户输入正确的密码长度。我使用 'return' 所以它返回到length = int(input('\nEnter the length of password: ')),但它在这里不起作用。我可以就如何做到这一点获得建议吗?

#input the length of password
#must be minimun 8 to maximun 16

length = int(input('\nEnter the length of password: '))

#if use enter less than 8 or more than 16 

if length < 8 :
        print('You password length is too short(must be more than 8 character)')
        return;
elif length > 16:
        print('You password length is too long(must be less than 17 character)')
        return;
else:
        print('You password length looks good') 
    
4

3 回答 3

2

请改用内置len函数并使用 while 循环:

#input the length of password
#must be minimun 8 to maximun 16

#if use enter less than 8 or more than 16
l = False
while not l:
    length = input('\nEnter the length of password: ')
    if len(length) < 8 :
        print('You password length is too short(must be more than 8 character)')
        print(len(length), "is the length of your password")
    elif len(length) > 16:
            print('You password length is too long(must be less than 17 character)')
            print(len(length), "is the length of your password")
    else:
            print('You password length looks good')
            break
        

输出:

Enter the length of password: thisismorethan16characters
You password length is too long(must be less than 17 character)
26 is the length of your password

Enter the length of password: thisisgood
You password length looks good
>>> 

此外,删除int()以便我们可以允许用户输入字符串,并且您通常return在函数中使用它。;在python中也没有使用。

于 2021-11-17T03:09:27.737 回答
0

代码将一直运行,直到您提供正确的密码

代码将一直运行,直到您输入正确的密码。我声明了一个设置为 false 的变量 correct_pass。当用户输入正确的密码时,while 循环中的条件 correct_pass == False 当用户输入正确的密码时,correct_pass 的值更改为 True,因此它退出循环,在其他情况下,它的值保持不变

correct_pass=False

while(correct_pass==False):
      length = input('\nEnter the length of password: ')
if len(length) < 8 :
    print('You password length is too short(must be more than 8 character)')
    correct_pass=False
elif len(length) < 8:
    print('You password length is too long(must be less than 17 character)')
    correct_pass=False
else:
    print('You password length looks good')
    correct_pass=True
于 2021-11-17T03:21:15.153 回答
0

您的代码基本上使用整数值而不是用户输入的长度或整数数。

假设我输入 9 作为输入。

然后,您正在使用 If-elif-else 块。

如果长度(当前用户输入为 9)<8,则打印“您的密码长度太短”。在我们的例子中,长度等于 9,也小于 17。所以我们满足条件。

但是如果我们输入例如 0, 2222。这显然比您的代码要求的值大得多。我希望我把你的错误说清楚了。现在,解决方法是: 查看此评论

于 2021-11-17T06:22:36.293 回答