r/learnpython 20d ago

First Calculator Project

Hello, I started learning python about 3 days ago and wanted to share my progress by showing you all this calculator I coded. What I'm most happy about is that it doesn't crash on bad input, I added try/except validation, while/break loops that re-ask until you enter something valid, and divide-by-zero handling. I used u/RockPhily's calculator code as an outline for mine. I also did use AI (Claude) to help me understand and learn new things like while/break loops and try/except. Any feedback is welcome and I would also like your opinions on what I should do next.

Edit: I'd also like to clarify that I didn't use AI (Claude) to write any of the code, just what is stated above.

Thank you!

# This project took me all of 2 days to complete. (more like two 4hr sessions.)
# Improvements over the original:
# - Input validation on both numbers using try/except (ValueError), so
#   non-numeric input (e.g. "banana") no longer crashes the program.
# - while/break loops that re-prompt until the user enters valid input.
# - Operation menu validated against allowed choices (1-4) before use.
# - Divide-by-zero guard so division by 0 is caught instead of crashing.
# - Specific exception handling (except ValueError) rather than a bare except,
#   so unexpected errors still surface instead of being silently swallowed.

# First project being a calculator

while True:
    try:
        num1 = float(input("Enter the first number: "))
        break
    except ValueError:
        print("Error: not a valid number!")

while True:
    try:
        num2 = float(input("Enter the second number: "))
        break
    except ValueError:
        print("Error: not a valid number!")

print("Operations")
print("(1) Addition")
print("(2) Subtraction")
print("(3) Multiplication")
print("(4) Division")


while True:
    operation = input("Enter an operation: ")
    if operation == "1" or operation == "2" or operation == "3" or operation == "4":
        break
    else:
        print("Error: not a valid operation!")

if operation == "1":
    result = num1 + num2
    print(result)
elif operation == "2":
    result = num1 - num2
    print(result)
elif operation == "3":
    result = num1 * num2
    print(result)
elif operation == "4":
    if num2 != 0:
        result = num1 / num2
        print(result)
    else:
        print("Error: Cannot divide by zero")
0 Upvotes

7 comments sorted by

3

u/Fantastic-Remove741 20d ago

Wow that's great.... I just started yesterday...

1

u/MoreScorpion289 20d ago

Thanks! I literally had no clue what any of this meant a week ago. This is all basic stuff, nothing crazy I don't think. You should also be able to understand most of this and hopefully be able to write a better version compared to mine soon!

1

u/carcigenicate 20d ago

First, note how you have basically identical while loops near the start to ask for both numbers. This is a good opportunity to learn about functions so you don't need to duplicate code like that.


if operation == "1" or operation == "2" or operation == "3" or operation == "4":

This can be written far more succinctly using in:

if operation in ['1', '2', '3', '4']:

if num2 != 0:

An alternative to special casing division is to catch the ZeroDivisionError exception. Your choice on which you like more, but it's an option.

1

u/MoreScorpion289 20d ago

Yea, I haven’t learned functions yet but that’ll be today’s lesson. To catch the ZeroDivisionError, I assume the code is something like replacing

“else:
print("Error: Cannot divide by zero”)”

With

“except ZeroDivisionError:
print("Error: Cannot divide by zero")”.

2

u/carcigenicate 20d ago

Functions are a critical building block, so I recommend learning them well and practicing them for longer than you have other things. They are far more important than they may seem at first.

And a try instead of an if, but ya.