Salve a tutti,
ringrazio chi risponderà. Mi sono cimentato da poco col Python e avevo in mente di creare una calcolatrice scientifica da terminale, visto che non ho ancora studiato librerie grafiche come Tkinter o QT. Quando sono andato a creare dei moduli e li ho importati, Python ha iniziato a restituirmi questo errore NameError:
quando inserisco come valore di "expression" la funzione coseno e seno, mentre con la tangente questo problema non si presenta. Non capisco da dove provenga questo errore: mi potete aiutare?
La root contiene il file calculator.py e una cartella chiamata src, dove ho messo alcuni metodi creati ad hoc da me.
Mi dispiace se il codice non è molto comprensibile ma sono alle prime armi e ho cercato di essere più elegante possibile.
Vi allego tutti i file:
calculator.py(file principale)
angle_converter.py
__init__.py
ringrazio chi risponderà. Mi sono cimentato da poco col Python e avevo in mente di creare una calcolatrice scientifica da terminale, visto che non ho ancora studiato librerie grafiche come Tkinter o QT. Quando sono andato a creare dei moduli e li ho importati, Python ha iniziato a restituirmi questo errore NameError:
Codice:
name 'mh' is not defined
La root contiene il file calculator.py e una cartella chiamata src, dove ho messo alcuni metodi creati ad hoc da me.
Mi dispiace se il codice non è molto comprensibile ma sono alle prime armi e ho cercato di essere più elegante possibile.
Vi allego tutti i file:
calculator.py(file principale)
Codice:
import math
import src
expression = ""
number = ""
def math_costant(string):
constant = {
"pi": "math.pi",
"e": "math.e"
}
for x in constant:
if x in string:
string = string.replace(x, str(constant[x]))
return string
def math_function(string):
function = {
'trigonometric_function': {
"cos": "math.cos",
"sin": "math.sin",
"tan": "math.tan"
},
'logarithmics_function':{
"log2": "math.log2",
"log10": "math.log10"
}
}
for x in function:
for el in function[str(x)]:
if str(el) in string:
if el == "cos" or el == "sin" or el == "tan":
string = src.angle_converter(src.remove_string(string, el), el)
string = string.replace(el, function[x][el])
return string
while expression != EOFError:
expression = str(input(">> "))
print(eval(math_function(math_costant(expression))))
angle_converter.py
Codice:
import math
def angle_converter(st, el):
st = "math.radians(" + st + ")"
if el == "cos()":
st = "cos(" + str + ")"
elif el == "sin()":
st = "sin(" + st + ")"
else:
st = "tan(" + st + ")"
return st
def remove_string(st, pattern):
pattern = pattern + "()"
for x in pattern:
if x in st:
from .angle_converter import *
st = st.replace(x, "")
else:
pass
return st
if __name__ == "__main__":
print("Programma sbagliato")
exit()
__init__.py
Codice:
from .angle_converter import *