Forum
>>
Principianti
>>
[Risolto] Esercizio su Cicli While e For
Pagina: 1
Esegui il login per scrivere una risposta.
Pagina: 1
Scritto da kant80 |
2022-02-10 19:48:50 - [Risolto] Esercizio su Cicli While e For
|
Salve a tutti,
sono un principiante (ma moooolto principiante) su Python, per imparare questo linguaggio mi sto basando momentaneamente sul libro in pdf "Python per tutti - Esplorare dati con Python 3" (di Charles R. Severance) e sono arrivato al Capitolo 5 sui Cicli. Il mio problema nasce nell'Esercizio 1: Scrivi un programma che legga ripetutamente i numeri fino a quando l’utente non digiti “finito”. Una volta che viene digitato “finito”, dovrà essere visualizzato il totale, il conteggio e la media dei numeri. Se l’utente dovesse digitare qualcosa di diverso da un numero, occorrerà rilevare l’errore usando try e except, visualizzare un messaggio di errore e passare al numero successivo. Enter a number: 4 Enter a number: 5 Enter a number: bad data Invalid input Enter a number: 7 Enter a number: done 16 3 5.333333333333333 io ho compilato questa parte di programma per l'inserimento dei numeri: while True: number = input('Enter a number:') mylist = [] try: if number == float(number): continue except: if number == str(number) != 'done': print('Invalid data') if number == 'done': breaksiccome vorrei proseguire con il seguente listato:count = 0 for itervar in [3, 41, 12, 9, 74, 15]: count = count + 1 total = 0 for itervar in [3, 41, 12, 9, 74, 15]: total = total + itervar print(count, total, total/count)come posso aggiungere sistematicamente i valori che inserisco in mylist = [] e sostituirli in [3, 41, 12, 9, 74, 15]?Ringrazio anticipatamente per il vostro splendido aiuto --- Ultima modifica di kant80 in data 2022-02-13 18:25:06 --- |
|
Scritto da Daniele aka Palmux |
2022-02-11 17:52:38 - Re: Esercizio su Cicli While e For
|
Ciao caro, benvenuto.
Prima di risponderti sul tuo quesito, cominciamo col primo insegnamento. In Python la sintassi non è opzionale, ma è parte integrante del linguaggio. Quindi sistema il tuo codice con la corretta indentazione (c'è il tasto code, prima della tavolozza dei colori). Se ti viene meglio puoi usare anche risorse come Pastebin ed affini, posta poi il link per farcelo analizzare. A quel punto possiamo passare alle tue domande. Cya |
|
Scritto da kant80 |
2022-02-11 21:24:39 - Re: Esercizio su Cicli While e For
|
Ciao Daniele,
intanto ti ringrazio per la risposta e perdonami per il casino che ho combinato, ecco il codice "sistemato" (sperando nel modo giusto): while True: number = input('Enter a number:') mylist = [] try: if number == float(number): continue except: if number == str(number) != 'done': print('Invalid data') if number == 'done': break count = 0 for itervar in mylist: count = count + 1 total = 0 for itervar in mylist: total = total + itervar print(count, total, total/count) Sicuramente ci saranno parecchi (se non troppi) errori, ma a me manca come memorizzare i valori che inserisco in 'mylist' per poi conteggiarli e sommarli. Perdonatemi ancora per il mio errore da principiante e soprattutto perché continuerò ancora a farne, e vi pregherei di aiutarmi a migliorare. Un abbraccio ed un ringraziamento a tutti, a presto (spero) P.S.: per non sbagliare ho caricato anche il file.py |
|
Scritto da Daniele aka Palmux |
2022-02-12 00:59:32 - Re: Esercizio su Cicli While e For
|
Figurati, è un piacere.
Allora ci sono varie cose da sistemare (analizzo solo il tuo codice non come lo scriverei io): A. mylist = [] ti viene azzerata ad ogni passaggio, mettila prima del while. B. Accorpa un po', puoi ridurre i passaggi. Ad esempio: mylist = [] while True: val = input("Inserisci un numero: ") try: int(val) mylist.append(int(val)) except ValueError: try: float(val) mylist.append(float(val)) except ValueError: print("Non hai inserito un numero valido") C. Come hai visto non usare try... except in quel modo, ma in questo caso con un ValueError; D. Sto all'incirca seguendo il tuo script, ma non l'avrei fatto così prolisso, ci sono modi per semplificarlo (non voglio spaventarti); E. Per vedere il numero di record presenti nella tua lista, una len(mylist); F. Cosa hai contro sum() per sommare i valori della lista? Puoi mettere a posto il tuo script ora. Cya P.S. Non caricare file sul server, nel 2022 non serve farlo, esistono sistemi come quello che ti ho citato prima (Pastebin), che sono molto più comodi. |
|
Scritto da kant80 |
2022-02-12 16:07:49 - Re: Esercizio su Cicli While e For
|
Ciao Daniele,
quando sono tornato a casa ho subito sistemato il codice seguendo i tuoi suggerimenti ed alla fine ho scritto questo: mylist = [] while True: val = input("Inserisci un numero: ") try: int(val) mylist.append(int(val)) except ValueError: try: float(val) mylist.append(float(val)) except ValueError: if val == str(val) != 'fatto': print('Non hai inserito un numero valido') if val == 'fatto': break print('Fatto') print(len(mylist), sum(mylist), sum(mylist)/len(mylist)) Il risultato è quello che desideravo, grazie mille (conoscevo la funzione sum() e mi ero scordato l'esistenza di len()); vorrei chiederti solo un'ultima cosa, hai accennato al fatto che tu lo avresti scritto in modo più sintetico, come? Faccio questa domanda perché sono un principiante (mooooolto principiante ed autodidatta, come ti ho scritto sto seguendo quella guida di cui al primo post) quindi con le tue dritte sulle correzioni apportate al mio script e con i tuoi suggerimenti per scrivere in modo più stringato spero di imparare velocemente. Grazie mille di tutto, scusa il disturbo e soprattutto buon fine settimana. |
|
Scritto da Daniele aka Palmux |
2022-02-12 16:13:21 - Re: Esercizio su Cicli While e For
|
Ciao caro, ascolta un fesso e fidati di me, ora non vuoi saperlo.
Ti dico solo che si tratta in sostanza di usare costrutti che accorpano in una sola riga le varie istruzioni. Meglio che non precorriamo i tempi, devi prima arrivarci a studiare cose come le list comprehensions e funzioni anonime (lambda) ad esempio. Nessun disturbo, questa risorsa è qui per questo. Cya e buono studio. |
|
Scritto da kant80 |
2022-02-13 18:24:33 - Re: Esercizio su Cicli While e For
|
Ok, allora mi tocca aspettare di imparare e di dovervi ancora disturbare.
A presto e buona domenica, ma soprattutto grazie di tutto |
Pagina: 1
Esegui il login per scrivere una risposta.