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