021 Python 3 – Gestione trascorrere del tempo
021-Python 3 – Gestione trascorrere del tempo
01) Conoscere data ed ora.
Per conoscere data ed ora, occorre utilizzare dei metodi contenuti nel modulo [time], quindi occorre prima importare il modulo [time], poi lanciare i metodi più opportuni per ottenere il risultato voluto. Per esempio:
>>> import time # Importa il modulo [time] >>> SECONDI = time.time() # Viene lanciato il metodo [time] del modulo [time] per mettere nella variabile SECONDI data ed ora, in secondi >>> DATA_ORA = time.ctime(SECONDI) # Viene lanciato il metodo [ctime] del modulo [time] per convertire il contenuto della variabile SECONDI in data ed ora, e metterlo nella variabile DATA_ORA >>> print("Data ed ora in secondi: ",SECONDI,"; data ed ora in inglese:",DATA_ORA) # Stampa il contenuto delle variabili SECONDI e DATA_ORA Data ed ora in secondi: 1679414995.1134164 ; data ed ora in inglese: Tue Mar 21 17:09:55 2023 >>> time.localtime(SECONDI) # Viene lanciato il metodo [localtime] del modulo [time] per convertire il contenuto della variabile SECONDI nei singoli elementi temporali (anno, mese, giorno, ore, minuti, secondi, giorno della settimana, giorno dell’anno, ora legale (0=no, 1=si). time.struct_time(tm_year=2023, tm_mon=3, tm_mday=21, tm_hour=17, tm_min=9, tm_sec=55, tm_wday=1, tm_yday=80, tm_isdst=0) >>> TEMPO = time.localtime(SECONDI) Converte la variabile SECONDI nella tupla TEMPO >>> print(f"Data ed ora in inglese: {DATA_ORA}; dall'inizio dell'anno sono passati {TEMPO[7]} giorni.") Data ed ora in inglese: Tue Mar 21 17:09:55 2023; dall'inizio dell'anno sono passati 80 giorni. >>>
02) Generare un calendario.
Il modulo [calendar] consente di visualizzare calendari. Per esempio: per visualizzare la pagina del calendario relativa ad Agosto 2020, occorre digitare
>>> import calendar # Importa il modulo [calendar] >>> print(calendar.month(2020, 8)) # Mostra la pagina del calendario relativa a Agosto 2020 August 2020 Mo Tu We Th Fr Sa Su 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 >>>
mentre, per visualizzare il calendario relativo al mese corrente dell’anno corrente, oppure al mese corrente dell’anno prossimo, dovremmo digitare le istruzioni:
>>> import calendar, time # Importa i moduli [calendar] e [time] >>> TEMPO = time.localtime(time.time()) # Crea una tupla contenente la data odierna >>> print(calendar.month(TEMPO[0], TEMPO[1])) # Visualizza la pagina del calendario Anno e Mese correnti March 2023 Mo Tu We Th Fr Sa Su 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 >>> print(calendar.month(TEMPO[0]+1, TEMPO[1])) # Visualizza la pagina del calendario Anno prossimo e Mese corrente March 2024 Mo Tu We Th Fr Sa Su 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 >>>
e, per visualizzare tutto il calendario relativo ad Agosto 2020, occorre digitare
>>> import calendar # # Importa il modulo [calendar] >>> print(calendar.prcal(2020)) # Mostra le pagine del calendario Anno 2020 2020 January February March Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su 1 2 3 4 5 1 2 1 6 7 8 9 10 11 12 3 4 5 6 7 8 9 2 3 4 5 6 7 8 13 14 15 16 17 18 19 10 11 12 13 14 15 16 9 10 11 12 13 14 15 20 21 22 23 24 25 26 17 18 19 20 21 22 23 16 17 18 19 20 21 22 27 28 29 30 31 24 25 26 27 28 29 23 24 25 26 27 28 29 30 31 April May June Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su 1 2 3 4 5 1 2 3 1 2 3 4 5 6 7 6 7 8 9 10 11 12 4 5 6 7 8 9 10 8 9 10 11 12 13 14 13 14 15 16 17 18 19 11 12 13 14 15 16 17 15 16 17 18 19 20 21 20 21 22 23 24 25 26 18 19 20 21 22 23 24 22 23 24 25 26 27 28 27 28 29 30 25 26 27 28 29 30 31 29 30 July August September Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su 1 2 3 4 5 1 2 1 2 3 4 5 6 6 7 8 9 10 11 12 3 4 5 6 7 8 9 7 8 9 10 11 12 13 13 14 15 16 17 18 19 10 11 12 13 14 15 16 14 15 16 17 18 19 20 20 21 22 23 24 25 26 17 18 19 20 21 22 23 21 22 23 24 25 26 27 27 28 29 30 31 24 25 26 27 28 29 30 28 29 30 31 October November December Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su 1 2 3 4 1 1 2 3 4 5 6 5 6 7 8 9 10 11 2 3 4 5 6 7 8 7 8 9 10 11 12 13 12 13 14 15 16 17 18 9 10 11 12 13 14 15 14 15 16 17 18 19 20 19 20 21 22 23 24 25 16 17 18 19 20 21 22 21 22 23 24 25 26 27 26 27 28 29 30 31 23 24 25 26 27 28 29 28 29 30 31 30 None >>>
03) Misurare i tempi di esecuzione di una sequenza di comandi.
Il metodo [time] può essere utilizzato come componente di un blocco di istruzioni avente la funzione di calcolare il tempo utilizzato dal computer per eseguire determinate righe di istruzione. Per esempio:
# # Misurare il tempo necessario per eseguire un blocco di istruzioni. import time # Importa il modulo [time] def istruzioni(FRA,RIP): # Intestazione funzione "istruzioni" con 2 parametri VIA = time.time() # Viene lanciato il metodo [time] del modulo [time] per mettere nella variabile VIA data ed ora, in secondi for T in range(RIP): # inizio ciclo print(f"{T + 1}) '{FRA}'") # Scrive la frase fa ripetere ALT = time.time() # Viene lanciato il metodo [time] del modulo [time] per mettere nella variabile ALT data ed ora, in secondi return(VIA, ALT) FRASE = input("Scrivere la frase che si intende ripetere. ") # Chiede la digitazione di una frase RIPETI = int(input("Scrivere il numero di ripetizioni. ")) # Chiedela digitazione di un numero intero INIZIO, FINE = istruzioni(FRASE, RIPETI) # Chiama la funzione [istruzioni] passando 2 parametri; attende 2 parametri print(f"Questo computer ha impiegato {FINE - INIZIO} secondi \n per scrivere {RIPETI} volte la frase \n '{FRASE}'.") #
04) Generare ritardi.
Il modulo [time] contiene anche il metodo [sleep], utilizzabile per far trascorrere un certo numero di secondi prima di eseguire l’istruzione seguente, generando così un ritardo. Per esempio:
# # Generare un ritardo. import time # Importa il modulo TIME def messaggio_cadenzato(RIP,SEC): # Intestazione funzione "messaggio_cadenzato" con 2 parametri print("Compariranno",RIP,"messaggi distanziati di",SEC,"secondi") for T in range(RIP): # inizio ciclo time.sleep(SEC) # Il metodo [sleep] del modulo [time] genera un ritardo di SEC secondi print(f"Messaggio n.{T+1}.") # Stampa un messaggio messaggio_cadenzato(5,2) # Chiama la funzione [messaggio_cadenzato] passando 2 parametri #