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/9] 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 7bbb8292a46ed260817e0fe1489870656622adea Mon Sep 17 00:00:00 2001 From: PavelLinearB Date: Wed, 19 Feb 2025 20:18:51 +0200 Subject: [PATCH 2/9] fixed --- calc/calc.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/calc/calc.py b/calc/calc.py index efb526c..68d9314 100644 --- a/calc/calc.py +++ b/calc/calc.py @@ -12,6 +12,8 @@ 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 @@ -49,7 +51,7 @@ def divide(x, y): # 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": + if next_calculation.lower() == "no": break else: print("Invalid Input") From 24cf4dfe6b021adf73770bd84edda83e990c9823 Mon Sep 17 00:00:00 2001 From: Pavel Vaks <129676672+PavelLinearB@users.noreply.github.com> Date: Wed, 19 Feb 2025 20:27:47 +0200 Subject: [PATCH 3/9] Update calc.py --- calc/calc.py | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/calc/calc.py b/calc/calc.py index 68d9314..4285881 100644 --- a/calc/calc.py +++ b/calc/calc.py @@ -22,7 +22,12 @@ def divide(x, y): print("2.Subtract") print("3.Multiply") print("4.Divide") - +operations = { + '1': (add, '+'), + '2': (subtract, '-'), + '3': (multiply, '*'), + '4': (divide, '/') +} while True: # take input from the user choice = input("Enter choice(1/2/3/4): ") @@ -36,22 +41,13 @@ 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)) + func, operator = operations[choice] + print(num1, operator, num2, "=", func(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.lower() == "no": - break + break else: print("Invalid Input") From 3313a7ebf84e2cadd41e08006b05999ef91f6172 Mon Sep 17 00:00:00 2001 From: Pavel Vaks <129676672+PavelLinearB@users.noreply.github.com> Date: Thu, 20 Feb 2025 00:18:53 +0200 Subject: [PATCH 4/9] Update calc.py --- calc/calc.py | 50 +++++++++++++++++++++++++++----------------------- 1 file changed, 27 insertions(+), 23 deletions(-) diff --git a/calc/calc.py b/calc/calc.py index 4285881..b2f755c 100644 --- a/calc/calc.py +++ b/calc/calc.py @@ -28,26 +28,30 @@ def divide(x, y): '3': (multiply, '*'), '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 - - func, operator = operations[choice] - print(num1, operator, num2, "=", func(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.lower() == "no": - break - else: - print("Invalid Input") +def main(): + 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 + + func, operator = operations[choice] + print(num1, operator, num2, "=", func(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.lower() == "no": + break + else: + print("Invalid Input") + +if __name__ == "__main__": + main() From c008dd7c0f492233f3d5b6b99cfaecc1dfea537c Mon Sep 17 00:00:00 2001 From: Pavel Vaks <129676672+PavelLinearB@users.noreply.github.com> Date: Thu, 20 Feb 2025 00:22:44 +0200 Subject: [PATCH 5/9] 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 b2f755c..24de0c8 100644 --- a/calc/calc.py +++ b/calc/calc.py @@ -39,7 +39,7 @@ def main(): num1 = float(input("Enter first number: ")) num2 = float(input("Enter second number: ")) except ValueError: - print("Invalid input. Please enter a number.") + print("Invalid input. Please enter valid numbers for both inputs.") continue func, operator = operations[choice] From f65ea1f4f3d5f1ce89645d521e86767a6efb4564 Mon Sep 17 00:00:00 2001 From: Pavel Vaks <129676672+PavelLinearB@users.noreply.github.com> Date: Thu, 20 Feb 2025 12:16:13 +0200 Subject: [PATCH 6/9] Update calc.py --- calc/calc.py | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/calc/calc.py b/calc/calc.py index 24de0c8..fb5b880 100644 --- a/calc/calc.py +++ b/calc/calc.py @@ -16,12 +16,6 @@ def divide(x, y): raise ValueError("Cannot divide by zero") return x / y - -print("Select operation.") -print("1.Add") -print("2.Subtract") -print("3.Multiply") -print("4.Divide") operations = { '1': (add, '+'), '2': (subtract, '-'), @@ -29,6 +23,12 @@ def divide(x, y): '4': (divide, '/') } 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): ") @@ -45,10 +45,13 @@ def main(): func, operator = operations[choice] print(num1, operator, num2, "=", func(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.lower() == "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") From 0ebe9512d6d4370774b32da22e3eeaff96e4aab4 Mon Sep 17 00:00:00 2001 From: Pavel Vaks <129676672+PavelLinearB@users.noreply.github.com> Date: Thu, 20 Feb 2025 13:58:26 +0200 Subject: [PATCH 7/9] Update calc.py --- calc/calc.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/calc/calc.py b/calc/calc.py index fb5b880..596b031 100644 --- a/calc/calc.py +++ b/calc/calc.py @@ -43,8 +43,12 @@ def main(): continue func, operator = operations[choice] - print(num1, operator, num2, "=", func(num1, num2)) - + try: + print(num1, operator, num2, "=", func(num1, num2)) + except ValueError as e: + print(f"Error: {e}") + continue + # check if the user wants another calculation # break the while loop if answer is no while True: From 77397d183487a0c3671ea3c933c7d6b4afd4e43d Mon Sep 17 00:00:00 2001 From: Pavel Vaks <129676672+PavelLinearB@users.noreply.github.com> Date: Thu, 20 Feb 2025 19:32:08 +0200 Subject: [PATCH 8/9] 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 596b031..9d0afc7 100644 --- a/calc/calc.py +++ b/calc/calc.py @@ -33,7 +33,7 @@ def main(): # 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 38eebb9550ec18ce95e4ad687e5ba808bccf41c6 Mon Sep 17 00:00:00 2001 From: Pavel Vaks <129676672+PavelLinearB@users.noreply.github.com> Date: Thu, 20 Feb 2025 19:46:19 +0200 Subject: [PATCH 9/9] 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 9d0afc7..2bd38f6 100644 --- a/calc/calc.py +++ b/calc/calc.py @@ -50,7 +50,7 @@ def main(): continue # check if the user wants another calculation - # break the while loop if answer is no + # 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"]: