5.3 - Secret agents

Create a program that has two procedures:

  • login() — keeps asking for a username and password until both are correct.
  • show_active_agents() — uses two parallel arrays (agent names and their status) and displays only the agents who are “active”.

The main program should only contain calls to these two procedures, in order.

Username: admin
Password: wrong
Try again.

Username: admin
Password: letmein
Login successful.

Active agents:
Bond
Hunt
Nikita
PROCEDURE login()
    SET correct_user TO "admin"
    SET correct_pass TO "letmein"
    SET valid TO FALSE
    WHILE valid = FALSE DO
        OUTPUT "Username: "
        INPUT username
        OUTPUT "Password: "
        INPUT password
        IF username = correct_user AND password = correct_pass THEN
            SET valid TO TRUE
            OUTPUT "Login successful."
        ELSE
            OUTPUT "Try again."
        END IF
    END WHILE
END PROCEDURE

PROCEDURE show_active_agents()
    SET agents TO ["Bond", "Hunt", "Nikita", "Bourne", "Carter"]
    SET status TO ["active", "active", "active", "retired", "undercover"]

    OUTPUT "Active agents:"
    FOR index FROM 0 TO (length of agents) - 1 DO
        IF status[index] = "active" THEN
            OUTPUT agents[index]
        END IF
    END FOR
END PROCEDURE

# main program
CALL login()
CALL show_active_agents()

 

# main program 
login()
show_active_agents()
def login():
    correct_user = "admin"
    correct_pass = "letmein"
    valid = False
    while valid == False:
        username = input("Username: ")
        password = input("Password: ")
        if username == correct_user and password == correct_pass:
            valid = True
            print("Login successful.")
        else:
            print("Try again.")
    print()  # spacing after login

def show_active_agents():
    agents = ["Bond", "Hunt", "Nikita", "Bourne", "Carter"]
    status = ["active", "active", "active", "retired", "undercover"]

    print("Active agents:")
    for i in range(len(agents)):
        if status[i] == "active":
            print(agents[i])

# main program 
login()
show_active_agents()
def login():
    # keep asking until both username and password are correct
    correct_user = "admin"
    correct_pass = "letmein"
    valid = False
    while valid == False:
        username = input("Username: ")
        password = input("Password: ")
        if username == correct_user and password == correct_pass:
            valid = True   # successful login
            print("Login successful.")
        else:
            print("Try again.")
    print()  # blank line for spacing after login

def show_active_agents():
    # parallel arrays: names and their matching status
    agents = ["Bond", "Hunt", "Nikita", "Bourne", "Carter"]
    status = ["active", "active", "active", "retired", "undercover"]

    print("Active agents:")
    # loop through both lists by index
    for i in range(len(agents)):
        if status[i] == "active":
            print(agents[i])

# main program
login()
show_active_agents()

Extension

Update the program so that after a successful login, the show_agents() procedure asks the user which status they want to see (e.g. “active”, “retired”, “undercover”).
The program then displays all agents with that status.

Username: admin
Password: letmein
Login successful.

Which status do you want to see? retired
Agents with status 'retired':
Bourne