Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
Lots of elif with print and comments solution in Clear category for Calculator-I by H0r4c3
import re
def strip_zeros_from_digits(log):
log_split = re.split(r'(\D)', log) # split after non-numeric chars
log_split_strip = [item.lstrip('0') for item in log_split]
new_log = ''.join(log_split_strip)
print(f'new_log = {new_log}')
return new_log
def calculator(log: str) -> str:
log = strip_zeros_from_digits(log)
e = log.rfind('=') # index of last '='
p = log.rfind('+')
m = log.rfind('-')
last = max(e,p,m)
print(f'last = {last}')
# assert calculator("000000") == "0"
# assert calculator('+') == '0'
if (not log.isnumeric() and len(log) == 1) or log.count('0') == len(log):
print(f'1. Result = 0')
return '0'
# assert calculator("0000123") == "123"
# assert calculator("1313") == "1313"
elif log.isnumeric():
print(f'2. Result = {log.strip("0")}')
return log.strip('0')
# assert calculator("+13") == "13"
elif (log.startswith('+') or log.startswith('-')) and log[1:].isnumeric():
print(f'3. New log = {log[1:]}')
return calculator(log[1:])
# assert calculator("1+3") == "3"
#assert calculator('000005+003') == '3'
elif (last == p or last == m) and last != len(log)-1:
print(f'4. New log = {log[last+1:]}')
return calculator(log[last+1:])
# assert calculator("4+") == "4"
if (log.endswith('-') or log.endswith('+')) and (log[:-1]).isnumeric():
print(f'5. New log = {log[:-1]}')
return calculator(log[:-1])
# assert calculator("1+4=") == "5"
# assert calculator("1+5-") == "6"
# assert calculator('000005+003=') == '8'
# assert calculator('-5-10+15-') == '0'
elif log[-1] == '+' or log[-1] == '-' or log[-1] == '=':
print(f'6. Result = {str(eval(log[:-1]))}')
print(log)
return str(eval(log[:-1]))
#assert calculator("1+6=7") == "7"
elif last == e and log[e+1:].isnumeric():
print(f'7. Result = {log[e+1:]}')
return log[e+1:]
# assert calculator("=5=10=15") == "15"
elif log.rfind('='):
i = log.rfind('=')
print(f'8. i = {i}, New log = {log[i+1:]}')
return calculator(log[i+1:])
print("Example:")
print(calculator("1+2"))
# These "asserts" are used for self-checking
assert calculator("000000") == "0"
assert calculator("0000123") == "123"
assert calculator("12") == "12"
assert calculator("+12") == "12"
assert calculator("") == "0"
assert calculator("1+2") == "2"
assert calculator("2+") == "2"
assert calculator("1+2=") == "3"
assert calculator("1+2-") == "3"
assert calculator("1+2=2") == "2"
assert calculator("=5=10=15") == "15"
print("The mission is done! Click 'Check Solution' to earn rewards!")
Feb. 11, 2023
Comments: