Profilo di RicPol

Nome RicPol
Indirizzo email ric.pol@libero.it
AvatarAvatar utenti
Messaggi304
Firma forum
https://leanpub.com/capirewxpython: Capire wxPython, il mio libro
https://pythoninwindows.blogspot.com: Python in Windows, il mio blog e le mie guide
  • Re: Programma in Phython, aperto nel cmd si chiude subito.
    Forum >> Principianti
    stai facendo doppio clic su uno script. Non si fa doppio clic su uno script.


    https://pythoninwindows.blogspot.com/2019/03/e-adesso-dove-clicco.html



    https://leanpub.com/capirewxpython: Capire wxPython, il mio libro
    https://pythoninwindows.blogspot.com: Python in Windows, il mio blog e le mie guide
  • Re: Python su computer off-line
    Forum >> Principianti
    puoi scaricare manualmente i pacchetti che ti servono da PyPI e poi installarli con Pip da un file locale https://pip.pypa.io/en/stable/user_guide/#installing-from-local-packages
    https://leanpub.com/capirewxpython: Capire wxPython, il mio libro
    https://pythoninwindows.blogspot.com: Python in Windows, il mio blog e le mie guide
  • Re: Problema che avviene chiamando una funzione da un'altra funzione
    Forum >> Programmazione Python >> GUI
    Il problema non riguarda tkinter, ma come si usano le funzioni, che cosa è un nome, che cosa è un namespace, che cosa è uno scope di una funzione... puoi seguire un buon libro passo-passo e imparare queste cose (e molte altre) senza impazzire ogni volta a chiederti perché un pezzo di codice non funziona. Il Lutz è sempre una buona scelta, come libro. "Comincio subito a progammare, poi le cose che non tornano le imparo man mano" non è mai una scelta saggia...
    https://leanpub.com/capirewxpython: Capire wxPython, il mio libro
    https://pythoninwindows.blogspot.com: Python in Windows, il mio blog e le mie guide
  • Re: Stringhe: quale soluzione adottare per questo Algoritmo...
    Forum >> Principianti
    Allora, un po' di terminologia: quello che stai cercando di fare si chiama: anagramma (eventualmente con scarto) https://it.wikipedia.org/wiki/Anagramma. Un anagramma è un tipo di permutazione https://it.wikipedia.org/wiki/Permutazione


    Ora, in python le permutazioni si fanno con itertools.permutations https://docs.python.org/3.7/library/itertools.html#itertools.permutations per cui nel tuo caso

    >>> from itertools import permutations
    >>> 'cabina' in [''.join(i) for i in permutations('abnciay', len('cabina')]
    True
    
    Oppure, meglio ancora perché evita la creazione di una lista di tutte le permutazioni:

    >>> tuple('cabina') in permutations('abnciay', 6)
    True
    Un esempio di algoritmo per le permutazioni lo trovi nella documentazione di itertools.permutations sopra linkata.





    Detto questo, ricorrere alle permutazioni per fare un anagramma può essere dispendioso. Un approccio più veloce sarebbe vedere se tutte le lettere della parola da cercare stanno nelle lettere di partenza. Se è così, allora l'anagramma si può fare senz'altro, è inutile mettersi a farlo davvero.


    Ora, questo approccio sarebbe banale usando i set, se NON ci fossero mai lettere ripetute: esempio

    >>> set('milano').issubset(set('ailmnoxyz')) # da 'ailmnoxyz' posso ricavare 'milano'
    True
    Perché i set, appunto, non ammettono ripetizioni. Siccome però noi ovviamente dobbiamo considerare il caso di lettere ripetute, la cosa più veloce che mi viene in mente sul momento è creare delle liste, ordinarle, e verificare se sono uguali:

    >>> word = sorted(list('cabina'))
    >>> letters = sorted([i for i in 'abnciay' if i in word]) # tolgo quelle che non stanno in 'cabina'
    >>> word == letters
    True


    https://leanpub.com/capirewxpython: Capire wxPython, il mio libro
    https://pythoninwindows.blogspot.com: Python in Windows, il mio blog e le mie guide
  • Re: come posso nascondere il codice sorgente del mio programma python?
    Forum >> Programmazione Python >> Scripting
    L'unico vero modo per "proteggere il codice sorgente" è non distribuirlo, ma offrirlo come servizio. Metti il tuo programma dietro un server web, e sei ragionevolmente sicuro.


    Fai meno di questo, e sei semplicemente nel solito banale notissimo noiosissimo ciclo dell'offuscamento del codice, che è una cosa che i principianti stentano sempre molto (davvero molto) a capire. Puoi offuscare il codice di tanto così, e allora lo proteggerai da quelli che non sanno arrivare a quel tanto così. Puoi offuscare il codice di un po' di più, e allora lo proteggerai da quelli un po' più abili di prima, ma non da quelli che stanno un gradino sopra. E così via. Se qualcuno ha fisicamente in mano l'eseguibile ed è abbastanza motivato, può capire come funziona. Sembra impossibile, ma è così. Alla fine parliamo pur sempre di macchine di Turing. Il resto è solo offuscamento.

    https://leanpub.com/capirewxpython: Capire wxPython, il mio libro
    https://pythoninwindows.blogspot.com: Python in Windows, il mio blog e le mie guide
  • Re: In quale ambiente sto mandando in esecuzione lo script?
    Forum >> Principianti
    Ah, ecco. Quello che vuoi sapere è se la tua console supporta i colori ANSI... cosa che in effetti non è facilissimo, visto che dipende dal sistema operativo, dalla versione del sistema operativo, dalla console usata.


    Tieni conto che il modo giusto per conoscere il sistema operativo è interrogare "sys.platform".


    Poi va detto (e me n'ero dimenticato) che puoi sapere se la tua console python è eseguita da un terminale o in una console grafica (come IDLE) interrogando "sys.stdin.isatty" (per tutto questo, guarda la documentazione).


    Tutto questo e altre tecniche già viste potrebbero avvicinarti a quello che vuoi fare... Ma in realtà la soluzione giusta potrebbe semplicemente essere di usare Colorama https://pypi.org/project/colorama/ e non preoccuparsi più di queste cose.


    Ovviamente non ho la più pallida idea di come tutto questo possa funzionare su XP... non ho la più pallida idea di come XP possa funzionare e basta... Nel 2019 quando sento ancora qualcuno che dice "XP" francamente spalanco le braccia e lascio perdere...

    https://leanpub.com/capirewxpython: Capire wxPython, il mio libro
    https://pythoninwindows.blogspot.com: Python in Windows, il mio blog e le mie guide
  • Re: In quale ambiente sto mandando in esecuzione lo script?
    Forum >> Principianti
    Uhm, sì certo os.environ è una possibilità ma mi sembra che stai andando a cacciarti in cose MOOOOLTO specifiche... devi capire che os.environ è un mapping messo a disposizione dall'ambiente di esecuzione, che può scriverci un po' quello che vuole... o anche non scriverci niente... cioè, in definitiva dipende da quanto sei in un ambiente posix-complaint...


    Per dire, prendi Windows... ehm... se tu avvi una normale shell di windows (cmd.exe per capirci), e da lì provi a fare
    >>> import os
    >>> os.environ['TERM']
    
    ti becchi una bella eccezione perché semplicemente cmd.exe non si cura di riempire quel dato in os.environ. D'altra parte, se invece usi una shell "preparata" come ConEmu/Cmder (cosa che io faccio sempre), allora "TERM" è "cygwin"... ma alla fine è la stessa shell, dal punto di vista di python... E su Mac le cose possono andare in modo anche diverso...





    Ora, qui mi sa che il punto sarebbe capire il famoso "che-cosa-stai-cercando-di-fare-davvero". Il mio sospetto è che stai cercando di risolvere un problema reale nel modo sbagliato. Se ti serve differenziare un ambiente "di sviluppo" da un ambiente "di produzione", per dire, le strategie sono in genere altre.


    In ogni caso, se ti basta sapere quale eseguibile sta lavorando il tuo script (cosa che può dirti se sei in un virtual environment, per esempio) allora "sys.executable" è la strada giusta. Se hai bisogno di capire dove sono diretti gli standard stream (altra cosa utile, visto che una shell grafica come IDLE tipicamente re-dirige lo stream verso la propria finestra), allora vedi che cosa ti dice "sys.stdout" per esempio. Arrivare fino allo specifico di os.environ... boh, certamente puoi farlo ma mi sembra davvero eccessivo così a prima vista.

    https://leanpub.com/capirewxpython: Capire wxPython, il mio libro
    https://pythoninwindows.blogspot.com: Python in Windows, il mio blog e le mie guide
  • Re: In quale ambiente sto mandando in esecuzione lo script?
    Forum >> Principianti
    molto rapidamente perché sono in treno: prova "import sys; print(sys.executable)": questo ti dà l'eseguibile python che sta lavorando in quel momento. Da lì puoi discriminare per le tue esigenze.
    https://leanpub.com/capirewxpython: Capire wxPython, il mio libro
    https://pythoninwindows.blogspot.com: Python in Windows, il mio blog e le mie guide
  • Re: Dimensioni schermo
    Forum >> Programmazione Python >> GUI
    Tutti i GUI framework hanno degli strumenti per rilevare la geometria dello schermo... devi studiare la documentazione del gui framework che intendi usare. Ovviamente poi anche il sistema operativo ha delle primitive per scoprire la stessa cosa, ed è certamente possibile interrogare queste primitive dal "lato Python" dell'applicazione, ma dovresti scrivere un po' di codice a mano e sarebbe perfettamente inutile visto che tanto appunto userai un gui framework che fa già questo lavoro per te.
    https://leanpub.com/capirewxpython: Capire wxPython, il mio libro
    https://pythoninwindows.blogspot.com: Python in Windows, il mio blog e le mie guide
  • Re: Usare correttamente funzioni e classi in python
    Forum >> Principianti
    Beh, guarda... se hai problemi a capire come si invoca una funzione ("si fa partire" una funzione) o come si istanzia una classe ("si fa partire" una classe), allora in effetti è proprio una questione di libri.


    Quindi: su che libro stai studiando Python?

    https://leanpub.com/capirewxpython: Capire wxPython, il mio libro
    https://pythoninwindows.blogspot.com: Python in Windows, il mio blog e le mie guide