Profilo di RicPol

Nome RicPol
Indirizzo email ric.pol@libero.it
AvatarAvatar utenti
Messaggi527
Firma forum
  • Re: In Python tutto e' un oggetto...
    Forum >> Principianti
    Quando programmi in python, fai *sempre* programmazione a oggetti, nel senso (stretto) che stai sempre manipolando oggetti, qualunque cosa tu stia facendo, perché tutti i dati in pyhton sono rappresentati come oggetti.


    Tuttavia, quando si parla di "programmazione a oggetti", in genere si intende in senso più ampio: ovvero, quello stile di programmazione per cui tu *modelli da solo i tuoi oggetti*, li crei e li manipoli... quindi (in python) scrivendo codice che comprende diverse dichiarazioni "class", diverse istanziazioni di oggetti e così via.


    In questo senso più ampio, puoi sicuramente usare python senza fare "programmazione a oggetti"... per esempio limitandoti a scrivere solo delle funzioni senza mai dichiarare e usare le classi.


    Tuttavia tieni conto che gran parte delle librerie che trovi in giro (e gran parte della libreria standard stessa) sono scritte nello stile della programmazione a oggetti... il che significa che, se vuoi usarle nel tuo codice, ti tocca comunque studiarti un po' di cose sulle classi, etc.... e quindi, in un certo senso, se nel tuo codice utilizzi delle librerie a oggetti, allora anche il tuo codice diventa, almeno in parte, "codice a oggetti".


    E comunque, non dimenticarti che, in senso stretto, "in python tutto è un oggetto"... quindi puoi anche scrivere una funzione e "apparentemente" non fare OOP, ma... guarda che *anche* una funzione in Python è un oggetto! Anche se, usandola, non te ne accorgi.

  • Re: Composizione lista con errore non segnalato???
    Forum >> Principianti
    Sì talvolta è difficile accorgersene!... Per la cronaca, questa cosa è documentata nel tutorial https://pytutorial-it.readthedocs.io/it/python3.9/introduction.html#stringhe...




  • Re: Problema con la ricerca in database da variabile
    Forum >> Programmazione Python >> Database
    mah sai, quel codice è talmente pieno di righe commentate, parti colorate, faccio-così-ma-forse-poi-così... che non si capisce proprio che percorso il tuo codice fa quando ottieni l'errore. Leggere la documentazione *a fondo* (non uno sguardo diagonale in tredici secondi netti alla ricerca di quello che ti serve sul momento... no, intendo proprio *a fondo*...) e imparare i pattern "naturali" per usare sqlite aiuta senz'altro.


    Per quanto posso dirti a colpo d'occhio:

    - c.execute("SELECT * FROM Marche WHERE Marca = ?", marcadacercare) è in effetti il pattern corretto (con "marcadacercare" una tupla, anche di un solo elemento). E' inutile assegnare questa espressione a una variabile "ric" di cui non ti farai niente, peraltro...

    - c.fetchone() restituisce una sola riga... e la restituisce come una singola tupla di elementi, NON come una lista di tuple... quindi fare "for row in c.fetchone()" non fa quello che tu credi che faccia... non stai iterando sulle RIGHE restituite, ma sugli ELEMENTI dell'unica riga che ti viene restituita;


    - una volta che la riga è restituita, guarda che è *consumata*... non ritorna più in quel cursore. Quindi fare "print(c.fetchone())" una prima volta per curiosare un po', e poi di nuovo "c.fetchone()" per iniziare a lavorare, non va bene. Il secondo fetchone() restituisce una riga diversa... e certo, se inoltre per puro caso il tuo database contenesse *una sola riga* con "Motorola"... ops, alla seconda saresti già panato perché la seconda riga... non esiste.





    Ora, come ripeto, tutto questo è molto semplice da vedere, dopo aver letto *a fondo* la documentazione di sqlite3. Ma in generale, quando hai problemi sull'api di qualcosa che usi, prova sempre a scrivere l'esempio minimo che innesca il problema, lasciando fuori tutti gli orpelli non necessari (le label, tkinter... ma che c'entra col tuo problema col database?). Se ti sforzi di fare questo, invece di ricopiare tutto sul forum, vedrai che nove su dieci il problema ti diventa chiarissimo, e lo capisci in un secondo.




  • Re: primi passi con python
    Forum >> Principianti
    Non è questione di "essere presuntuosi"... quando si studia capita a tutti di soffermarsi su aspetti particolari, magari un po' bizzarri, magari secondari, e chiedersi... perché è così?... perché così e non cosà?... eccetera.


    E c'è sempre una risposta (ovviamente!)... ma di solito non è che la risposta serva a molto, finché uno non ne sa un po' di più. Devi aver semplicemente pazienza, aspettare di avere un'idea più complessiva del linguaggio, aver letto un bel po' di codice in giro, aver fatto l'abitudine a come si fanno certe cose... allora anche queste risposte avranno più senso e rientreranno in un contesto più comprensibile per te.


    Per esempio, prendi il tuo primo dubbio: che differenza c'è tra
    >>> s = "%s %s" % ("ciao", "mondo")
    >>> s
    'ciao mondo'
    >>> s = "ciao " + "mondo"
    >>> s
    'ciao mondo'
    
    Nessuna ovviamente. Ma le interpolazioni di stringa ti consentono di fare cose più raffinate, come tener conto dei tipi... te ne accorgi se provi a fare
    >>> s = "Mi chiamo %s e ho %i anni" % ("Marco", 18)
    >>> s
    'Mi chiamo Marco e ho 18 anni"
    >>> s = "Mi chiamo " + "Marco" + " e ho " + 18 + " anni"
    TypeError: can only concatenate str (not "int") to str
    
    OPS!


    Ora, questa è la risposta alla tua domanda. Ti "serve", adesso, questa risposta? Francamente no. Studia le concatenazioni di stringa (con il "più"), studia le interpolazioni di stringa (con il "percento") e vedrai che poco per volta, man mano che ti abitui a usare queste cose, e man mano che le vedi usate nel codice altrui che leggi, capirai e riuscirai ad apprezzare la differenza.





    E per la tua seconda domanda... ci sono differenze sottili tra "input" e "sys.stdin.readline"... anche qui, discorsi noiosi. Usa "input" e vedrai che quando verrà il momento in cui dovrai usare l'altro, lo saprai.













  • Re: python o java
    Forum >> Principianti
    Sai, sono proprio tre cose differenti:


    - l'esigenza/interesse di studiare python
    - l'esigenza/interesse di studiare java
    - l'esigenza/interesse di fare un programma per qualcuno.


    Se vuoi studiare un linguaggio, python è una buonissima idea (ma tieni conto che qui siamo su un forum python... che ti aspettavi che dicessi? se vai su un forum java, forse ti rispondono che conviene studiare java). Abbandona completamente il tuo problema, lascialo proprio stare del tutto per almeno sei mesi e mettiti d'impegno a studiare python dalle basi, seguendo un buon libro passo-passo. Il Lutz è sempre una buona scelta per questo. Se ti metti a studiare un linguaggio sperando di "farti il tuo programma", perdi solo tempo. Non si studia in questo modo.


    Se invece vuoi fare un programma, beh... dipende da che cosa dovrebbe fare questo programma, potrebbero esserci diverse soluzioni "a bassa intensità"... sapessi le cose che non si possono fare con MS Access... eh eh... Ma poi dici che il tuo programma in realtà esiste già, in Php/wamp. Ottimo... se funziona, lascialo esattamente così com'è. Non si cambia una cosa che non è rotta.




  • Re: Problema con associazione files .py
    Forum >> Principianti
    In generale non c'è nessun problema ad avere due o più versioni di python installate contemporaneamente. In questo momento, io ne ho esattamente sei (ho dovuto contarle, non me ne ricordavo neanche). E non importa la versione di windows, funziona perfettamente in ogni possibile situazione.


    Se esegui uno script con "> python mioscript.py", allora il sistema operativo selezionerà il primo "python" che trova nella path di sistema (ovvero, probabilmente, quello che hai installato per ultimo, ma dipende da un po' di fattori). Se usi il launcher "py", allora puoi determinare esattamente con quale python vuoi lanciare lo script. Per esempio "> py -3.7 mioscript.py", oppure "> py -3.8 mioscript.py" eccetera.




  • Re: apertura programmi python da cmd windows
    Forum >> Principianti
    python è un linguaggio procedurale. Interpreta il codice istruzione per istruzione, e (se è il caso), emette il risultato di ciascuna espressione che interpreta, in successione. Quindi se il tuo script contiene una serie di istruzioni che emettono input, vedrai quell'input. Ma una funzione (e il codice che contiene) non è di per sé una istruzione che emette input. Per vedere l'input della funzione, devi chiamarla. Quindi il tuo script dovrà avere (almeno) una istruzione "non annidata" che chiama la funzione. La funzione da sola non basta, insomma.


    Detto questo, la cosa migliore è sempre imparare seguendo passo-passo un buon libro, pagina dopo pagina, senza avventurarsi in esperimenti personali. Il Lutz è sempre la scelta migliore.


    Per lo specifico di come si usa python in windows, consiglio (ehm... ) il mio libro (link in firma) e un po' di articoli del mio blog.

  • Re: Traduzione Documentazione ?
    Forum >> Annunci
    bene... direi che sono passati due mesi e non è uscito fuori assolutamente nulla... come peraltro avevo ampiamente previsto. La comunità python italiana... sono io, mi sa. :-)


    Adesso non so che cosa ho voglia di fare... così su due piedi, direi che chiudo il progetto e continuo a mantenere separatamente il tutorial...




  • Re: Problema con la ricerca in database da variabile
    Forum >> Programmazione Python >> Database
    Puoi indicarmi quale parte della documentazione di sqlite non ti è chiara? https://docs.python.org/3/library/sqlite3.html
  • Re: Playsound
    Forum >> Principianti
    link in firma