Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2008
    Messaggi
    59

    [Python] (e logica): gestire gli accenti

    Ciao ragazzi,
    dopo anni che avevo accantonato la programmazione, mi sono approcciato a Python, quindi devo rispolverare un po' la logica ed imparare il linguaggio. Per fare pratica su IF e liste in Python, mi sono inventato il seguente esercizio: l'utente scrive una parola, il programma valuta se è un giorno della settimana o meno e risponde di conseguenza.
    il codice è il seguente
    codice:
    giorni = ['lunedì','martedì','mercoledì','giovedì','venerdì','sabato','domenica']
    inputUtente =input( "Scrivere un giorno della settimana:")
    inputUtente = inputUtente.lower()
    if inputUtente =="lunedi":
        inputUtente = "lunedì"
    elif inputUtente =="martedi":
        inputUtente = "martedì"
    elif inputUtente =="mercoledi":
        inputUtente ="mercoledì"
    elif inputUtente =="giovedi":
        inputUtente =="giovedì"
    elif inputUtente == "venerdi":
        inputUtente = "venerdì"
    
    
    if inputUtente in giorni:
        print(f"{inputUtente.title()} è un giorno della settimana")
    else:
        print(f"{inputUtente.title()} NON è un giorno della settimana")
    Come vedete, mi sono posto 2 problemi:
    1. l'input dell'utente è sempre convertito in minuscole per essere confrontato con la lista
    2. Controllando su internet, la grammatica vuole che i giorni dal lunedì al venerdì si scrivano con la lettera accentata, ma l'utente potrebbe anche essere sgrammaticato e scriverlo senza accenti

    Magari è un argomento troppo avanzato per un neofita, ma mi chiedevo come potrebbe essere gestito il secondo punto. A livello di logica, dovrei sovrascrivere la stringa con una cinquina di if (se mi scrivi lunedi, il programma lo sostituisce con lunedì): esiste una soluzione "da neofita" più sbrigativa?

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2014
    Messaggi
    539
    ti aiuta certo notare che tutti i giorni da lun a ven terminano con i accentata ....

  3. #3
    Moderatore di Windows e software L'avatar di URANIO
    Registrato dal
    Dec 1999
    residenza
    Casalpusterlengo (LO)
    Messaggi
    1,290
    Direttamente da CHapGpt (mai scritto codice in phyton)
    codice:
    import unicodedata
    def è_giorno_della_settimana(nome_giorno):
        giorni_settimana = [
            "lunedì", "martedì", "mercoledì", "giovedì", "venerdì", "sabato", "domenica"
        ]
        # Normalizza la stringa rimuovendo gli accenti e rendendola minuscola
        def normalizza(testo):
            testo = testo.lower()
            return ''.join(
                c for c in unicodedata.normalize('NFD', testo)
                if unicodedata.category(c) != 'Mn'
            )
        nome_normalizzato = normalizza(nome_giorno)
        giorni_normalizzati = [normalizza(g) for g in giorni_settimana]
        return nome_normalizzato in giorni_normalizzati

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Io userei il suggerimento di marino51 e lo applicherei in modo furbo:

    codice:
    ...
    if inputUtente.endswith("i"):
        normalizzata = inputUtente[:-1] + "ì"
    else:
        normalizzata = inputUtente
    
    if normalizzata in giorni:
        print(f"{inputUtente.title()} è un giorno della settimana")
    else:
        print(f"{inputUtente.title()} NON è un giorno della settimana")

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.