[Python] Istruzioni ripetute ...

Marco Beri marcoberi a gmail.com
Dom 3 Maggio 2015 21:45:56 CEST


On May 3, 2015 9:21 PM, "Carpediem" <i.carpediem a tiscali.it> wrote:
>
> Un saluto a tutti. Grazie al vostro aiuto, ho già risolto più di una
volta alcuni miei dubbi. Ne approfitto ancora sperando nel medesimo
positivo riultato.
> Ho scritto un programmino per esercitarmi sulle notizioni acquisite.
> Nel cercare una soluzione per evitare di ritrovarmi con un messaggio di
errore nel caso in cui in input si immettesse un valore carattere invece di
un numero, ho trovato come soluzione l'utilizzo di try.
> Tutto ok perchè l'istruzione risponde a quanto da me voluto. Il problema,
è che mi ritrovo con le stesse righe di istruzioni ripetute diverse volte
(per giorni, ore, minuti, secondi, decimi e centesimi di secondo) il che
rende il programma seppur funzionante, sicuramente scritto male.
> Ho provato a creare una funzione ma credo di non aver capito molto bene
come crearne una dato che, in questo caso, non ci sono riuscito avendo
fallito ogni mio tentativo.
> Qui a seguire, vi riporto quanto ho scritto (per i casi di giorni e ore)
ma le stesse righe di istruzioni si ripetono di volta in volta fino a
giungere ai centesimi di secondo e la cosa mi sembra ridicola.
> Avete modo di farmi vedere come dovrebbe essere scritta una funzione per
adattarla a questo caso? Magari è la volta buona che mi rendo conto come ci
si può riuscire.
> Seguono istruzioni scritte per i primi due casi previsti (giorni e ore).
> Grazie a tutti.
>
>
> while True:
>     try:
>         giorni = eval(input("Inserisci il numero di giorni impiegati per
coprire l'intero percorso "))
>         break
>     except NameError:
>         print()
>         print("Devi inserire un valore numerico")
>         print()
> print()
> while True:
>     try:
>         ore = eval(input("Inserisci il numero delle ore impiegate per
coprire l'intero percorso "))
>         break
>     except NameError:
>         print()
>         print("Devi inserire un valore numerico")
>         print()
> print()

Per esempio puoi fare così:

def leggi_valore(msg):
    while True:
        try:
            valore = eval(input("Inserisci il numero di " + msg +"
impiegati per coprire l'intero percorso "))
            break
        except NameError:
            print()
            print("Devi inserire un valore numerico")
            print()
    print()
    return valore

giorni = leggi_valore("giorni")
ore = leggi_valore("ore")

Ecc.
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20150503/8b903e17/attachment.html>


Maggiori informazioni sulla lista Python