Richiesta info Python

di il
7 risposte

Richiesta info Python

Buongiorno,

mio figlio iscritto al primo anno di ingegneria informatica ha avuto problemi a superare l'esame di programmazione Python in particolare sulle espressioni regolari.

Ho provato ad aiutarlo con le mie conoscenze di vecchio ingegnere elettronico ma con scarsi risultati (ai miei tempi si usava fortran 77 e Pascal).

Volevo quindi chiedere gentilmente se c'è un libro da acquistare o qualche cosa in rete su cui si possono fare esercizi di allenamento.

I problemi che hanno dato all'esame sono tipo questo (solo per farvi capire il livello di difficoltà, siamo riusciti a farlo ma con difficoltà).

Grazie in anticipo.

ESERCIZIO

Scrivere una funzione che riceve in ingresso il nome di un file di testo file e calcola quante ore (corrette e scorrette) sono presenti nel file.

Le ore sono scritte in questo formato:

  1. 1 o 2 cifre
  2. Il carattere separatore “:” oppure “.”
  3. 1 o 2 cifre
  4. Lo stesso carattere separatore di cui sopra
  5. 1 o 2 cifre
  6. Il primo carattere separatore deve essere uguale al secondo carattere separatore, altrimenti non deve essere conteggiato

Un’ora è corretta se, oltre a rispettare il formato di sopra, corrisponde anche a un’ora corretta. Ad esempio, 1:1:01 è corretta, mentre 25:11:19 non è corretta (assumere che le ore possano andare da 0 a 24 inclusi, mentre minuti e secondi da 0 a 59). La funzione deve restituire due numeri interi, cioè il numero di ore che rispettano il formato di sopra ed il numero di ore che rispettano il formato di sopra ma non sono corrette.

Ad esempio, se il file contiene:

fin dalle 12:00:00 mi sono attivato, poi dalle 25.3.5 ho lavorato, fino alle 11:13:19.

Alle 12:12.01 ho deciso che dalle 1:1:11 ale 31:9:13 mi riposerò.

Allora la funzione deve restituire (3,2) poichè 12:00:00, 11:13:19 e 1:1:11 sono ore corrette, 25.3.5 e 31:9:13 sono ore scorrette, mentre 12:12.01 non è un’ora (usa 2 separatori diversi, non ammesso). Usare le espressioni regolari

7 Risposte

  • Re: Richiesta info Python

    Esistono tanti libri per python ma le “espressioni regolari” sono sempre una parte del libro e degli esercizi.

    Prova a fare ricerche online e vedi di seguire la documentazione che trovi … si tratta di fare tanti tanti esercizi

    Ad esempio, comincia a leggere 

    https://www.python.it/doc/howto/Regex/regex-it/regex-it.html

    e documentazione generale sulle RegExp

    https://it.wikipedia.org/wiki/Espressione_regolare#:~:text=Un'espressione%20regolare%20definisce%20una,o%20meno%20un%20certo%20pattern.

    e simili

    Sono comunque difficoltà da “primo anno”.

  • Re: Richiesta info Python

    Ok grazie mille; proprio perchè ne ho visti tantissimi di libri, magari tu ne hai qualcuno da suggerire che riguardano gli esercizi…..

    Un saluto 

  • Re: Richiesta info Python

    L'esercizio è carino e aiuta a pensare come strutturare bene il codice, usare RegEx ci sta che lo abbia trovato difficile all'inizio, ho provato a scriverlo se ti interessa, fammi sapere se è in linea con l'esercizio:

    import re
    
    def conta_ore(nome_file):
        # Espressione per identificare le ore con lo stesso separatore
        pattern = r'\b(\d{1,2})([:.])(\d{1,2})\2(\d{1,2})\b'
        
        ore_corrette = 0
        ore_scorrette = 0
    
        with open(nome_file, 'r') as file:
            contenuto = file.read()
    
            # Trova tutte le ore nel testo
            ore_trovate = re.findall(pattern, contenuto)
    
            for ora in ore_trovate:
                ore, minuti, secondi = int(ora[0]), int(ora[2]), int(ora[3])
    
                # Controlla se l'ora è corretta
                if 0 <= ore <= 24 and 0 <= minuti < 60 and 0 <= secondi < 60:
                    ore_corrette += 1
                else:
                    ore_scorrette += 1
    
        return ore_corrette, ore_scorrette
  • Re: Richiesta info Python

    Si si grazie, ero giunto a qualcosa di simile anche funzionante. Volevo però sapere se posso trovare un libro con esercizi svolti di questo tipo per far allenare bene mio figlio…

    Un saluto

  • Re: Richiesta info Python

    26/01/2024 - gdisimone ha scritto:


    Si si grazie, ero giunto a qualcosa di simile anche funzionante. Volevo però sapere se posso trovare un libro con esercizi svolti di questo tipo per far allenare bene mio figlio…

    Un saluto

    Se capisce bene l'inglese c'è Python Crash Course di Eric Matthes che ho trovato fatto veramente bene, altri libri oltre a questo non mi sento di consigliarteli o comunque qualcosa di specifico sulle espressioni regolari, non saprei inoltre se c'è qualcosa di valido in italiano.

  • Re: Richiesta info Python

    26/01/2024 - systemred32 ha scritto:


    26/01/2024 - gdisimone ha scritto:


    Si si grazie, ero giunto a qualcosa di simile anche funzionante. Volevo però sapere se posso trovare un libro con esercizi svolti di questo tipo per far allenare bene mio figlio…

    Un saluto

    Se capisce bene l'inglese c'è Python Crash Course di Eric Matthes che ho trovato fatto veramente bene, altri libri oltre a questo non mi sento di consigliarteli o comunque qualcosa di specifico sulle espressioni regolari, non saprei inoltre se c'è qualcosa di valido in italiano.

    graaaazie

  • Re: Richiesta info Python

    Sulle RegExp ci sono i libri della O'Reilly.

    https://www.oreilly.com/library/view/regular-expressions-cookbook/9780596802837/

    https://www.oreilly.com/library/view/mastering-regular-expressions/0596528124/ 

    https://terrorgum.com/tfox/books/masteringregularexpressions.pdf

Devi accedere o registrarti per scrivere nel forum
7 risposte