Forum
>>
Principianti
>>
Le Funzioni in Python: definizione, chiamata, esecuzione, come posso andare in uno specifica punto del programma dopo vaver eseguito una funzione ?
Pagina: 1
Esegui il login per scrivere una risposta.
Pagina: 1
Scritto da lrosselli62 |
2023-08-22 14:16:18 - Le Funzioni in Python: definizione, chiamata, esecuzione, come posso andare in uno specifica punto del programma dopo vaver eseguito una funzione ?
|
Salve,
sono un elettronico votato alla programmazione e sono un neo iscritto a questo forum. Ho iniziato a programmare in Python e fatto alcuni programmini che "manipolano" file di testo e poi li stampano. Mi è chiaro tutto ciò che riguarda la Funzione cioè definizione, chiamata, esecuzione ecc.. e quindi mi è chiaro che una funzione , quando viene eseguita, memorizzi in punto del programma in modo che dopo l'esecuzione del codice ritorni a quel punto. Invece, mi trovo a risolvere la seguente questione: ho una funzione (ricerca su file) che se trova il parametro impostato, esegue il codice ecc... ma se non trova il parametro impostato esce e chiama un'altra funzione che esegue il suo codice e NON DOVREBBE ritornare alla funzione precedente MA andare in un punto specifico del programma. Come posso risolvere il problema ? LR |
|
Scritto da nuzzopippo |
2023-08-22 16:38:02 - Re: Le Funzioni in Python: definizione, chiamata, esecuzione, come posso andare in uno specifica punto del programma dopo vaver eseguito una funzione ?
|
Puoi risolvere il Tuo problema strutturando adeguatamente il Tuo codice, p.e. utilizzando dei cicli decisionali, oppure inserendo in cicli while
I GOTO ed i GOSUB non mi risulta esistano in python e, comunque, sarebbero indizio di pessimo codice, riguardo alle funzioni python esse restituiscono sempre e comunque un valore reperibile nel punto di chiamata ("None" in assenza di un return valorizzato), funziona così e non si può fare altrimenti. In ogni caso, se Ti occorrono suggerimenti, esplicita chiaramente e magari con brevi esempi di codice ciò che vorresti fare che si vede. Ciao Fatti non foste a viver come bruti... |
|
Scritto da Gabbo |
2023-08-22 16:54:06 - Re: Le Funzioni in Python: definizione, chiamata, esecuzione, come posso andare in uno specifica punto del programma dopo vaver eseguito una funzione ?
|
Io di solito creo una variabile di controllo.
creo un controllo della variabile per saltare le righe di programma che non voglio che vengano eseguite in una determinata condizione. esempio: 1 variabile1 = 0 # variabile di controllo 2 3 condizione 1 ; 4 variabile1= 0 5 6 7 condizione 2; 8 variabile1= 1 9 if variabile1==0; 10 # esegui il programma regolarmente 11 - righe di programma 12 - righe di programma 13 - righe di programma 14 15 # alla fine ( if ) 16 # rimetti la variavile nella condizione iniziale 17 variabile1 = 0 18 - righe di programma non saltate 19 - righe di programma non saltate in questo modo quando soddisfo la condizione 2 salta dalla riga 9 alla 15 Spero di essere stato chiaro.. a volte sono contorto nelle spiegazioni |
|
Scritto da lrosselli62 |
2023-08-24 10:43:58 - Re: Le Funzioni in Python: definizione, chiamata, esecuzione, come posso andare in uno specifica punto del programma dopo vaver eseguito una funzione ?
|
Salve,
ringrazio Gabbo e Nuzzopippo per le risposte e i suggerimenti. inserisco un pezzo di codice del mio programmino che, sinteticamente, dovrebbe: 1) da input di un file report es. rep1 2) leggere le righe e trovare delle stringhe 3) modificare le suddette stringhe 4) stampare (veramente le scrive in un altro file) le suddette stringhe. Il mio programmino funziona, soltanto che quando no trova la stringa , chiede l'impu di un altro file report, ma invece di ri-iniziare la ricerca delle stringhe, salta la ricerca delle strighe trovate in precedenza. La mia richiesta è lecita: se da un file prendo delle stringhe, le modifico e le scrivo in un altro file, se non trovo una stringa, devo prendere un alto file e ricercare tutte le stringhe. In qualche modo ho risolto ma inserisco una parte del codice a uso "didattico" per i principianti come me. Una parte del codice del mio programmino è la seguente: path = "C:\\Python\\" def Start (): global FileTracemark FileTracemark = input('Inserisci il nome_file: ') def Tr_fail(): print("Parametro Non trovato") Start() def Tr_read(a, x, y): ''' Funzione che legge file report (riga x riga), cerca il parametro a = stringa contenuta nella riga, x e y posizione inizio e fine della riga ''' f = open(path + FileTracemark, "r") riga = f.readline() while riga != "": # ciclo di wile per stampare tutte le righe del file report if riga.find(a) >= 0: # cerco se "riga" (a) es. contiene "ECU=" a = riga[x:y] # assegno alla variabile (a) es. ECU_SN il valore di parte della riga #print(a) # stampo riga (a) es. 033323220000236 (15 caratteri) return a # utilizzo la variabile (a) fuori dalla funzione break # se la ricerca (find) è True interrompe il ciclo di wile riga = f.readline() # leggo nuova riga else: f.close Tr_fail() f.close() Start() ECU_SN = Tr_read("ECU=", 4, 19) PCBA_SN =Tr_read("PCBA=", 5, 20) COD_PROD = Tr_read("CODICE_PROD=", 12, 25) PCBA_HW = Tr_read("PCBA_HW=", 8, 10) CODICE = Tr_read("CODICE_01=", 10, 16) OMOL = Tr_read("OMOL_01=", 8, 21) SW_1 = Tr_read("SW VERS1=", 9, 13) from datetime import datetime obj = datetime.now() # Estrazione della data corrente DayToYear = obj.strftime("%j%y") # Estrazione nr. giorni da inizio anno %j e anno 2 caratteri %y #WeekCode = obj.strftime("%W") # Estrazione nr. settimana da inizio anno ECU_SN_COD = 'T' + DayToYear + '0' + str(ECU_SN[8:15]) + '0' print(ECU_SN_COD) def str_comp(var, x, y): '''' Funzione che elabora la stringa (var) : Rimuove tutti gli 0 da sx -- Converte in esadecimale e trasforma in int -- Aggiunge tanti 0 a sx fino a quando la stringa diventa 8 caratteri -- x - y inizio e fine ''' var = str(var) var = var[x:y].lstrip('0') var = hex(int(var)) var = var[2:].zfill( #print(var) return var PCBA_SN_COD = str_comp(PCBA_SN, 8, 15) PCBA_SN_COD = PCBA_SN[6:8] + PCBA_SN[4:6] + PCBA_SN_COD + PCBA_HW + '0' print(PCBA_SN_COD) print(COD_PROD) print(SW_1) il file rep1, da dare come input è il seguente 1,0; ECU=033323220000236 PCBA=033223200000134 CODICE_PROD=ABC12345-1000 PCBA_HW=01 CODICE_01=00AB10 OMOL_01=01-01-23 1037 SW VERS1=0103 L'output sul terminal di VSC è il seguente PS C: "C:/Program Files/Python39/python.exe" c:/Python/Esempio.py Inserisci il nome_file: rep1 T23623000002360 202300000086010 ABC12345-1000 0103 |
Pagina: 1
Esegui il login per scrivere una risposta.