From 4e8a48d06c4b434a7fc3fba310a9999504133ad2 Mon Sep 17 00:00:00 2001 From: FreakyJay1 Date: Wed, 18 Dec 2024 19:53:53 +0200 Subject: [PATCH] sumbit it before time is up --- banking_app/login.py | 18 ++++++ banking_app/signup.py | 19 ++++++ banking_app/transaction.py | 42 +++++++++++- functions_to_test.py | 129 +++++++++++++++++++++++++++++++++---- 4 files changed, 195 insertions(+), 13 deletions(-) diff --git a/banking_app/login.py b/banking_app/login.py index 2bbab36..d9c6d88 100644 --- a/banking_app/login.py +++ b/banking_app/login.py @@ -33,3 +33,21 @@ def login(username, password): - bool: `True` if login is successful, `False` if login fails, or raises a `ValueError` for invalid input. """ + try: + if username == "" or password == "": + raise ValueError + + symbol = "!@#$%^&*()_+={}[]|:;'\"<>,.?/" + for char in username: + if char in symbol: + raise ValueError + + valid1 = "user1" + valid2 = "securepassword123" + + if username == valid1 and password == valid2: + return True + else: + return False + except: + raise diff --git a/banking_app/signup.py b/banking_app/signup.py index a920e5b..4a3a00a 100644 --- a/banking_app/signup.py +++ b/banking_app/signup.py @@ -35,3 +35,22 @@ def signup(username, password, email): Returns: - bool: `True` if the signup is successful, otherwise raises a `ValueError` for invalid input. """ + + try: + if username == "" or password == "" or email == "": + raise ValueError + + if len(password) < 6: + raise ValueError + + if "@" not in email or "." not in email: + raise ValueError + + existing = ["existinguser"] + + if username in existing: + raise ValueError + + return True + except: + raise \ No newline at end of file diff --git a/banking_app/transaction.py b/banking_app/transaction.py index a444e25..c466203 100644 --- a/banking_app/transaction.py +++ b/banking_app/transaction.py @@ -1,5 +1,5 @@ # transaction.py - Placeholder for transaction functionality - +from banking_app.user_management import read_users,write_users def transact(sender_account, receiver_account, amount): """ Handles the transfer of funds between two user accounts. @@ -44,4 +44,44 @@ def transact(sender_account, receiver_account, amount): """ #hint should use read_users and write_users from user_management + + if sender_account == "" or receiver_account == "": + raise ValueError + + if sender_account == receiver_account: + raise ValueError + + if amount <= 0: + raise ValueError + + try: + users = read_users() + + sender = None + receiver = None + + for user in users: + if user["account_id"] == sender_account: + sender = user + + if user["account_id"] == receiver_account: + receiver = user + + if sender_account == "" or receiver_account == "": + raise ValueError + + if sender["balance"] < amount: + raise ValueError + + sender["balance"] -= amount + receiver["balance"] += amount + + write_users(users) + + return True + + except: + raise + + diff --git a/functions_to_test.py b/functions_to_test.py index 330fa02..61ccee9 100644 --- a/functions_to_test.py +++ b/functions_to_test.py @@ -1,34 +1,131 @@ # Placeholder functions for Python basics, to be implemented later def add_numbers(a, b): - pass + if type(a) != int or type(b) != int: + raise TypeError + + try: + sum = a + b + return sum + except: + raise TypeError def find_maximum(a, b, c): - pass + if type(a) != int or type(b) != int or type(c) != int: + raise TypeError + + try: + high = max(a,b,c) + return high + except: + TypeError def is_palindrome(string): - pass + try: + if type(string) != str: + raise TypeError + + string = string.replace(" ","") + reversed_word = string[::-1] + return string.lower() == reversed_word.lower() + except: + raise def count_word_occurrences(text, word): - pass + try: + if type(text) != str or type(word) != str: + raise TypeError + text = text.lower() + word = word.lower() + list1 = text.split() + return list1.count(word) + except: + raise def read_file_lines(filepath): - pass + try: + if type(filepath) != str: + raise TypeError + with open(filepath, 'r') as f: + return f.readlines() + except: + raise def factorial(n): - pass + try: + if type(n) != int: + raise TypeError + if n < 0: + raise ValueError + if n == 0: + return 1 + result = 1 + for i in range(1,n +1): + result *= i + return result + except: + raise + + def is_prime(n): - pass + try: + if type(n) != int: + raise TypeError + + if n < 0: + raise ValueError + if n < 2: + return False + number = int(n ** 0.5) + 1 + for j in range(2,number): + if n % j == 0: + return False + return True + except: + raise def sort_numbers(numbers): - pass + try: + for x in numbers: + if type(x) != int: + raise TypeError + except: + raise + + return sorted(numbers) def factorial(n): - pass + try: + if type(n) != int: + raise TypeError + if n < 0: + raise ValueError + + result = 1 + for i in range(1,n +1): + result *= i + return result + except: + raise def fibonacci(n): - pass + try: + if type(n) != int: + raise TypeError + if n < 0: + raise ValueError + if n == 0: + return 0 + elif n == 1: + return 1 + + x,z = 0,1 + for _ in range(2, n+1): + x,z = z, x +z + return z + except: + raise def tower_of_hanoi(n, source, auxiliary, target): @@ -52,8 +149,16 @@ def tower_of_hanoi(n, source, auxiliary, target): class Person: def __init__(self, name, age): - pass - + try: + if type(name) != str: + raise TypeError + if type(age) != int: + raise TypeError + + self.name = name + self.age = age + except: + raise if __name__ == "__main__": # Placeholder functions for Python basics, to be implemented later