#
# 016 Python3 - Script Calcolatrice con Gestione Errori/Eccezioni
# Primo addendo + Secondo addendo = Somma
# Minuendo - Sottraendo = Differenza
# Primo fattore x Secondo fattore = Prodotto
# Dividendo : Divisore = Quoto = Quoziente e Resto
# Base ^ Esponente = Potenza
# Radicando ^ (1/Indice) = Radice
#
# Gestione errori/eccezioni in corrispondenza delle funzioni DATI() e DIVISIONE()
# tramite 'try' ed 'except'
#
# Per avviare questo script:
# 1) Salvarlo nella cartella di lavoro, con nome ed estensione che si preferisce (Estensioni comuni: .py .pyw .pyc .pyo .pyd )
# 2) Aprire un terminale nella cartella di lavoro
# 3) Impartire il comando: [python3 < nomeDelloScript.EstensioneDelloScript >]
#
def DATI(X, Y): # Inizio definizione funzione DATI()
try: # Inizio istruzioni soggette a gestione errore
XX = float(input(X)) # Acquisisce il primo numero e lo mette in una variabile a virgola mobile
YY = float(input(Y)) # Acquisisce il secondo numero e lo mette in una variabile a virgola mobile
except ValueError: # Inizio istruzioni da eseguire in caso di errore 'ValueError'
print("ERRORE!!! Occorre inserire due numeri.")
XX, YY = DATI(X, Y) # Chiama la funzione DATI() previo trasferimento del contenuto delle variabili X e Y.
return(XX, YY) # Restituisce i valori contenuti nelle due variabili a virgola mobile
def SOMMA(ADD1, ADD2): # Inizio definizione funzione SOMMA()
SUM = ADD1 + ADD2 # Calcola la somma dei 2 numeri
SUM1 = "\nLa somma fra l'addendo " + str(ADD1) + " e l'addendo " + str(ADD2) + " vale " +str(SUM)
SUM1 = "(" + str(ADD1) + " + " + str(ADD2) + ")= " + str(SUM) + SUM1
return(SUM1)
def SOTTRAZIONE(MIN, SOT): # Inizio definizione funzione SOTTRAZIONE()
DIF = MIN - SOT # Calcola la differenza dei 2 numeri
DIF1 = "\nLa differenza fra il minuendo " + str(MIN) + " ed il sottraendo " + str(SOT) + " vale " +str(DIF)
DIF1 = "(" + str(MIN) + " - " + str(SOT) + ")= " + str(DIF) + DIF1
return(DIF1)
def MOLTIPLICAZIONE(MOLTIPLICANDO, MOLTIPLICATORE): # Inizio definizione funzione MOLTIPLICAZIONE()
PRO = MOLTIPLICANDO * MOLTIPLICATORE # Calcola il prodotto dei 2 numeri
PRO1 = "\nIl prodotto fra il fattore " + str(MOLTIPLICANDO) + " ed il fattore " + str(MOLTIPLICATORE) + " vale " +str(PRO)
PRO1 = "(" + str(MOLTIPLICANDO) + " x " + str(MOLTIPLICATORE) + ")= " + str(PRO) + PRO1
return(PRO1)
def DIVISIONE(DIVIDENDO, DIVISORE): # Inizio definizione funzione DIVISIONE()
try: # Inizio istruzioni soggette a gestione errore
QUOTO = DIVIDENDO / DIVISORE # Calcola il QUOTO
QUOZ = DIVIDENDO // DIVISORE # Calcola il QUOZIENTE
RESTO = DIVIDENDO % DIVISORE # Calcola il RESTO
DIV1 = "\n(Dividendo : Divisore) = Quoto = (Quoziente e Resto)"
DIV1 = "(" + str(DIVIDENDO) + " : " + str(DIVISORE) + ")= " + str(QUOTO) + " =(" + str(QUOZ) + " e resto " + str(RESTO) +")" + DIV1
except ZeroDivisionError: # Inizio istruzioni da eseguire in caso di errore 'ZeroDivisionError'
DIV1 = "Non è possibile dividere per zero."
return(DIV1)
def POTENZA(BASE, EXP): # Inizio definizione funzione POTENZA()
POT = BASE ** EXP # Calcola la potenza della BASE
return(POT)
def RADICE(RADICANDO, INDICE): # Inizio definizione funzione RADICE()
RADICE = RADICANDO ** (1/INDICE) # Calcola la radice del RADICANDO
return(RADICE)
def TERNA(MINIMO, MASSIMO): # Inizio definizione funzione TERNA()
X3 = MINIMO ** 2 # Calcola il quadrato del contenuto della variabile MINIMO.
Y3 = MASSIMO ** 2 # Calcola il quadrato del contenuto della variabile Y2.
Z03 = X3 + Y3 # Calcola somma di quadrati
Z3 = int(Z03)
Z2 = Z3 ** (1/2) # Calcola la radice quadrata del contenuto della variabile Z3.
if Z2.is_integer():
TER = f"{X2}^2 + {Y2}^2 = {X3} + {Y3} = {Z3} = {int(Z2)}^2"; print(TER)
# Fine [if]
# Fine della funzione, senza ritorno di valore
MENU = """Operazioni possibili:
0) Chiudere questo script.
1) Addizione
2) Sottrazione
3) Moltiplicazione
4) Divisione
5) Elevazione a potenza
6) Estrazione radice
7) Calcolo terne pitagoriche
"""
while True:
print(MENU)
SCELTA = input("Per scegliere, inserire il numero corrispondente. ")
if SCELTA == "0":
print("Hai digitato la scelta 0, quindi questo script si ferma.")
break # Interrompe il ciclo 'while'
elif SCELTA == "1":
print("Hai digitato la scelta 1, quindi verrà eseguita la somma fra 2 numeri.")
X1 = "Primo addendo ? "; Y1 = "Secondo addendo ? "
X2, Y2 = DATI(X1, Y1) # Chiama la funzione DATI() previo trasferimento del contenuto delle variabili X1 e Y1.
RISULTATO = SOMMA(X2, Y2) # Chiama la funzione SOMMA() previo trasferimento del contenuto delle variabili X2 e Y2.
elif SCELTA == "2":
print("Hai digitato la scelta 2, quindi verrà eseguita la sottrazione fra 2 numeri.")
X1 = "Minuendo ? "; Y1 = "Sottraendo ? "
X2, Y2 = DATI(X1, Y1) # Chiama la funzione DATI() previo trasferimento del contenuto delle variabili X1 e Y1.
RISULTATO = SOTTRAZIONE(X2, Y2) # Chiama la funzione SOTTRAZIONE() previo trasferimento del contenuto delle variabili X2 e Y2.
elif SCELTA == "3":
print("Hai digitato la scelta 3, quindi verrà eseguita la moltiplicazione fra 2 numeri.")
X1 = "Moltiplicando ? "; Y1 = "Moltiplicatore ? "
X2, Y2 = DATI(X1, Y1) # Chiama la funzione DATI() previo trasferimento del contenuto delle variabili X1 e Y1.
RISULTATO = MOLTIPLICAZIONE(X2, Y2) # Chiama la funzione MOLTIPLICAZIONE() previo trasferimento del contenuto delle variabili X2 e Y2.
elif SCELTA == "4":
print("Hai digitato la scelta 4, quindi verrà eseguita la divisione fra 2 numeri.")
X1 = "Dividendo ? "; Y1 = "Divisore ? "
X2, Y2 = DATI(X1, Y1) # Chiama la funzione DATI() previo trasferimento del contenuto delle variabili X1 e Y1.
RISULTATO = DIVISIONE(X2, Y2) # Chiama la funzione DIVISIONE() previo trasferimento del contenuto delle variabili X2 e Y2.
elif SCELTA == "5":
print("Hai digitato la scelta 5, quindi verrà eseguita l'elevazione a potenza fra 2 numeri.")
X1 = "Base ? "; Y1 = "Esponente ? "
X2, Y2 = DATI(X1, Y1) # Chiama la funzione DATI() previo trasferimento del contenuto delle variabili X1 e Y1.
RISULTATO = POTENZA(X2, Y2) # Chiama la funzione POTENZA() previo trasferimento del contenuto delle variabili X2 e Y2.
elif SCELTA == "6":
print("Hai digitato la scelta 6, quindi verrà eseguita la radice fra 2 numeri.")
X1 = "Radicando ? "; Y1 = "Indice ? "
X2, Y2 = DATI(X1, Y1) # Chiama la funzione DATI() previo trasferimento del contenuto delle variabili X1 e Y1.
RISULTATO = RADICE(X2, Y2) # Chiama la funzione RADICE() previo trasferimento del contenuto delle variabili X2 e Y2.
elif SCELTA == "7":
print("Hai digitato la scelta 7, quindi verranno calcolate tutte le terne pitagoriche comprese tra 2 numeri.")
X1 = "Numero minimo ? "; Y1 = "Numero massimo ? "
X02, Y02 = DATI(X1, Y1) # Chiama la funzione DATI() previo trasferimento del contenuto delle variabili X1 e Y1.
X12 = int(X02)
Y12 = int(Y02)
for X2 in range(X12, Y12, 1): # Inizio del ciclo che verrà ripetuto varie volte, da X02 a Y02 incrementando 1.
for Y2 in range(X2, Y12, 1): # Inizio del ciclo che verrà ripetuto varie volte, da X2 a Y12 incrementando 1.
TERNA(X2, Y2) # Chiama la funzione TERNA() previo trasferimento del contenuto delle variabili X2 e Y2.
# Fine ciclo [for Y2]
# Fine ciclo [for X2]
RISULTATO = "Fatto." # Definisce contenuto variabile RISULTATO.
else:
print("La scelta " + SCELTA + " non è una scelta valida")
continue # Ricomincia il ciclo 'while'
# Fine del ciclo 'if', 'elif', 'else'
print(RISULTATO)
input("Per poter proseguire, premere il tasto [Invio]")
# Fine del ciclo 'while'
#