I am fairly new at python so I don't know much about it. I made a calculator and I want it to accept a:
ans()
input. Currently, there is a part that stops the program from executing an input if there is something other than [0-9 */-+] so it does not crash. How can I make
ans()
represent the output of the equation last entered so I can enter something like this:
>> 8*8 #last input
64 #last output
>> ans()*2 #current input
128 # current output
Hopefully I explained everything correctly and here is my code:
valid_chars = "0123456789-+/* \n";
while True:
x = "x="
y = input(" >> ")
x += y
if any(c not in valid_chars for c in y):
print("WARNING: Invalid Equation")
continue
try:
exec(x)
except (SyntaxError, ZeroDivisionError):
print ("WARNING: Invalid Equation")
else:
print(x)
Update: I added several lines that were recommended in the answers but it would not run (I also fixed the indents):
valid_chars = "0123456789-+/* \n";
while True:
x = "x="
y = input(" >> ")
x += y
def ans():
return _
def ans():
try:
return _
except NameError:
return 0 # appropriate value
if any(c not in valid_chars for c in y):
print("WARNING: Invalid Equation")
continue
try:
exec(x)
except (SyntaxError, ZeroDivisionError):
print ("WARNING: Invalid Equation")
else:
print(x)
Error: "Unexpected Indent" for except NameError
What did I do wrong and how can I fix this? Thanks