diff --git a/Practice Assignment 4/main.py b/Practice Assignment 4/main.py new file mode 100644 index 0000000..9c48574 --- /dev/null +++ b/Practice Assignment 4/main.py @@ -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() \ No newline at end of file diff --git a/Practice Assignment 5/main.py b/Practice Assignment 5/main.py new file mode 100644 index 0000000..e69de29