Python: вход в систему с использованием одного имени пользователя, но с разными паролями - PullRequest
1 голос
/ 05 августа 2011

Я пытаюсь написать функцию, которая поймет, как войти в систему, используя одно имя пользователя, но несколько паролей.

import sys

def login():
    username = raw_input('username')
    password = raw_input('password')

    if username == 'pi':
        return password 
        # if the correct user name is returned 'pi' I want to be
        # prompted to enter a password .
    else:
        # if 'pi' is not entered i want to print out 'restricted'
        print 'restricted'

    if password == '123':
        # if password is '123' want it to grant access
        # aka ' print out 'welcome'
        return 'welcome'

    if password == 'guest':
        # this is where the second password is , if 'guest'
        # is entered want it to grant access to different
        # program aka print 'welcome guest'
        return 'welcome guest'

Это то, что я получаю, когда запускаю функцию.

>>> login()

usernamepi
password123
'123' 

Должен возвращаться "Добро пожаловать"

>>> login()

usernamepi
passwordguest
'guest' 

Ответы [ 3 ]

4 голосов
/ 05 августа 2011

если возвращается правильное имя пользователя 'pi' Я хочу получить запрос на ввод пароля.

Ваш код запрашивает как имя пользователя, так и пароль.Только после этого он проверяет, что было введено.

Предполагая, что вы хотите, чтобы ваша функция login возвращала значения, а не распечатывала их, я считаю, что вам нужно что-то вроде этого:

def login():
    username = raw_input('username: ')

    if username != 'pi':
        # if 'pi' is not entered i want to print out 'restricted'
        return 'restricted'

    # if the correct user name is returned 'pi' I want to be
    # prompted to enter a password .
    password = raw_input('password: ')

    if password == '123':
        # if password is '123' want it to grant access
        # aka ' print out 'welcome'
        return 'welcome'

    if password == 'guest':
        # this is where the second password is , if 'guest'
        # is entered want it to grant access to different
        # program aka print 'welcome guest'
        return 'welcome guest'

    # wrong password. I believe you might want to return some other value
2 голосов
/ 05 августа 2011

То, что происходит здесь, очень просто.

raw_input('username') получает имя пользователя и помещает его в переменную username и таким же образом для пароля.

После этого простоесли условие говорит, что имя пользователя 'pi', то верните пароль.Поскольку вы вводите имя пользователя 'pi', это то, что он делает.

Я думаю, вы ищете что-то вроде этого:

>>> def login():
    username = raw_input('username ')
    password = raw_input('password ')
    if username == 'pi':
        if password == '123':
            return 'welcome'
        elif password == 'guest':
            return 'welcome guest'
        else:
            return 'Please enter the correct password'
    else:
        print 'restricted'


>>> login()
username pi
password 123
'welcome'
>>> login()
username pi
password guest
'welcome guest'
>>> login()
username pi
password wrongpass
'Please enter the correct password'
2 голосов
/ 05 августа 2011
if username == 'pi':
    return password

Это делает именно то, что вы говорите: возвращает пароль, который вы ввели при вводе pi в качестве имени пользователя.

Вы, вероятно, хотели сделать это вместо этого:

if username != 'pi':
    return 'restricted'
...