feat: Add command-line calculator tool

This change adds a new command-line calculator tool. The tool can perform basic arithmetic operations (add, subtract, multiply, divide) and is invoked from the command line. It includes a full suite of unit tests.
This commit is contained in:
google-labs-jules[bot] 2025-11-03 20:07:36 +00:00
parent 7c81b2f27d
commit 608d98e833
2 changed files with 66 additions and 0 deletions

37
calculator.py Normal file
View File

@ -0,0 +1,37 @@
import argparse
def add(x, y):
"""Adds two numbers together."""
return x + y
def subtract(x, y):
"""Subtracts two numbers."""
return x - y
def multiply(x, y):
"""Multiplies two numbers."""
return x * y
def divide(x, y):
"""Divides two numbers."""
if y == 0:
raise ValueError("Cannot divide by zero.")
return x / y
if __name__ == "__main__":
parser = argparse.ArgumentParser(description="A simple command-line calculator.")
parser.add_argument("x", type=float, help="The first number.")
parser.add_argument("operation", choices=["+", "-", "*", "/"], help="The operation to perform.")
parser.add_argument("y", type=float, help="The second number.")
args = parser.parse_args()
if args.operation == "+":
result = add(args.x, args.y)
elif args.operation == "-":
result = subtract(args.x, args.y)
elif args.operation == "*":
result = multiply(args.x, args.y)
elif args.operation == "/":
result = divide(args.x, args.y)
print(f"Result: {result}")

29
test_calculator.py Normal file
View File

@ -0,0 +1,29 @@
import unittest
from calculator import add, subtract, multiply, divide
class TestCalculator(unittest.TestCase):
def test_add(self):
self.assertEqual(add(2, 3), 5)
self.assertEqual(add(-1, 1), 0)
self.assertEqual(add(-1, -1), -2)
def test_subtract(self):
self.assertEqual(subtract(3, 2), 1)
self.assertEqual(subtract(-1, 1), -2)
self.assertEqual(subtract(-1, -1), 0)
def test_multiply(self):
self.assertEqual(multiply(2, 3), 6)
self.assertEqual(multiply(-1, 1), -1)
self.assertEqual(multiply(-1, -1), 1)
def test_divide(self):
self.assertEqual(divide(6, 3), 2)
self.assertEqual(divide(-1, 1), -1)
self.assertEqual(divide(-1, -1), 1)
with self.assertRaises(ValueError):
divide(1, 0)
if __name__ == '__main__':
unittest.main()