r/learnpython • u/Burger5704 • 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
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.
6
u/woooee 2h ago
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?"