Topic: Esercizio alfabeto  (Letto 250 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline StudentePython3

  • python unicellularis
  • *
  • Post: 3
  • Punti reputazione: 0
    • Mostra profilo
Esercizio alfabeto
« il: Aprile 02, 2020, 19:36 »
Sera, sto studiando python le basi, mi aiutate con questo quesito per favore?:
Scrivi una funzione a cui viene passato un carattere come parametro, e che ci dice se il carattere è o meno una vocale.

Io ho sritto:
def alfabeto_italiano():
    digitazione=input('Inserisci il carattere scelto: ')

    vocali=('a,e,i,o,u')
    consonanti=('b,c,d,f,g,h,l,m,n,p,q,r,s,t,v,z')
    if digitazione in vocali:
        print('Il carattere scelto è una vocale')
       
   
    elif digitazione in consonanti:
        print('Il carattere scelto è una consonante')
       
    else:
        print('Il carattere digitato non è presente nell\'alfabeto italiano')

che sbaglio e come correggo il mio codice?

Offline nuzzopippo

  • python neanderthalensis
  • ****
  • Post: 294
  • Punti reputazione: 0
    • Mostra profilo
Re:Esercizio alfabeto
« Risposta #1 il: Aprile 03, 2020, 05:43 »
Ciao @StudentePython3

Leggendo il Tuo codice (usa il pulsante "pythoncode" la prossima volta) vedo che, in primo luogo, non hai le idee ben chiare sulle funzioni, leggi e digerisci questa pagina introduttiva dell'argomento per prima cosa.

Il problema posto richiede la definizione di una funzione con passaggio di un parametro costituito da un singolo carattere da valutare : ciò sta a significare che la funzione NON deve acquisire il carattere al suo interno ma deve riceverlo dall'esterno, quindi elaborarlo e fare qualcosa ... questo qualcosa è dire se il carattere è una vocale o meno, cosa possa significare "dirlo" è.un qualcosa da valutare.
Data che la definizione del "carattere" avviene all'esterno della funzione è più che plausibile che al processo chiamante la funzione stessa possa voler ottenere la valutazione per poterla poi elaborare a modo suo, tale valutazione potrebbe essere definita in modo vario ma diciamo che per il problema posto una stringa indicante "Vocale" o altro va bene, quindi la funzione non stamperà ma restituirà tale valore con l'istruzione "return qualcosa"..

Ora, soprassediamo un attimo alle funzioni e vediamo un po' la Tua istruzione "vocali=('a,e,i,o,u')", suppongo Tu volessi definire una tupla costituita dalle 5 vocali ma come hai fatto hai costruito una stringa di nove lettere : le cinque vocali più quattro virgole
>>> vocali = ('a,e,i,o,u')
>>> type(vocali)
<class 'str'>
>>> len(vocali)
9
>>> vocali
'a,e,i,o,u'
>>> for elem in vocali:
print(elem)


a
,
e
,
i
,
o
,
u


Nel caso Tu volessi in effetti definire una tupla, avresti dovuto definire ogni singolo elemento vocale come una stringa a se stante, p.e. come in uno dei modi sotto

>>> vocali = ('a', 'e', 'i', 'o', 'u')
>>> vocali2 = 'a', 'e', 'i', 'o', 'u'
>>> type(vocali)
<class 'tuple'>
>>> type(vocali2)
<class 'tuple'>
>>> vocali
('a', 'e', 'i', 'o', 'u')
>>> vocali2
('a', 'e', 'i', 'o', 'u')

Vi sono anche altri metodi, ma tralasciamo ...

Le tuple sono comode perché permettono di iterare sugli elementi costituenti ma anche le stringhe sono iterabili e, dato il problema posto, non ti occorre definire delle tuple, a meno che non sia un argomento del "compito", puoi utilizzare direttamente le stringhe che, in aggiunta, forniscono "strumenti" utili.

In effetti, osservo che hai si considerato lettere e consonanti ma solo "minuscole" e le MAIUSCOLE? Per tener presenti anche le maiuscole dovresti raddoppiare gli elementi di tupla "oppure" utilizzare le funzioni "lower()" o "upper()" delle stringhe.

Ti faccio un esempio basato sulla Tua impostazione ma condito delle considerazioni sopra riportate :
>>> def alfabeto_italiano(lettera):
vocali = 'aeiou'
consonanti = 'bcdfghlmnpqrstvz'
lettera = lettera.lower()
if lettera in vocali:
return 'Vocale'
elif lettera in consonanti:
return 'Consonante'
return "Non fa parte dell'alfabeto italiano"

>>> digitazione = input('Inserire carattere scelto : ')
Inserire carattere scelto : A
>>> alfabeto_italiano(digitazione)
'Vocale'
>>> digitazione = input('Inserire carattere scelto : ')
Inserire carattere scelto : Apelle figlio di Apollo
>>> for lettera in digitazione:
print(lettera, ' = ', alfabeto_italiano(lettera))


A  =  Vocale
p  =  Consonante
e  =  Vocale
l  =  Consonante
l  =  Consonante
e  =  Vocale
   =  Non fa parte dell'alfabeto italiano
f  =  Consonante
i  =  Vocale
g  =  Consonante
l  =  Consonante
i  =  Vocale
o  =  Vocale
   =  Non fa parte dell'alfabeto italiano
d  =  Consonante
i  =  Vocale
   =  Non fa parte dell'alfabeto italiano
A  =  Vocale
p  =  Consonante
o  =  Vocale
l  =  Consonante
l  =  Consonante
o  =  Vocale

Come vedi una funzione di norma si utilizza per automatizzare operazioni ripetitive, per utilizzi più o meno semplici od intensivi e articolati, è quello il loro scopo.

Ora, se vi sono cose che non Ti sono chiare, Ti sollecito a cercare, trovare, consultare e capire la documentazione relativa agli argomenti "oscuri", è il metodo migliore per "fissare" le cose, ciò che Ti ho detto su lo dimenticherai presto se non cerchi di assimilare i concetti.

Ciao
« Ultima modifica: Aprile 03, 2020, 05:47 da nuzzopippo »

Offline StudentePython3

  • python unicellularis
  • *
  • Post: 3
  • Punti reputazione: 0
    • Mostra profilo
Re:Esercizio alfabeto
« Risposta #2 il: Aprile 03, 2020, 09:23 »
ok credo di aver capito, ora definisco una funzione

def vocali(carattere):
    vocali = "aeiou"
    if carattere in vocali:
        print('Il carattere scelto: ' + carattere + '--> è una vocale')
    else:
        print('Il carattere: ' + carattere + '--> non è una vocale')


mentre quello che cercavo di fare io: era un programma con alfabeto italiano che in base alla digitazione restituiva info se dal promt fosse stato digitata una vocale, consonante oppure carattere non presente nell'alfabeto italiano...


digitazione=input('Inserisci il carattere scelto minuscolo: ')

vocali="aeiou"
consonanti="bcdfghlmnpqrstvz"
if digitazione in vocali:
    print('\nIl carattere scelto è una vocale')
elif digitazione in consonanti:
    print('\nIl carattere scelto è una consonante')
else:
    print('\nIl carattere digitato non è presente nell\'alfabeto italiano')


scusi sto studiando python come autodidatta;
 ho salvato il sito da lei indicato e lo leggerò tutto, grazie molte per l'aiuto!
 :py: per il pulsante python dove lo trovo? Son nuovo iscritto nel forum

Offline nuzzopippo

  • python neanderthalensis
  • ****
  • Post: 294
  • Punti reputazione: 0
    • Mostra profilo
Re:Esercizio alfabeto
« Risposta #3 il: Aprile 03, 2020, 12:14 »
...
scusi sto studiando python come autodidatta;
 ho salvato il sito da lei indicato e lo leggerò tutto, grazie molte per l'aiuto!
 :py: per il pulsante python dove lo trovo? Son nuovo iscritto nel forum

In primo luogo, dammi del Tu, sono un autodidatta che sta studiando python anch'io e mi fa sentire meno "giovane" ;)

il "pulsante" python : non c'è, o meglio "forse ci sarebbe" ma anche se c'è è meglio che non lo trovi, leggiti questa pagina, ti svelerà un mondo "nuovo".

Sempre su quella pagina troverai il link per una guida per l'uso di python da parte di utenti windows (usi windows, vero?) te la raccomando caldamente, seguila passo passo, ti sarà utilissima.

Ciao :)

{Edit] ... mi è venuto in mente dopo : con "pulsante python" forse intendi il pulsante "pythoncode" che Ti ho indicato nel precedente post? Se intendi quello quando apri l'editor dei post trovi una bottoniera, passando con il mouse sui pulsanti, senza premere, ti apparirà un tooltip con la descrizione della funzione del pulsante ("pythoncode" per quello di interesse), lo premi e nell'editor saranno inseriti dei tags per per l'inserimento del codice, copia il Tuo codice ed incollalo all'interno di quei tags.

Di primo acchitto avevo interpretato Tu intendessi un pulsante di comando per eseguire il codice (accaduto in una recente discussione), nel caso, scusa l'errata interpretazione.

Ri-ciao
« Ultima modifica: Aprile 03, 2020, 12:28 da nuzzopippo »

Offline StudentePython3

  • python unicellularis
  • *
  • Post: 3
  • Punti reputazione: 0
    • Mostra profilo
Re:Esercizio alfabeto
« Risposta #4 il: Aprile 03, 2020, 14:01 »
ok uso linguaggio formale (instaura un clima più di amicizia), uso un portatile con macintosh con os x, per il pulsante intendevo si il python code da te citato....

Print('Buon pomeriggio a tutti gli utenti del forum di Python3')