Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    703

    [python] alcuni chiarimenti su spelling

    allora ho sviluppato questo semplicissimo e minimale code che, data una parola ne fa lo spelling lettera x lettera stampandola a video..

    codice:
    def funzione():
        try:  # inzio gestione errori
            domanda = str(raw_input("Dammi una parola "))
            parola = domanda
            indice  = 0
            while indice < len(parola):
                lettera = parola[indice]
                print lettera
                indice = indice + 1
        except: # fine gestione errori
            print "errore"
            a= str(raw_input("premere invio per uscire, o digitare 'r' per ricaricare lo script"))
            if a == "r":
                print
                print
                return funzione()
            else:
                exit
    funzione()

    ora i miei dubbi sono:
    1) come poter implementare una cosa del tipo:
    data la parola "cioccolato" il programma mi restituisca oltre che lo spelling anche: "ci sono: 3c, 2o,1l ecc ecc --> spero di essermi spiegato^^

    2) la gestione degli errori potrei scriverla meglio?mi chiedo però se vi sia la possibilità di generarlo l'errore, in quanto stampa a video il raw_input senza nessun vincolo...

  2. #2
    ora i miei dubbi sono:
    1) come poter implementare una cosa del tipo:
    data la parola "cioccolato" il programma mi restituisca oltre che lo spelling anche: "ci sono: 3c, 2o,1l ecc ecc --> spero di essermi spiegato^^
    Puoi usare set() per ottenere le singole lettere che compongono la parola e, ''.count() per contare le occorrenze.

    codice:
    >>> s = set('cioccolato')
    >>> s
    set(['a', 'c', 'i', 'l', 'o', 't'])
    >>> for x in s:
    ...     print "occorrenze lettera %s = %s" %(x, 'cioccolato'.count(x))
    ...
    occorrenze lettera a = 1
    occorrenze lettera c = 3
    occorrenze lettera i = 1
    occorrenze lettera l = 1
    occorrenze lettera o = 3
    occorrenze lettera t = 1
    >>>


    2) la gestione degli errori potrei scriverla meglio?mi chiedo però se vi sia la possibilità di generarlo l'errore, in quanto stampa a video il raw_input senza nessun vincolo...
    Il blocco try/except mi pare superfluo in quanto non vedo punti in cui potrebbe venire generata un'eccezione.
    In ogni caso non è mai bene catchare l'eccezione in modo generico come hai fatto tu:

    codice:
    try:
       ...
    except:
       ...
    Sempre meglio specificare QUALE eccezione ci si aspetta.
    Le eccezioni che tu (programmatore) non hai considerato è giusto che siano sollevate.
    Rilasciata Python FTP Server library 0.5.1
    http://code.google.com/p/pyftpdlib/

    We'll be those who'll make the italian folks know how difficult can be defecating in Southern California without having the crap flying all around the house.

  3. #3
    PS: "exit" alla fine non fa nulla. Credo intendessi "exit()".
    Rilasciata Python FTP Server library 0.5.1
    http://code.google.com/p/pyftpdlib/

    We'll be those who'll make the italian folks know how difficult can be defecating in Southern California without having the crap flying all around the house.

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    703
    grazie mille, perfetto ^^ funzia benissimo.. xo a me non basta vedere che funziona, ma voglia capirne il funzionamento:

    codice:
    domanda = str(raw_input("Dammi una parola "))
    parola = domanda
    indice  = 0
    while indice < len(parola):
        lettera = parola[indice]
        print lettera
        indice = indice + 1
    
    conteggio()
        
    def conteggio():  # imposto la funzione conteggio
        s = set (domanda) # imposto la variabile s, che contiene il conto delle singole lettere per l'oggetto domanda
        set (["a","b","c","d","f","g"]) # setto verso quali parametri deve contare
        for x in s:   # creo un ciclo, che attraversa s, e quindi domanda.. però non ho capito la x che significa
             print "occorrenze lettera %s = %s" %(x, domanda.count(x))
    ora la parte che mi interessa è nella funzione conteggio, vicino ci sono i commenti, volevo chiedere se erano corretti..

  5. #5
    s = set (domanda) # imposto la variabile s, che contiene il conto delle singole lettere per l'oggetto domanda
    No, set() ti ritorna una oggetto iterabile simile a una lista eliminando gli elementi doppi.
    E' più semplice leggere il codice che spiegarlo:

    codice:
    >>> set([1,2,3,4,4,4,])
    set([1, 2, 3, 4])
    >>> set(['a', 'b', 'b', 'b'])
    set(['a', 'b'])
    >>>
    set (["a","b","c","d","f","g"]) # setto verso quali parametri deve contare
    No, funziona in tutt'altro modo (vedi sopra).

    for x in s: # creo un ciclo, che attraversa s, e quindi domanda.. però non ho capito la x che significa
    La x è una variabile che ad ogni ciclo che compi nel for assume un valore diverso. Es:

    codice:
    >>> for x in 'ciao':
    ...     print x
    ...
    c
    i
    a
    o
    >>>
    Leggi bene il tutorial base perchè il for è proprio una delle prime cose che devi capire.
    Rilasciata Python FTP Server library 0.5.1
    http://code.google.com/p/pyftpdlib/

    We'll be those who'll make the italian folks know how difficult can be defecating in Southern California without having the crap flying all around the house.

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    703
    ok allora ripasso il for, è ke sto seguendo una guida consigliata da python italia, e per ora ha affrontato prima il while..grazie mille

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 © 2024 vBulletin Solutions, Inc. All rights reserved.