Python - 初级水平 - 用户输入和while循环组合

时间:2018-03-10 08:07:56

标签: python input while-loop

我对“Google”,“YouTube”,“Facebook”和“Stack Overflow”进行了一些研究,但我还没找到我想要的东西。所以,我需要你的指导。 :)

我希望程序询问用户输入“PASSWORD”,每次用户输入错误的密码,程序再次询问密码,并再次,直到用户 输入正确的密码。假设密码就像“abc123”一样简单。

所以,我启动程序并要求输入:“PASSWORD:”。如果用户键入“abc123”,则程序打印“GOOD PASSWORD”。如果用户键入任何不是“abc123”的内容,程序将打印“BAD PASSWORD”。就这么简单......现在。

我最好的尝试:

#SECTION1_ASKING
passwordInput=input('PASSWORD: ')
password='abc123'
while password == passwordInput:
    print('GOOD PASSWORD')
    break 
else:
    print('BAD PASSWORD')
    passwordInput=input('PASSWORD: ')

#SECTION2_RE-ASKING
while False:
    while password == paswordInput:
        print('GOOD PASSWORD')
    else:
        print('BAD PASSWORD')
        passwordInput=input('PASSWORD: ')

但是我要么输入一次或两次密码,要么我坚持无限循环

3 个答案:

答案 0 :(得分:2)

试试这个:

passwordInput=raw_input('PASSWORD: ')
password='abc123'
while True:
    if password == passwordInput:
        print('GOOD PASSWORD')
        break 
    else:
        print('BAD PASSWORD')
        passwordInput=raw_input('PASSWORD: ')

答案 1 :(得分:1)

您可以在以下几行中执行以下操作。

password='abc123'
while(True):
    passwordInput=input('PASSWORD: ')
    if(passwordInput==password):
        print("Good password")
        break
    else:
        print("Bad password")

答案 2 :(得分:0)

这是我的解决方案:

password = 'abc123'

while True:

    passwordInput = input('PASSWORD: ')

    if password == passwordInput:
        print('GOOD PASSWORD')
        break
    else:
        print('BAD PASSWORD')

与您的不同之处有何不同?首先,您可以看到我只有一个input()来电,这通常是一个好主意,因为那时您只需要在一个地方检查密码。请注意,我使用if代替while进行测试。

在你的第二个例子中,你有while False:。这可能是真的吗?不,所以它不会被执行。

另请注意,我使用了更多的空格。这不会减慢程序的速度,使其更容易阅读。另请参阅PEP008

现在你有了它的工作,只是为了好玩,考虑改进。通常情况下,您不希望密码在输入时显示,但有一个模块:getpass - 它是标准库的一部分,因此您不需要输入密码。我需要下载任何东西。

import getpass添加到脚本的顶部。而不是input使用getpass.getpass,在程序的相同位置,使用相同的参数。现在它不会回显用户输入的密码。

getpass是模块名称,getpass也是函数名称,因此getpass.getpass('PASSWORD: ')表示在getpass()模块中执行getpass函数。我们在Python中使用了很多模块,因此值得习惯使用它们。您可以找到文档here,请注意还有getpass.getuser()可供使用。