From e49dbce21071eed21bf978ed141946dda4581bfb Mon Sep 17 00:00:00 2001 From: Pavel Vaks <129676672+PavelLinearB@users.noreply.github.com> Date: Wed, 19 Feb 2025 20:13:11 +0200 Subject: [PATCH 1/6] Create calc.py --- calc/calc.py | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 calc/calc.py diff --git a/calc/calc.py b/calc/calc.py new file mode 100644 index 0000000..efb526c --- /dev/null +++ b/calc/calc.py @@ -0,0 +1,55 @@ +# This function adds two numbers +def add(x, y): + return x + y + +# This function subtracts two numbers +def subtract(x, y): + return x - y + +# This function multiplies two numbers +def multiply(x, y): + return x * y + +# This function divides two numbers +def divide(x, y): + return x / y + + +print("Select operation.") +print("1.Add") +print("2.Subtract") +print("3.Multiply") +print("4.Divide") + +while True: + # take input from the user + choice = input("Enter choice(1/2/3/4): ") + + # check if choice is one of the four options + if choice in ('1', '2', '3', '4'): + try: + num1 = float(input("Enter first number: ")) + num2 = float(input("Enter second number: ")) + except ValueError: + print("Invalid input. Please enter a number.") + continue + + if choice == '1': + print(num1, "+", num2, "=", add(num1, num2)) + + elif choice == '2': + print(num1, "-", num2, "=", subtract(num1, num2)) + + elif choice == '3': + print(num1, "*", num2, "=", multiply(num1, num2)) + + elif choice == '4': + print(num1, "/", num2, "=", divide(num1, num2)) + + # check if user wants another calculation + # break the while loop if answer is no + next_calculation = input("Let's do next calculation? (yes/no): ") + if next_calculation == "no": + break + else: + print("Invalid Input") From f77e12d5e560f9c66b9c8797fbb9e015714725bf Mon Sep 17 00:00:00 2001 From: Pavel Vaks <129676672+PavelLinearB@users.noreply.github.com> Date: Thu, 20 Feb 2025 19:30:29 +0200 Subject: [PATCH 2/6] Update calc.py --- calc/calc.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/calc/calc.py b/calc/calc.py index efb526c..6e0d50c 100644 --- a/calc/calc.py +++ b/calc/calc.py @@ -25,7 +25,7 @@ def divide(x, y): # take input from the user choice = input("Enter choice(1/2/3/4): ") - # check if choice is one of the four options + # check if the choice is one of the four options if choice in ('1', '2', '3', '4'): try: num1 = float(input("Enter first number: ")) From 442997c70a94a0e179446d62f4b3edd5ede26f38 Mon Sep 17 00:00:00 2001 From: Pavel Vaks <129676672+PavelLinearB@users.noreply.github.com> Date: Sun, 23 Feb 2025 11:23:26 +0200 Subject: [PATCH 3/6] create calc.py --- calc/calc.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/calc/calc.py b/calc/calc.py index 6e0d50c..371b3ac 100644 --- a/calc/calc.py +++ b/calc/calc.py @@ -46,7 +46,7 @@ def divide(x, y): elif choice == '4': print(num1, "/", num2, "=", divide(num1, num2)) - # check if user wants another calculation + # check if the user wants another calculation # break the while loop if answer is no next_calculation = input("Let's do next calculation? (yes/no): ") if next_calculation == "no": From 6b4824fb5fbcf20a39e65227e4ae829334deedbe Mon Sep 17 00:00:00 2001 From: Pavel Vaks <129676672+PavelLinearB@users.noreply.github.com> Date: Sun, 23 Feb 2025 11:29:23 +0200 Subject: [PATCH 4/6] Update calc.py --- calc/calc.py | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/calc/calc.py b/calc/calc.py index 371b3ac..476b887 100644 --- a/calc/calc.py +++ b/calc/calc.py @@ -12,8 +12,17 @@ def multiply(x, y): # This function divides two numbers def divide(x, y): + if y == 0: + raise ValueError("Cannot divide by zero") return x / y +# Map operations to functions +operations = { + '1': (add, '+'), + '2': (subtract, '-'), + '3': (multiply, '*'), + '4': (divide, '/') +} print("Select operation.") print("1.Add") @@ -34,21 +43,16 @@ def divide(x, y): print("Invalid input. Please enter a number.") continue - if choice == '1': - print(num1, "+", num2, "=", add(num1, num2)) - - elif choice == '2': - print(num1, "-", num2, "=", subtract(num1, num2)) - - elif choice == '3': - print(num1, "*", num2, "=", multiply(num1, num2)) - - elif choice == '4': - print(num1, "/", num2, "=", divide(num1, num2)) + operation_func, symbol = operations[choice] + try: + print(num1, symbol, num2, "=", operation_func(num1, num2)) + except ValueError as e: + print(str(e)) + continue # check if the user wants another calculation # break the while loop if answer is no - next_calculation = input("Let's do next calculation? (yes/no): ") + next_calculation = input("Let's do next calculation? (yes/no): ").lower() if next_calculation == "no": break else: From 74298539a30636d3937c72887d4caee9c5e6f102 Mon Sep 17 00:00:00 2001 From: Pavel Vaks <129676672+PavelLinearB@users.noreply.github.com> Date: Sun, 23 Feb 2025 12:16:04 +0200 Subject: [PATCH 5/6] Update calc.py --- calc/calc.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/calc/calc.py b/calc/calc.py index 476b887..34e4f3f 100644 --- a/calc/calc.py +++ b/calc/calc.py @@ -53,7 +53,10 @@ def divide(x, y): # check if the user wants another calculation # break the while loop if answer is no next_calculation = input("Let's do next calculation? (yes/no): ").lower() - if next_calculation == "no": - break + if next_calculation in ["no", "n"]: + break + elif next_calculation not in ["yes", "y"]: + print("Invalid input. Please enter 'yes' or 'no'.") + continue else: print("Invalid Input") From 890ba51345db3b826aa8c97a6e62d531aa35b29e Mon Sep 17 00:00:00 2001 From: Pavel Vaks <129676672+PavelLinearB@users.noreply.github.com> Date: Sun, 23 Feb 2025 14:05:26 +0200 Subject: [PATCH 6/6] Update calc.py --- calc/calc.py | 75 ++++++++++++++++++++++++++++------------------------ 1 file changed, 40 insertions(+), 35 deletions(-) diff --git a/calc/calc.py b/calc/calc.py index 34e4f3f..760dc61 100644 --- a/calc/calc.py +++ b/calc/calc.py @@ -24,39 +24,44 @@ def divide(x, y): '4': (divide, '/') } -print("Select operation.") -print("1.Add") -print("2.Subtract") -print("3.Multiply") -print("4.Divide") - -while True: - # take input from the user - choice = input("Enter choice(1/2/3/4): ") - - # check if the choice is one of the four options - if choice in ('1', '2', '3', '4'): - try: - num1 = float(input("Enter first number: ")) - num2 = float(input("Enter second number: ")) - except ValueError: - print("Invalid input. Please enter a number.") - continue - - operation_func, symbol = operations[choice] - try: - print(num1, symbol, num2, "=", operation_func(num1, num2)) - except ValueError as e: - print(str(e)) - continue +def main(): + + print("Select operation.") + print("1.Add") + print("2.Subtract") + print("3.Multiply") + print("4.Divide") + + while True: + # take input from the user + choice = input("Enter choice(1/2/3/4): ") + + # check if the choice is one of the four options + if choice in ('1', '2', '3', '4'): + try: + num1 = float(input("Enter first number: ")) + num2 = float(input("Enter second number: ")) + except ValueError: + print("Invalid input. Please enter a number.") + continue + + operation_func, symbol = operations[choice] + try: + print(num1, symbol, num2, "=", operation_func(num1, num2)) + except ValueError as e: + print(str(e)) + continue - # check if the user wants another calculation - # break the while loop if answer is no - next_calculation = input("Let's do next calculation? (yes/no): ").lower() - if next_calculation in ["no", "n"]: - break - elif next_calculation not in ["yes", "y"]: - print("Invalid input. Please enter 'yes' or 'no'.") - continue - else: - print("Invalid Input") + # check if the user wants another calculation + # break the while loop if the answer is no + while True: + next_calculation = input("Let's do next calculation? (yes/no): ").lower() + if next_calculation in ["yes", "no"]: + break + if next_calculation == "no": + break + else: + print("Invalid Input") + +if __name__ == "__main__": + main()