019 Python3 – Script Calcolatrice (+ – x : Potenza Radice) + Moduli + Funzioni + Gestione Errori/Eccezioni
01) Cose da sapere prima di procedere
In questa pagina si ripropone il tema della calcolatrice in grado di fare: Addizioni, Sottrazioni, Moltiplicazioni, Divisioni, Elevazioni a potenza, Radice. A differenza della calcolatrice vista in precedenza, qui si propone il tema della suddivisione del programma in MODULI: il modulo principale (contenente il programma principale, che, all’occorrenza, “chiama” FUNZIONI e MODULI), il modulo di acquisizione (contenente le istruzioni aventi il compito di acquisire i dati) e due ulteriori moduli che si dividono il compito di contenere le istruzioni per calcolare il risultato delle varie operazioni).
In effetti, sarebbe stato possibile mettere tutte le istruzioni in un unico script; tuttavia, suddividere un programma in moduli distinti permette a più persone di lavorare in autonomia sulla parte del codice destinato ad assolvere un numero predeterminato di funzioni senza intralciarsi a vicenda, limita enormemente la probabilità che si verifichino errori accidentali, e rende più semplice sia la stesura, sia la rilettura, sia la correzione, sia l’aggiornamento del codice.
Il numero ed il nome dei singoli moduli, può essere deciso arbitrariamente dal programmatore in base alle proprie esigenze, purché nessun nome sia identico ad un nome già assegnato ad una parola-chiave di Python 3.
Ogni modulo, quantunque presente e funzionante, può essere utilizzato solo se precedentemente importato. Il comando per importare i moduli è
import Nome_Del_Modulo # Importa il modulo [Nome_Del_Modulo]
Per praticità, il codice è stato scritto supponendo che tutti i moduli si trovino nella medesima cartella in cui si trova il modulo principale, e si consiglia di fare altrettanto. E’ altresì possibile scrivere il codice prevedendo di mettere i singoli moduli in cartelle diverse da quella in cui si trova il programma principale, ma ciò implica che l’importazione e la chiamata di moduli avvenga indicando non solo il nome del modulo chiamato, ma anche il percorso, e che il percorso sia indicato secondo la logica prevista dal Sistema Operativo, complicando così le cose e rendendo i programmi in grado di funzionare solo su determinati Sistemi Operativi.
02) Calcolatrice – Il modulo contenente: programma principale, la funzione
# # 019 Python3 - Script Calcolatrice (+ - x : Potenza Radice)+ Moduli + Funzioni + 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 ACQUISIZIONE() e DIVISIONE() # tramite 'try' ed 'except' # # Per avviare questo script: # 1) Salvarlo nella cartella di lavoro, con nome CalcolatriceMain.py # 2) Assicurarsi che la cartella di lavoro, oltre a questo script, contenga anche gli script contenenti le funzioni chiamate. # 3) Aprire un terminale nella cartella di lavoro # 4) Impartire il comando: [python3 CalcolatriceMain.py] # Inizio definizione funzioni def NUMERI(SCELTA): # Inizio definizione funzione NUMERI() NUM_1 = ["STOP", "Primo addendo: ", "Minuendo: ", "Moltiplicando: ", "Dividendo: ", "Base: ", "Radicando: ", "In Costruzione"] NUM_2 = ["STOP", "Secondo addendo: ", "Sottraendo: ", "Moltiplicatore: ", "Divisore: ", "Esponente: ", "Indice: ", "Finire"] NUM1 = ["Primo Numero: ", "0.0", 0, 0] # Definisce la variabile-Lista NUM1 contenente ["Descrizione", "num_reale", num_significativo, num_grandezza] NUM2 = ["Secondo Numero: ", "0.0", 0, 0] # Definisce la variabile-Lista NUM2 contenente ["Descrizione", "num_reale", num_significativo, num_grandezza] SCELTA = int(SCELTA) # Converte il contenuto della variabile SCELTA in un numero intero NUM1[0] = NUM_1[SCELTA] NUM1[1] = ModACQUISIZIONE.ACQUISIZIONE(NUM_1[SCELTA]) # Chiama la funzione [ACQUISIZIONE] contenuta nel modulo [ModACQUISIZIONE] # ^ Il risultato di ritorno, verrà messo nella Variabile Lista NUM2[1] NUM1[2], NUM1[3] = ModACQUISIZIONE.CONVERTE(NUM1[1]) # Chiama la funzione [CONVERTE] contenuta nel modulo [ModACQUISIZIONE] # ^ Il risultato di ritorno, verrà messo nella Variabile-Lista NUM1[2] e NUM1[3] # NUM2[0] = NUM_2[SCELTA] NUM2[1] = ModACQUISIZIONE.ACQUISIZIONE(NUM_2[SCELTA]) # Chiama la funzione [ACQUISIZIONE] contenuta nel modulo [ModACQUISIZIONE] # ^ Il risultato di ritorno, verrà messo nella Variabile Lista NUM1[2] e NUM2[2], NUM2[3] = ModACQUISIZIONE.CONVERTE(NUM2[1]) # Chiama la funzione [CONVERTE] contenuta nel modulo [ModACQUISIZIONE] # ^ Il risultato di ritorno, verrà messo nella Variabile-Lista NUM2[2] e NUM2[3] return(NUM1, NUM2) def LAVORI_IN_CORSO(X): # Inizio definizione funzione LAVORI_IN_CORSO() if X == "7": MESSAGGIO = "Hai deliberatamente scelto di digitare la scelta 7, che ha come unico scopo di visualizzare questo messaggio." else: MESSAGGIO = "L'opzione "+X+" non è al momento selezionabile; ci scusiamo per il disagio." return(MESSAGGIO) # Fine definizione funzioni # Inizio importazione moduli import ModACQUISIZIONE # Importa il modulo [ModACQUISIZIONE] import ModSomSotMolt # Importa il modulo [ModSomSotMolt] import ModDivPotRad # Importa il modulo [ModDivPotRad] # Fine importazione moduli # Inizio definizione variabili MENU = """Operazioni possibili: 0) Chiudere questo script. 1) Addizione 2) Sottrazione 3) Moltiplicazione 4) Divisione 5) Elevazione a potenza 6) Estrazione radice 7) Funzione in costruzione """ NUM_1 = ["STOP", "Primo addendo: ", "Minuendo: ", "Moltiplicando: ", "Dividendo: ", "Base: ", "Radicando: ", "In Costruzione"] NUM_2 = ["STOP", "Secondo addendo: ", "Sottraendo: ", "Moltiplicatore: ", "Divisore: ", "Esponente: ", "Indice: ", "Finire"] NUM_3 = ["STOP", "Somma: ", "Differenza: ", "Prodotto: ", "Quoto: ", "_Quoziente: ", "_Resto: ", "Finire"] NUM1 = ["Primo Numero: ", "0.0", 0, 0] # Definisce la variabile-Lista NUM1 contenente ["Descrizione", "num_reale", num_significativo, num_grandezza] NUM2 = ["Secondo Numero: ", "0.0", 0, 0] # Definisce la variabile-Lista NUM2 contenente ["Descrizione", "num_reale", num_significativo, num_grandezza] NUM3 = ["Calcolato: ", "0.0", 0, 0] # Definisce la variabile-Lista NUM3 contenente ["Descrizione", "num_reale", num_significativo, num_grandezza] RISULTATO = "RISULTATO" # Definisce la variabile alfanumerica RISULTATO # Fine definizione variabili 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.") NUM1, NUM2 = NUMERI(SCELTA) # Chiama la funzione NUMERI() previo trasferimento del contenuto della variabile SCELTA # Il risultato viene messo nelle variabili-Lista NUM1 e NUM2 NUM3 = ModSomSotMolt.SOMMA(NUM1, NUM2) # Chiama la funzione SOMMA() contenuta nel modulo [ModSomSotMolt] # previo trasferimento del contenuto delle variabili-Lista NUM1 ed NUM2 # Il risultato viene messo nella variabile-Lista NUM3 RISULTATO = f"{NUM1[0]} {NUM1[1]} = {NUM1[2]}x10^({NUM1[3]})\n" RISULTATO = RISULTATO + f"{NUM2[0]} {NUM2[1]} = {NUM2[2]}x10^({NUM2[3]})\n" RISULTATO = RISULTATO + f"{NUM3[0]} {NUM3[1]} = {NUM3[2]}x10^({NUM3[3]}) = {NUM3[2] * 10 ** NUM3[3]}" elif SCELTA == "2": print("Hai digitato la scelta 2, quindi verrà eseguita la sottrazione fra 2 numeri.") NUM1, NUM2 = NUMERI(SCELTA) # Chiama la funzione NUMERI() previo trasferimento del contenuto della variabile SCELTA # Il risultato viene messo nelle variabili-Lista NUM1 e NUM2 NUM3 = ModSomSotMolt.SOTTRAZIONE(NUM1, NUM2) # Chiama la funzione SOTTRAZIONE() contenuta nel modulo [ModSomSotMolt] # previo trasferimento del contenuto delle variabili-Lista NUM1 ed NUM2 # Il risultato viene messo nella variabile NUM3 RISULTATO = f"{NUM1[0]} {NUM1[1]} = {NUM1[2]}x10^({NUM1[3]})\n" RISULTATO = RISULTATO + f"{NUM2[0]} {NUM2[1]} = {NUM2[2]}x10^({NUM2[3]})\n" RISULTATO = RISULTATO + f"{NUM3[0]} {NUM3[1]} = {NUM3[2]}x10^({NUM3[3]}) = {NUM3[2] * 10 ** NUM3[3]}" elif SCELTA == "3": print("Hai digitato la scelta 3, quindi verrà eseguita la moltiplicazione fra 2 numeri.") NUM1, NUM2 = NUMERI(SCELTA) # Chiama la funzione NUMERI() previo trasferimento del contenuto della variabile SCELTA # Il risultato viene messo nelle variabili-Lista NUM1 e NUM2 NUM3 = ModSomSotMolt.MOLTIPLICAZIONE(NUM1, NUM2) # Chiama la funzione MOLTIPLICAZIONE() contenuta nel modulo [ModSomSotMolt] # previo trasferimento del contenuto delle variabili-Lista NUM1 ed NUM2 # Il risultato viene messo nella variabile-Lista NUM3 RISULTATO = f"{NUM1[0]} {NUM1[1]} = {NUM1[2]}x10^({NUM1[3]})\n" RISULTATO = RISULTATO + f"{NUM2[0]} {NUM2[1]} = {NUM2[2]}x10^({NUM2[3]})\n" RISULTATO = RISULTATO + f"{NUM3[0]} {NUM3[1]} = {NUM3[2]}x10^({NUM3[3]}) = {NUM3[2] * 10 ** NUM3[3]}" elif SCELTA == "4": print("Hai digitato la scelta 4, quindi verrà eseguita la divisione fra 2 numeri.") NUM1, NUM2 = NUMERI(SCELTA) # Chiama la funzione NUMERI() previo trasferimento del contenuto della variabile SCELTA # Il risultato viene messo nelle variabili-Lista NUM1 e NUM2 RISULTATO = "Risultato" RISULTATO = ModDivPotRad.DIVISIONE(NUM1, NUM2) # Chiama la funzione DIVISIONE() contenuta nel modulo [ModDivPotRad] # previo trasferimento del contenuto delle variabili-Lista NUM1 ed NUM2. # Il risultato viene messo nella variabile RISULTATO RISULTATO = f"{NUM1[0]} {NUM1[1]} = {NUM1[2]}x10^({NUM1[3]}) \n{NUM2[0]} {NUM2[1]} = {NUM2[2]}x10^({NUM2[3]})\n" + RISULTATO # RISULTATO = RISULTATO + f"\n{NUM3[0]} {NUM3[1]} = {NUM3[2]}x10^({NUM3[3]}) = {NUM3[2] * 10 ** NUM3[3]}" elif SCELTA == "5": print("Hai digitato la scelta 5, quindi verrà eseguita l'elevazione a potenza fra 2 numeri.") NUM1, NUM2 = NUMERI(SCELTA) # Chiama la funzione NUMERI() previo trasferimento del contenuto della variabile SCELTA # Il risultato viene messo nelle variabili-Lista NUM1 e NUM2 NUM3 = ModDivPotRad.POTENZA(NUM1, NUM2) # Chiama la funzione POTENZA() contenuta nel modulo [ModDivPotRad] # previo trasferimento del contenuto delle variabili-Lista NUM1 ed NUM2. # Il risultato viene messo nella variabile-Lista NUM3 RISULTATO = f"{NUM1[1]}^({NUM2[1]}) = {NUM3[1]}\n{NUM1[0]} {NUM1[1]}; " RISULTATO = RISULTATO + f"{NUM2[0]} {NUM2[1]}; " RISULTATO = RISULTATO + f"{NUM3[0]} {NUM3[1]}" elif SCELTA == "6": print("Hai digitato la scelta 6, quindi verrà eseguita la radice fra 2 numeri.") NUM1, NUM2 = NUMERI(SCELTA) # Chiama la funzione NUMERI() previo trasferimento del contenuto della variabile SCELTA # Il risultato viene messo nelle variabili-Lista NUM1 e NUM2 NUM3 = ModDivPotRad.RADICE(NUM1, NUM2) # Chiama la funzione RADICE() contenuta nel modulo [ModDivPotRad] # previo trasferimento del contenuto delle variabili-Lista NUM1 ed NUM2. # Il risultato viene messo nella variabile-Lista NUM3 RISULTATO = f"{NUM1[0]} {NUM1[1]}; " RISULTATO = RISULTATO + f"{NUM2[0]} {NUM2[1]}; " RISULTATO = RISULTATO + f"{NUM3[0]} {NUM3[1]}" elif SCELTA == "7": print("Hai digitato la scelta 7, quindi comparirà un messaggio che comunica che la funzione è in costruzione.") RISULTATO = LAVORI_IN_CORSO(SCELTA) # Lancia la funzione [LAVORI_IN_CORSO] else: print("La scelta " + SCELTA + " non è una scelta valida") continue # Ricomincia il ciclo 'while' # Fine del ciclo 'if', 'elif', 'else' print(f"\n{RISULTATO}\n") input("Per poter proseguire, premere il tasto [Invio]") # Fine del ciclo 'while' #
03) Calcolatrice – Modulo contenente le funzioni che si occupano di acquisire i dati da elaborare
# Inizio modulo da salvare col nome [ModACQUISIZIONE.py] nella cartella in cui si trova il modulo principale [CalcolatriceMain.py] def ACQUISIZIONE(X): # Inizio definizione funzione ACQUISIZIONE() try: # Inizio istruzioni soggette a gestione errore XA = input(X) # Acquisisce il numero e lo mette in una variabile stringa XN = float(XA) # Mette il numero in una variabile a virgola mobile if XN == int(XN): # Se le cifre dopo la virgola sono degli zeri, esegue la riga seguente XA = str(int(XN)) # Mette nella variabile stringa XA il numero acquisito, privo di cifre dopo la virgola except ValueError: # Inizio istruzioni da eseguire in caso di errore 'ValueError' print("ERRORE!!! Occorre inserire esclusivamente numeri, e con la notazione anglosassone (la parte intera è separata dalla parte decimale mediante il punto '.').") XA = ACQUISIZIONE(X) # Chiama la funzione ACQUISIZIONE() previo trasferimento del contenuto della variabile X. return(XA) # Restituisce il valore contenuto nella variabile stringa XA def CONVERTE(NUM_STRINGA): # Inizio definizione funzione CONVERTE() if float(NUM_STRINGA) == 0: # Se il numero da convertire contiene il numero 0, esegue la riga seguente return(0, 0) # La funzione CONVERTE termina qui, restituendo i valori 0 e 0. LUNG_NUM = len(NUM_STRINGA) # Trova la lunghezza del numero PUNTO = NUM_STRINGA.count(".") # Mette nella variabile PUNTO il numero di caratteri "." contenuti nella variabile NUM_STRINGA if PUNTO == 0: # Se il numero inserito è un numero intero, esegue le 2 righe seguenti GRANDEZZA = 0 # Calcola "Ordine di GRANDEZZA" quando il numero SIGNIFICATIVO è un numero intero SIGNIFICATIVO = int(NUM_STRINGA) # Trova il corrispondente "Numero SIGNIFICATIVO" intero. while float(SIGNIFICATIVO / 10) == int(SIGNIFICATIVO / 10): # Finchè la condizione è verificata, esegue le righe seguenti SIGNIFICATIVO = int(SIGNIFICATIVO / 10) # Elimina lo zero finale dal numero SIGNIFICATIVO GRANDEZZA += 1 # La variabile GRANDEZZA è incrementata di 1 # Fine del ciclo While else: # Se il numero inserito NON è un numero intero, esegue le 3 righe seguenti POS_PUNTO = NUM_STRINGA.index(".") # Trova la posizione del punto decimale GRANDEZZA = -(LUNG_NUM - POS_PUNTO - 1) # Calcola "Ordine di GRANDEZZA" quando il numero SIGNIFICATIVO diventa un numero intero. SIGNIFICATIVO = int(NUM_STRINGA.replace(".", "")) # Trova il corrispondente "Numero SIGNIFICATIVO" intero. return(SIGNIFICATIVO, GRANDEZZA) # Restituisce il numero SIGNIFICATIVO ed il numero di GRANDEZZA della variabile a virgola mobile iniziale
04) Calcolatrice – Modulo contenente le funzioni che si occupano di Somma + Sottrazione + Moltiplicazione
# Inizio modulo da salvare col nome [ModSomSotMolt.py] nella cartella in cui si trova il modulo principale [CalcolatriceMain.py] def SOMMA(ADD1, ADD2): # Inizio definizione funzione SOMMA() SUM = ["Somma: ", "0.0", 0, 0] # Definisce la variabile-Lista SUM contenente ["Descrizione", "num_reale", num_significativo, num_grandezza] while ADD1[3] > ADD2[3]: # Finchè l'ordine di grandezza del primo addendo è maggiore dell'ordine di grandezza del secondo addendo, esegue le 2 righe seguenti ADD1[2] *= 10 # Decuplica il numero significativo del primo addendo ADD1[3] -= 1 # Riduce di un'unità l'ordine di grandezza del primo addendo while ADD2[3] > ADD1[3]: # Finchè l'ordine di grandezza del secondo addendo è maggiore dell'ordine di grandezza del primo addendo, esegue le 2 righe seguenti ADD2[2] *= 10 # Decuplica il numero significativo del secondo addendo ADD2[3] -= 1 # Riduce di un'unità l'ordine di grandezza del secondo addendo # Ora entrambi gli addendi hanno il medesimo ordine di grandezza SUM[1] = str(float(ADD1[1]) + float(ADD2[1])) # Calcola la somma dei 2 addendi SUM[2] = ADD1[2] + ADD2[2] # Calcola la somma dei numeri significativi dei due addendi SUM[3] = ADD1[3] # Definisce l'ordine di grandezza della somma dei 2 addendi return(SUM) # La funzione SOMMA termina qui, restituendo i dati contenuti nella variabile-Lista SUM def SOTTRAZIONE(MIN, SOT): # Inizio definizione funzione SOTTRAZIONE() DIFF = ["Differenza: ", "0.0", 0, 0] # Definisce la variabile-lista DIFF contenente "Descrizione", "num_reale", num_significativo, num_grandezza while MIN[3] > SOT[3]: # Esegue le 2righe seguenti finchè l'ordine di grandezza del minuendo è maggiore dell'ordine di grandezza del sottraendo MIN[2] *= 10 # Decuplica il numero significativo del minuendo MIN[3] -= 1 # Riduce di un'unità l'ordine di grandezza del minuendo while SOT[3] > MIN[3]: # Esegue le 2 righe seguenti finchè l'ordine di grandezza del sottraendo è maggiore dell'ordine di grandezza del minuendo SOT[2] *= 10 # Decuplica il numero significativo del sottraendo SOT[3] -= 1 # Riduce di un'unità l'ordine di grandezza del sottraendo # Ora MINUENDO e SOTTRAENDO hanno il medesimo ordine di grandezza DIFF[1] = str(float(MIN[1]) - float(SOT[1])) # Calcola la differenza fra minuendo e sottraendo DIFF[2] = MIN[2] - SOT[2] # Calcola la differenza fra numeri significativi di minuendo e sottraendo DIFF[3] = MIN[3] # Definisce l'ordine di grandezza della differenza dei 2 addendi return(DIFF) # La funzione SOTTRAZIONE termina qui, restituendo i dati contenuti nella variabile-Lista DIFF def MOLTIPLICAZIONE(MOLTIPLICANDO, MOLTIPLICATORE): # Inizio definizione funzione MOLTIPLICAZIONE() PRO = ["Prodotto: ", "0.0", 0, 0] # Definisce la variabile-Lista PRO contenente ["Descrizione", "num_reale", num_significativo, num_grandezza] PRO[1] = str(float(MOLTIPLICANDO[1]) * float(MOLTIPLICATORE[1])) # Calcola il prodotto dei 2 fattori PRO[2] = MOLTIPLICANDO[2] * MOLTIPLICATORE[2] # Calcola il prodotto dei numeri significativi dei due fattori PRO[3] = MOLTIPLICANDO[3] + MOLTIPLICATORE[3] # Definisce l'ordine di grandezza del prodotto dei 2 fattori return(PRO) # La funzione MOLTIPLICAZIONE termina qui, restituendo i dati contenuti nella variabile-Lista PRO
05) Calcolatrice – Modulo contenente le funzioni che si occupano della divisione + Elevazione a potenza + Radice.
# Inizio modulo da salvare col nome [ModDivPotRad.py] nella cartella in cui si trova il modulo principale [CalcolatriceMain.py] def DIVISIONE(DIVIDENDO, DIVISORE): # Inizio definizione funzione DIVISIONE() QUOTO = ["Quoto: ", "0.0", 0, 0] # Definisce la variabile-Lista QUOT contenente ["Descrizione", "num_reale", num_significativo, num_grandezza] QUOZ = ["Quoziente: ", "0.0", 0, 0] # Definisce la variabile-Lista QUOZ contenente ["Descrizione", "num_reale", num_significativo, num_grandezza] RESTO = ["Resto: ", "0.0", 0, 0] # Definisce la variabile-Lista RES contenente ["Descrizione", "num_reale", num_significativo, num_grandezza] try: # Inizio istruzioni soggette a gestione errore QUOZ[1] = str(float(DIVIDENDO[1]) // float(DIVISORE[1])) # Calcola il QUOZIENTE RESTO[1] = str(float(DIVIDENDO[1]) % float(DIVISORE[1])) # Calcola il RESTO QUOTO[1] = str(float(DIVIDENDO[1]) / float(DIVISORE[1])) # Calcola il QUOTO QUOTO[2] = DIVIDENDO[2] / DIVISORE[2] # Calcola il numero significativo del QUOTO QUOTO[3] = DIVIDENDO[3] - DIVISORE[3] # Calcola l'ordine di grandezza del QUOTO DIV1 = f"{QUOTO[0]} {QUOTO[1]} = {QUOTO[2]}x10^({QUOTO[3]})\n" DIV1 = DIV1 + "(Dividendo : Divisore) = Quoto = (Quoziente e Resto)\n" DIV1 = DIV1 + f"({DIVIDENDO[1]} : {DIVISORE[1]}) = {QUOTO[1]} = ({QUOZ[1]} e resto {RESTO[1]})" except ZeroDivisionError: # Inizio istruzioni da eseguire in caso di errore 'ZeroDivisionError' DIV1 = "Non è possibile dividere per zero." finally: # Inizio istruzioni che verranno eseguite indipendentemente dal fatto che ci sia stata una divisione per zero print("Fine della divisione!") return(DIV1) def POTENZA(BASE, EXP): # Inizio definizione funzione POTENZA() ??? VAL = ["Valore: ", "0.0", 0, 0] # Definisce la variabile-Lista VAL contenente ["Descrizione", "num_reale", num_significativo, num_grandezza] VALORE = float(BASE[1]) ** float(EXP[1]) # Calcola il valore della potenza VAL[1] = str(VALORE) # Vonverte la radice in una stringa, e la mette nella vatiabile-Lista VAL[1] return(VAL) # La funzione POTENZA termina qui, restituendo i dati contenuti nella variabile-Lista VAL def RADICE(RADICANDO, INDICE): # Inizio definizione funzione RADICE() RAD = ["Radice: ", "0.0", 0, 0] # Definisce la variabile-Lista RAD contenente ["Descrizione", "num_reale", num_significativo, num_grandezza] RADICE = float(RADICANDO[1]) ** (1/float(INDICE[1])) # Calcola la radice del RADICANDO RAD[1] = str(RADICE) # Vonverte la radice in una stringa, e la mette nella vatiabile-Lista RAD[1] return(RAD) # La funzione RADICE termina qui, restituendo i dati contenuti nella variabile-Lista RAD