Complete Practice 4
This commit is contained in:
parent
6f660119f9
commit
bc965e1dbc
86
Practice Assignment 4/main.py
Normal file
86
Practice Assignment 4/main.py
Normal file
@ -0,0 +1,86 @@
|
||||
import random
|
||||
import re
|
||||
import os
|
||||
|
||||
TERMS = {
|
||||
"ALGORITHM": "A set of instructions to solve a problem",
|
||||
"MALWARE": "Software designed to cause harm to a system",
|
||||
"PHISHING": "Fraudulent attempt to obtain sensitive information",
|
||||
"SQL": "Language used to communicate with databases",
|
||||
"ENCRYPTION": "Process of converting data to prevent unauthorized access",
|
||||
"SERVER": "A computer that provides data to other computers",
|
||||
"TESTING": "Checking code to ensure it meets requirements without errors"
|
||||
}
|
||||
|
||||
def auth():
|
||||
choice = input("Enter 'r' to register or 'l' to login: ").lower()
|
||||
if choice == 'r':
|
||||
name = input("Enter full name: ")
|
||||
while True:
|
||||
user = input("Choose username (4-8 characters): ")
|
||||
if 4 <= len(user) <= 8: break
|
||||
print("Username must be between 4 and 8 characters.")
|
||||
while True:
|
||||
pwd = input("Choose password (requires uppercase, lowercase, and a number): ")
|
||||
if re.search(r'[A-Z]', pwd) and re.search(r'[a-z]', pwd) and re.search(r'\d', pwd): break
|
||||
print("Password does not meet complexity requirements.")
|
||||
|
||||
with open("students.txt", "a") as f:
|
||||
f.write(f"{user},{pwd},{name}\n")
|
||||
return user
|
||||
else:
|
||||
u, p = input("Username: "), input("Password: ")
|
||||
try:
|
||||
with open("students.txt", "r") as f:
|
||||
if any(line.strip().startswith(f"{u},{p},") for line in f): return u
|
||||
except FileNotFoundError: pass
|
||||
print("Login failed or user does not exist."); return None
|
||||
|
||||
def quiz(user):
|
||||
keyword, correct_def = random.choice(list(TERMS.items()))
|
||||
options = [correct_def] + random.sample([v for k, v in TERMS.items() if k != keyword], min(3, len(TERMS)-1))
|
||||
random.shuffle(options)
|
||||
|
||||
print(f"\nKeyword: {keyword}")
|
||||
for i, opt in enumerate(options, 1):
|
||||
print(f"{i}. {opt}")
|
||||
|
||||
score = 0
|
||||
for attempt, points in [(1, 3), (2, 1)]:
|
||||
try:
|
||||
ans = int(input(f"Attempt {attempt} - Choose 1-{len(options)}: "))
|
||||
if options[ans-1] == correct_def:
|
||||
print("Correct!")
|
||||
score = points
|
||||
break
|
||||
print("Incorrect!")
|
||||
except (ValueError, IndexError):
|
||||
print("Invalid choice.")
|
||||
else:
|
||||
print(f"The correct definition was: {correct_def}")
|
||||
|
||||
with open("scores.txt", "a") as f:
|
||||
f.write(f"{user},{score}\n")
|
||||
|
||||
def main():
|
||||
user = None
|
||||
while not user:
|
||||
user = auth()
|
||||
|
||||
while True:
|
||||
action = input("\nChoose: [1] Try Quiz [2] View Scores [3] Quit: ")
|
||||
if action == '1':
|
||||
quiz(user)
|
||||
elif action == '2':
|
||||
try:
|
||||
with open("scores.txt", "r") as f:
|
||||
scores = [l.strip().split(',')[1] for l in f if l.startswith(f"{user},")]
|
||||
print("Your previous scores:" if scores else "No scores yet.")
|
||||
for s in scores: print(f"- {s} points")
|
||||
except FileNotFoundError:
|
||||
print("No scores yet.")
|
||||
elif action == '3':
|
||||
break
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
0
Practice Assignment 5/main.py
Normal file
0
Practice Assignment 5/main.py
Normal file
Loading…
Reference in New Issue
Block a user