Visualizza post

Questa sezione ti permette di visualizzare tutti i post inviati da questo utente. N.B: puoi vedere solo i post relativi alle aree dove hai l'accesso.


Post - RicPol

Pagine: [1] 2 3 ... 239
1
PyQT / Re:passare un oggetto ad una funzione
« il: Gennaio 12, 2021, 15:16 »
> Un "oggetto" può essere tranquillamente parametro di una funzione.

No.
Un oggetto DEVE essere l'argomento di una funzione. Non è possibile passare a una funzione qualcosa che NON sia un oggetto. Sarebbe errore di sintassi.
E quando la funzione, al suo interno, "usa" un oggetto, in qualunque modo e con qualsiasi sintassi, quello che in realtà sta facendo è accedere alle proprietà e ai metodi di quell'oggetto.

In Python tutto è un oggetto.

2
Base / Re:Distribuire le proprie applicazioni
« il: Gennaio 12, 2021, 15:12 »
Per determinare la licenza del tuo sofware, scegli prima la licenza che ti piacerebbe usare. Poi guarda tutte le licenze di tutti i componenti che usi, e scopri se ti permettono di redistribuire con la licenza che vorresti tu. Se un componente non te lo permette, i casi sono due: o cambi la tua licenza, o non usi quel componente.

3
Base / Re:numeri macchina e operazioni sbagliate
« il: Dicembre 04, 2020, 10:39 »
in generale, se hai bisogno di numeri con precisione arbitraria, non puoi usare i float (e le operazioni possibili sui float, come round, non aiutano di certo, anzi). Il tutorial di python ha un'ottima appendice che spiega i problemi di precisione dell'aritmetica in virgola mobile... e siccome io ho tradotto il tutorial in italiano, non posso non linkare: https://pytutorial-it.readthedocs.io/it/python3.9/floatingpoint.html
Se ti serve una rappresentazione con precisione arbitraria, puoi usare decimal https://docs.python.org/3.9/library/decimal.html#module-decimal

4
System scripting / Re:Problema python + crontab
« il: Dicembre 02, 2020, 12:10 »
Se "ottieni degli errori", allora leggi il traceback degli errori che ottieni e scoprirai di che cosa si tratta.
Probabilmente c'è un problema di directory corrente... del resto il modulo che importi non è installato canonicamente con pip/setup.py, quindi sei in terreno scivoloso per definizione.

5
System scripting / Re:codifica e decodifica stringa su terminale
« il: Dicembre 02, 2020, 12:00 »
non è proprio chiaro come ti esprimi...
comunque "input" restituisce una stringa, mentre su telnet devi inviare e ricevere bytes. Accertati di non mescolare mai i due tipi.

6
Multimedia / Re:Foto carte da gioco
« il: Dicembre 01, 2020, 14:39 »
beh... implementare un mazzo di carte è un esercizio classico... siccome un mazzo è in sostanza una struttura che deve mantenere uno stato interno, è fatto apposta per esercitarsi con le classi e l'OOP. Si può scendere parecchio nel dettaglio con l'implementazione, e si possono affrontare (e forse risolvere!) diversi problemi di design.
Ovviamente ci sono già un sacco di implementazioni pronte, da cui si può prendere spunto guardando il codice sorgente: basta googlare per "python card deck library" e si trova di tutto.

7
Multimedia / Re:Foto carte da gioco
« il: Dicembre 01, 2020, 12:44 »
cioè... sprite raster di carte da gioco... ma sono tornati gli anni '80?

Provate con questi: https://en.wikipedia.org/wiki/Playing_cards_in_Unicode
(che vi permettono di fare un gioco puramente testuale... se avete una shell unicode!)

8
Base / Re:funzione ricorsiva per permutazioni
« il: Novembre 30, 2020, 22:11 »
guarda... onestamente non so più che cosa dire su 'sta ricorsione... Non c'è libro, corso, etc. che non rompa enormemente le p***e con la ricorsione... e la ricorsione a un certo punto sembra sempre il sacro graal del principiante... "ah, se solo capissi la ricorsione, saprei programmare di botto"...

Allora, chiariamo una volta per tutte. Conoscere una buona dose di
1) strutture-dati
e
2) algoritmi (che si appoggiano a diverse strutture-dati)
è sicuramente fondamentale per saper programmare, in qualsiasi linguaggio. Col tempo, uno si fa una sorta di biblioteca mentale di algoritmi (e di strutture-dati) che tiene "a portata di mano", e applica alla bisogna per risolvere i problemi reali della sua vita di programmatore. Non è che per forza uno debba conoscere questi algoritmi nel dettaglio... di solito basta avere una robusta consapevolezza che esistono, sapere quale tipo di problemi risolvono, e sapere dove trovare una buona implementazione di riferimento. Ma certamente, più algoritmi (e strutture-dati) si conoscono, più li si conosce nel dettaglio, meglio si sta. E' come parlare una lingua straniera, e sapere dozzine di modi di dire, frasi idiomatiche eccetera. Non c'è niente da fare, nella vita reale si vede la differenza.

Gli algoritmi ricorsivi sono una classe di algoritmi senz'altro importante (ma non certo maggioritaria), e senz'altro vale la pena di imparare qualche rudimento di ragionamento ricorsivo.

Detto questo, la ricorsione è notoriamente ostica da capire, e francamente viene buttata lì dai vari corsi,
1) un po' per far capire che il corso "è di quelli seri", su cui bisogna sudare
2) un po' perché bisogna "formare il carattere" dello studente dandogli cose astratte e difficili da fare.

Ora, siccome la ricorsione è un modo molto economico di dimostrare che il corso è serio, il risultato è che praticamente tutti i corsi buttano lì l'esercizio sulla ricorsione. Magari non ti spiegano davvero come funziona una lista e che cosa ci puoi fare... ma l'esercizio sulla ricorsione sta tranquillo che non manca mai.

Detto questo, chiariamo: se non riesci ad arrampicare il tuo cervello su un ragionamento ricorsivo, con una certa rapidità... è meglio essere onesti, qui... è come "essere portati per la matematica"... si può fare matematica anche senza esserlo, ma... c'è differenza.
D'altro canto, se non riesci a "vedere" la ricorsione *adesso*... puoi tranquillamente lasciar perdere e tornarci sopra più tardi, più volte, con calma... non è che la ricorsione deve proprio essere il macigno che ti frena per giorni... Magari se passi oltre e aspetti di conoscere più algoritmi, di esserti fatto le ossa, di aver visto e fatto molti più ragionamenti... magari poi ti viene. Certo, non puoi evitarla per sempre... ma insomma non so proprio se mi ci incaponirei adesso.


Detto tutto questo, se vuoi provare un esercizio... laterale... guarda questo: https://pythoninwindows.blogspot.com/2019/01/esercizio-funzioni-ricorsive.html
In questo articolo spiego come si ragiona per risolvere un esercizio ricorsivo. Non è lo stesso che hai tu, ma appunto... Prova a lasciar perdere il tuo esercizio per un po', prova a seguire il ragionamento del mio articolo... troverai dei punti fermi che ti possono servire per tutti gli esercizi ricorsivi... poi magari riesci a riprendere in mano il tuo esercizio, e ti viene un po' più facile.

Ma ripeto, non è che casca il mondo, se rimandi il problema un po'.

9
Base / Re:Moduli e classi dinamiche
« il: Novembre 29, 2020, 11:28 »
> non riesco ad immaginare lo scopo di un programma ...

Mah, naturalmente ci sono casi in cui davvero ti serve tutta questa dinamicità... per esempio se stai scrivendo un debugger, dei componenti integrati per un editor... allora effettivamente potresti aver bisogno di importare moduli di cui non sai il nome, e cose del genere.

Il problema qui è un po' come per le metaclassi... se davvero sei in uno scenario in cui devi usare 'sta roba, allora *sai già* che cosa è e che devi usarla. Ma il 99% delle volte non ne hai davvero bisogno e ti stai solo complicando la vita.
Qui i casi sono del tipo...
- "mi piacerebbe fare un sistema di plugin..."
- "voglio offrire un menu all'utente..."
eccetera eccetera. (Fino a, ovviamente, "non ho davvero capito come funziona una variabile"). Nel 99% dei casi è solo una falla di sicurezza grande come il sistema solare. https://en.wikipedia.org/wiki/Arbitrary_code_execution

Detto ciò, va bene pkgutil, ma tipicamente l'importazione dinamica di un modulo si fa con importlib https://docs.python.org/3/library/importlib.html

10
Base / Re:Moduli e classi dinamiche
« il: Novembre 28, 2020, 20:48 »
stai attento alle falle di sicurezza, e usa getattr https://docs.python.org/3/library/functions.html#getattr

11
Calcolo scientifico / Re:Regressione lineare con Python
« il: Novembre 25, 2020, 11:45 »
di solito in python questa cosa si fa con sklearn.linear_model https://scikit-learn.org/stable/modules/linear_model.html
Questo però richiede
di aver studiato Pyton (piuttosto bene)
di aver capito come si fa a installare e usare librerie esterne (bene)
di aver capito come funziona numpy (discretamente bene)
di aver capito come funziona sklearn (almeno quel che basta)
oltre naturalmente a sapere che cosa è una regressione lineare (beh, per forza...)

Se sei interessato a studiare python, l'unica possibilità è di lasciar perdere questo problema per circa un anno, e seguire un buon libro passo-passo, mettendoci tanta pazienza. Il Lutz è sempre una buona idea.
Se invece sei interessato a fare regressione lineare, ti consiglio uno dei tanti tool di calcolo che esistono per questi scopi... anche online, tipo questo per esempio https://keisan.casio.com/exec/system/14059929550941

12
Base / Re:funzioni ricorsive e variabili locali
« il: Novembre 24, 2020, 21:28 »
Perché "tot" non è la **stessa** variabile, che viene azzerata ogni volta. Ogni funzione, quando viene chiamata, si costruisce una *sua* variabile "tot", e alla fine ne restituisce il valore. Ma la variabile "tot" della funzione chiamante "di livello superiore", ha già una sua variabile "tot", separata, che resta lì...
qualcosa del genere:

chiamo la funzione ->
      sto eseguendo la funzione
      mi creo la mia variabile tot
      chiamo la funzione ->
          sto eseguendo la funzione
          mi creo la mia variabile tot
          (qui eventualmente chiamo ancora, ricorsivamente)
              (... ... ...)
          restituisco la mia variabile tot
      aggiungo alla mia variabile tot quella restituita dalla funzione che ho chiamato
      restituisco la mia variabile tot
e qui ho finito


13
Base / Re:python3.8 errore di compilazione
« il: Novembre 24, 2020, 21:12 »
ma davvero su apt non c'è ancora py3.8? Non ho linux sottomano adesso per controllare...
Comunque volendo potresti provare con la PPA di Deadsnakes, che fornisce versioni recenti di python proprio per queste situazioni... https://launchpad.net/~deadsnakes/+archive/ubuntu/ppa o anche https://linuxize.com/post/how-to-install-python-3-8-on-ubuntu-18-04/ e molti articoli simili...

Comunque non è che "a dicembre" finisce l'universo... basta che non aggiorni più home assistant fino a quando non hai un modo decente per installare py3.8... e già che ci sei, dovresti postare una issue grande come una casa con home assistant, e avvertirli che non è proprio una bella idea da parte loro richiedere una versione di python che non c'è ancora su apt... si dessero una calmata.

14
Base / Re:python3.8 errore di compilazione
« il: Novembre 24, 2020, 16:22 »
guarda che più ti incaponisci, più incasini il sistema... ti conviene spianare tutto e reinstallare il sistema operativo sulla scheda, prima.
> Non c'è unaltro modo per installare python 3.8?
Mah... non è semplicemente disponibile su apt?

15
Base / Re:python3.8 errore di compilazione
« il: Novembre 24, 2020, 12:55 »
> No module named '_sqlite3'

*teoricamente* (molto teoricamente) questo dovrebbe essere coperto dalla parte
apt install libsqlite3-dev
riportata in quella guida... se lo hai fatto, dovrebbe funzionare...
comunque, c'è poco da fare... installare cose su linux, ancora nel 2020, è una follia.

Pagine: [1] 2 3 ... 239