Hier ein guter Calculator:
import re
from math import *
functions = {"sin": sin, "cos": cos, "tan": tan, "arcsin": asin, "arccos": acos, "arctan": atan, "sinh": sinh, "cosh": cosh, "tanh": tanh, "arcsinh": asinh, "arccosh": acosh, "arctanh": atanh}
def solve(equation):
left, right = equation.split("=")
return eval(right.strip(), {"x": eval(left.strip())})
def main():
print("Welcome to the calculator program!")
print("Type 'help' to see a list of available functions")
while True:
expression = input("Enter an expression to evaluate: ")
if expression.lower() == "exit":
break
elif expression.lower() == "help":
print("Available functions:")
print("-" * 30)
print("Standard functions:")
print("addition(a, b)")
print("subtraction(a, b)")
print("multiplication(a, b)")
print("division(a, b)")
print("exponent(a, b)")
print("square_root(a)")
print("sin(a)")
print("cos(a)")
print("tan(a)")
print("arcsin(a)")
print("arccos(a)")
print("arctan(a)")
print("sinh(a)")
print("cosh(a)")
print("tanh(a)")
print("arcsinh(a)")
print("arccosh(a)")
print("arctanh(a)")
print("ln(a)")
print("log10(a)")
print("-" * 30)
print("Other functions:")
print("matrix_addition(matrix_a, matrix_b)")
print("matrix_subtraction(matrix_a, matrix_b)")
print("matrix_multiplication(matrix_a, matrix_b)")
print("matrix_transpose(matrix)")
print("matrix_determinant(matrix)")
print("matrix_inverse(matrix)")
print("-" * 30)
else:
try:
# Überprüfung auf ungültige mathematische Funktionen
if any(func in expression.lower() for func in functions.keys()):
# Konvertiere Argumente in Zahlen
expression = re.sub(r"([a-zA-Z]+)", r"functions['\1']", expression)
result = eval(expression)
print(f"{expression} = {result}")
# Überprüfung auf gültige Gleichung
elif "=" in expression:
if expression.count("=") > 1:
raise ValueError("Invalid equation, please use only one '=' sign")
left, right = expression.split("=")
if not left.strip() or not right.strip():
raise ValueError("Invalid equation, please use the form 'equation = 0'")
result = solve(expression)
print(result)
else:
result = eval(expression)
print(f"{expression} = {result}")
except ValueError as ve:
print(ve)
except SyntaxError:
print("Invalid expression")
except ZeroDivisionError:
print("Cannot divide by zero")
except Exception as e:
print(f"An unexpected error occurred: {e}")
if __name__ == "__main__":
main()
Auf dem iPad mit diesem hochgelobten Programm ausführbar:
https://apps.apple.com/de/app/pythonista-3/id1085978097Zusammen mit ChatGPT ergibt sich die Möglichkeit auf iOS Python Programme zu generieren, testen und auszuführen.
Das IPad erhält dadurch eine größere Funktionsbreite.
Lothar