Volendo creare uno script in Python 3 per trovare tutti i quadrati perfetti che sono somma di quadrati perfetti
(Es. 3^2+4^2 = 25 = 5^2)
ho creato uno script col contenuto seguente
Codice: Seleziona tutto
# Python3 - Script per verificare se [somma di quadrati perfetti = quadrato perfetto]
# Calcola tutte le coppie di numeri naturali positivi
# compresi fra i due numeri naturali positivi dati
# per i quali la somma dei quadrati di ciascun numero naturale positivo
# è pari al quadrato di un terzo numero, anch'esso naturale e positivo.
#
#
# Per avviare questo script:
# 1) Salvarlo nella cartella di lavoro, con nome 000-sommaQuadrati.py (Estensioni alternative: .pyw .pyc .pyo .pyd )
# 2) Aprire un terminale nella cartella di lavoro
# 3) Impartire il comando: [python3 <000-sommaQuadrati.py>]
#
def DATI(X, Y): # Inizio definizione funzione DATI()
XX = int(input(X)) # Acquisisce il primo numero intero e lo mette in una variabile
YY = int(input(Y)) # Acquisisce il secondo numero intero e lo mette in una variabile
return(XX, YY) # Restituisce i valori contenuti nelle due variabili
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 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()
RADICE1 = RADICANDO ** (1/INDICE) # Calcola la radice del RADICANDO
return(RADICE1)
MENU = """Menù:
0) Chiudere questo script.
1) Somma di quadrati perfetti = Quadrato perfetto
"""
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, [Somma di quadrati perfetti = Quadrato perfetto].")
X1 = "Limite inferiore ? "; Y1 = "Limite superiore ? "
X02, Y02 = DATI(X1, Y1) # Chiama la funzione DATI() previo trasferimento del contenuto delle variabili X1 e Y1.
for X2 in range(X02, Y02, 1): # Inizio del ciclo che verrà ripetuto varie volte, da X02 a Y02 incrementando 1.
for Y2 in range(X02, Y02, 1): # Inizio del ciclo che verrà ripetuto varie volte, da X02 a Y02 incrementando 1.
X3 = POTENZA(X2, 2) # Chiama la funzione POTENZA() previo trasferimento del contenuto della variabile X2 e del numero 2.
Y3 = POTENZA(Y2, 2) # Chiama la funzione POTENZA() previo trasferimento del contenuto della variabile Y2 e del numero 2.
Z3 = SOMMA(X3, Y3) # Chiama la funzione SOMMA() previo trasferimento del contenuto delle variabili X3 e Y3.
Z2 = RADICE(Z3, 2) # Chiama la funzione RADICE() previo trasferimento del contenuto della variabile Z3 e del numero 2.
if print(Z2.is_integer()):
print(X2,"^2 +",Y2,"^2 =",Z3," =",Z2,"^2")
# Fine [if]
# Fine ciclo [for Y2]
# Fine ciclo [for X2]
else:
print("La scelta " + SCELTA + " non è una scelta valida")
continue # Ricomincia il ciclo 'while'
# Fine del ciclo 'if', 'elif', 'else'
input("Per poter proseguire, premere il tasto [Invio]")
# Fine del ciclo 'while'Codice: Seleziona tutto
$ python3 000-sommaQuadrati.py
Menù:
0) Chiudere questo script.
1) Somma di quadrati perfetti = Quadrato perfetto
Per scegliere, inserire il numero corrispondente. 1
Hai digitato la scelta 1, [Somma di quadrati perfetti = Quadrato perfetto].
Limite inferiore ? 1
Limite superiore ? 10
Traceback (most recent call last):
File "/mnt/Dati1/Guide/Guida-Python3/000-sommaQuadrati.py", line 49, in <module>
Z2 = RADICE(Z3, 2) # Chiama la funzione RADICE() previo trasferimento del contenuto della variabile Z3 e del numero 2.
^^^^^^^^^^^^^
File "/mnt/Dati1/Guide/Guida-Python3/000-sommaQuadrati.py", line 27, in RADICE
RADICE1 = RADICANDO ** (1/INDICE) # Calcola la radice del RADICANDO
~~~~~~~~~~^^~~~~~~~~~~~
TypeError: unsupported operand type(s) for ** or pow(): 'str' and 'float'
$Qualcuno può aiutarmi?
Ringrazio sin d'ora i partecipanti alla discussione.
