Forum
>>
Principianti
>>
Cicli
Pagina: 1 2 Avanti
Esegui il login per scrivere una risposta.
Scritto da Triestin |
2018-11-28 15:30:37 - Cicli
|
Ciao a tutti, problema niubbo (o per lo meno, non so come cercare una soluzione)
Sto eseguendo un esercizio banale sulla verifica dell'ultimo teorema di Fermat. Tutto a posto con valori inseriti a mano Mi stavo chiedendo come espandere la soluzione Vorrei passare alla funzione (per semplicità il teorema afferma che: a**n + b**n = c**n per valori di n non maggiori di 2) una serie di valori per a,b e c da 1 a 100. Non mi serve esportare in una tabella, mi basta l'output a video in singola colonna, ma non so come passare i valori nel modo che serve a me, quindi: a=1,b=0,c=0,n=0 a=1,b=1,c=0,n=0 a=1,b=1,c=1,n=0 a=1,b=1,c=1,n=1 a=2,b=0,c=0,n=0 a=2,b=1,c=0,n=0 . . in teoria, nella massa di "falso" che mi restituirà la funzione, dovrei trovare qualche "vero" Come posso risolvere? Il ciclo for mi ragiona su un solo parametro, il ciclo while idem E' ovvio che sono io che sbaglio ma non so come uscirne Grazie |
|
Scritto da Daniele aka Palmux |
2018-11-29 13:46:20 - Re: Cicli
|
Scusa, forse non ho capito bene il problema.
Meglio se posti il codice, perché da come lo esponi un semplice if su n risolve tutto. Fammi sapere. Cya |
|
Scritto da Triestin |
2018-11-29 13:59:32 - Re: Cicli
|
Il problema è che il codice non esiste, o almeno solo in parte
Nello specifico, questa porzione fa in parte quello che mi serve, ma il risultato non è quello sperato, nel senso che ottengo a = 1 fino a che b = 10 e c = 100, poi si ripete per a = 2 fino a che b = 11 e c = 100 e così via. Io invece ho bisogno di passare ad una funzione che verifichi il teorema scritto nel primo post verificando ogni possibile combinazione a=1,b=0,c=0 a=1,b=1,c=0 a=1,b=1,c=1 a=2,b=1,c=1 e così via. Una sorta di test su una combinazione di tre cifre fino a che non trovo quella corretta (è tutto accademico. Non cerco di svaligiare banche ) E' sicuramente un problema di uso del ciclo. Ho provato anche a creare delle funzioni che singolarmente eseguano un ciclo for per ogni operatore del teorema ma non cambia Ad usare il ciclo if su n ho pensato anch'io, ma mi servirà alla fine perchè il controllo va fatto solo per valori di n<=2 Grazie a = 0 b = 0 c = 0 for i in range(10): a = a + 1 for i in range(10): b = b + 1 for i in range(10): c = c + 1 print(a, b, c) --- Ultima modifica di Triestin in data 2018-11-29 14:18:35 --- |
|
Scritto da Daniele aka Palmux |
2018-11-29 14:18:21 - Re: Cicli
|
Fatti una funzione tipo:
def verifica_fermat(a, b, c, n): if n > 2 and (a**n + b**n == c**n): result = [...] else: result = [...] return result..dalla quale fatti dare un result come ti aggrada, coi dei valori, un True, un Forse, vedi tu insomma. A quel punto cicla allegramente tutto e non dovresti avere grossi problemi. Se guardi su Google, ci sono mooooooolti esempi da cui prendere spunto ad esempio questo e questo. Cya |
|
Scritto da Triestin |
2018-11-29 14:20:19 - Re: Cicli
|
Grazie.
Avevo visto su google, ma volevo la soddisfazione di uscirne da solo |
|
Scritto da Triestin |
2018-11-30 14:03:39 - Re: Cicli
|
E siamo ancora qui
ho scritto questo codice: a = 0 b = 0 c = 0 n = 2 def verifica_fermat(a, b, c, n): if n >= 2 and (a**n + b**n == c**n): print("Funziona") else: print("Non funziona") elenco_a = [] elenco_b = [] elenco_c = [] def confronto(a,b,c): for a in range(0,10): for b in range(0,10): for c in range(0,10): elenco_a.append(a) elenco_b.append(b) elenco_c.append(c) # print(elenco_a) # print(elenco_b) # print(elenco_c) confronto(0,0,0)Una domanda. Come passo alla funzione "confronto" gli elementi degli elenchi? Posso scrivere confronto(elenco_a0,elenco_a0,elenco_a0) ma mi passa ovviamente solo un parametro, mentre vorrei passarglieli tutti, uno alla volta Grazie |
|
Scritto da pypy pypy |
2018-11-30 18:05:03 - Re: Cicli
|
ciao Triestin,
ti volevo chiedere quale sia il risultato che vuoi ottenere? |
|
Scritto da Triestin |
2018-11-30 20:48:21 - Re: Cicli
|
L'idea è di passare una serie di numeri (da 1 a 100, per esempio), passarli alla funzione, farli analizzare ed avere come output solo quelli che soddisfano il teorema
|
|
Scritto da pypy pypy |
2018-11-30 23:16:22 - Re: Cicli
|
per lo sviluppo del teorema non ne ho idea
ma se l'intenzione e quella di passare tutti i valori dei 3 elenchi ti basta inserirli in un ciclo incrementando ogni volta la lista tipo: for x in range(len(elenco_a)): print(elenco_a[x], elenco_b[x], elenco_c[x])ma in questo modo non avrai il risultato che hai postato, per le "matrici" (se è quello che vuoi) la cosa è molto diversa. --- Ultima modifica di pypy in data 2018-12-01 09:38:38 --- |
|
Scritto da RicPol |
2018-12-01 15:24:33 - Re: Cicli
|
> L'idea è di passare una serie di numeri (da 1 a 100, per esempio),
> passarli alla funzione, farli analizzare > ed avere come output solo quelli che soddisfano il teorema E mi sembra una buona idea. La soluzione è 1) scrivere il tuo "teorema" sotto forma di una funzione che accetta un numero in ingresso e restituisce True (se il test passa per quel numero) o False 2) avere una lista di numeri da testare 3) con un ciclo for passare ciascun numero alla funzione-teorema, e immagazzinare quelli che passano in una nuova lista. Quindi, per esempio: >>> def minore_di_venti(x): # il "teorema" (testa se x e' minore di venti) if x<20: return True return False >>> numeri = list(range(50)) >>> numeri_buoni = [] >>> for numero in numeri: if minore_di_venti(numero): numeri_buoni.append(numero) https://pythoninwindows.blogspot.com/p/i-miei-libri.html : i miei libri
https://pythoninwindows.blogspot.com : il mio blog |
Pagina: 1 2 Avanti
Esegui il login per scrivere una risposta.