r/learnpython • • 2h ago

Need help with a calculator project

new to python, Im making a calculator but when i try to make the code be able to handle a word without crashing it just doesnt work, it just goes and ask for the operator without restarting the loop, tried ai to fix it and explain it to me but didnt do nothing.

num1 = None
num2 = None
result = None


while num1 == None or num2 == None:
    try:
        num1 = float(input("Enter first number: "))
    
    except ValueError:
        print("must enter a valid number")
        num1 = None
        continue


    try:
        num2 = float(input("enter second number"))


    except ValueError:
        print("must enter a valid number")
        num2 = None
        continue
    operator = input("Enter operation (+, -, *, /)")


    if operator == "+":
        result = (num1 + num2)


    elif operator == "-":
        result = (num1 - num2)


    elif operator == "*":
        result = (num1 * num2)


    elif operator == "/" and num2 == 0:
        result = ("cant divide by zero")


    elif operator == "/" and num2 != 0:
        result = (num1 / num2)


    else:
        result = ("Invalid operator")


    if result == float or int:
        print(result)
        num1 = None
        num2 = Nonenum1 = None
num2 = None
result = None


while num1 == None or num2 == None:
    try:
        num1 = float(input("Enter first number: "))
    
    except ValueError:
        print("must enter a valid number")
        num1 = None
        continue


    try:
        num2 = float(input("enter second number"))


    except ValueError:
        print("must enter a valid number")
        num2 = None
        continue
    operator = input("Enter operation (+, -, *, /)")


    if operator == "+":
        result = (num1 + num2)


    elif operator == "-":
        result = (num1 - num2)


    elif operator == "*":
        result = (num1 * num2)


    elif operator == "/" and num2 == 0:
        result = ("cant divide by zero")


    elif operator == "/" and num2 != 0:
        result = (num1 / num2)


    else:
        result = ("Invalid operator")


    if result == float or int:
        print(result)
        num1 = None
        num2 = None
3 Upvotes

3 comments sorted by

6

u/woooee 2h ago
if result == float or int:

This is a common mistake that is in the FAQs https://www.reddit.com/r/learnpython/wiki/faq/ see "Variable is One of Two Choices?"

•

u/Vegetable_Soil_6707 35m ago

tbh this one gets posted like every other day, its such a natural way to read it in english but python doesnt see it that way

1

u/Sure-Passion2224 2h ago

A calculator that replicates the physical experience maintains a character buffer that gets updated with each key press. As a key is pressed it is examined to determine what to do with it. Numerical keys append to the current input string. Operation keys get linked to processing methods.

As an example: (over-simplified) "+" stores the current input value and initiates input of the next input to be added to it. It also needs to set an indicator if what operation is being performed. "=" then finalizes the input and executes the operation.