Re: [Python] Un quesito su pip.

2024-02-12 Per discussione iz4apu
> Il giorno dom 11 feb 2024 alle ore 23:19 Gabriele Battaglia 
> ha scritto:
> >
> > Ciao a tutti.
> >
> > Perdonate l'ignoranza estrema, vorrei capire il perchè di questa cosa.
> >
> > Fino ad oggi, se dal prompt di Win11 digitavo pip, potevo gestire i
> > pacchetti installati.
> >
> > Dopo aver installato ed usato per qualche giorno anaconda, l'ho
> > disinstallato ed ora dal prompt, pip non mi risponde più.
> > [...]
> 
> Sono diversi anni che non uso Windows, per cui potrei dire delle vaccate...
> Forse Windows, quando hai disinstallato anaconda, ha tolto il collegamento
> tra il tipo di file e l'interprete, bisogna reimpostarlo magari attraverso il 
> menu
> contestuale di pip scegliendo "apri con..."
> e scegliendo "usa sempre questa applicazione" (o qualcosa del genere).
> 
> Ciao.

[# Gabry B:] Ciao Daniele. In questo caso non penso. Era forse più un problema 
di percorsi inseriti in qualche variabile di sistema per indicare all'O.S. dove 
cercare gli eseguibili.
Ho controllato tutte le variabili di sistema ma non ho trovato nulla.
Ho risolto disinstallando e reinstallando la 3.11.8 di Python.
Grazie per la tua risposta.

___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] Questo, da Python, non me lo sarei mai aspettato

2024-02-12 Per discussione Carlos Catucci
On Mon, 12 Feb 2024 at 00:10, Daniele Zambelli 
wrote:

> Mi pare di avere capito, ma continua a risultarmi strano questo
> comportamento:
>
>
> Se il valore della variabile viene cambiata al momento della chiamata
> della funzione, il valore di default rimane, se viene cambiata dalla
> funzione stessa il valore di default cambia in tutte le chiamate
> successive.


E cosa ci sarebbe di strano? Se non gli passi un valore applica quello di
default. QUello che deve fare fa'.

Carlos
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] Questo, da Python, non me lo sarei mai aspettato

2024-02-12 Per discussione Daniele Zambelli
Il giorno lun 12 feb 2024 alle ore 08:47 Federico Fissore
 ha scritto:
>
> Ciao
>
> no, l'ultima funzione sta rivalorizzando `par` ogni volta. Cambiala così e 
> riesegui

Ok, questo mi pare che riproduca la situazione:

def prova(cambia, par=[]):
if cambia:
par.append('pippo')
print("cambiata")
print(par)

prova(False)# []
prova(True) # cambiata \n ['pippo']
prova(False)# ['pippo']

Ma la cosa è un po' più sottile di come mi sembrava di avere capito, infatti:

def prova(cambia, par=[]):
if cambia:
par = ['pippo']
print("cambiata")
print(par)

prova(False)# []
prova(True) # cambiata \n ['pippo']
prova(False)# []

def prova(cambia, par=''):
if cambia:
par = 'pippo'
print("cambiata")
print(par)

prova(False)# ''
prova(True) # cambiata \n 'pippo'
prova(False)# ''

Mi sfugge ancora qualcosa...

Grazie, ciao.

-- 

Daniele

www.matematicadolce.eu

Perché la scuola,
invece di essere un luogo dove ci si allena a imparare,
è un luogo dove si fa finta di sapere?
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] Questo, da Python, non me lo sarei mai aspettato

2024-02-12 Per discussione Daniele Zambelli
Il giorno lun 12 feb 2024 alle ore 09:27 Carlos Catucci
 ha scritto:
>
> [...]
> E cosa ci sarebbe di strano? Se non gli passi un valore applica quello di 
> default. QUello che deve fare fa'.

Lo strano per me è che il valore di default dovrebbe essere una lista
vuota ogni volta che chiamo la funzione invece la seconda volta è una
lista con i valori che sono stati inseriti dalla funzione nella
chiamata precedente.
Cioè due chiamate identiche della funzione hanno effetti differenti.
Mi pare che non rispetti il principio di non side effect (se si dice così).

Ciao.

-- 

Daniele

www.matematicadolce.eu

Perché la scuola,
invece di essere un luogo dove ci si allena a imparare,
è un luogo dove si fa finta di sapere?
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] Questo, da Python, non me lo sarei mai aspettato

2024-02-12 Per discussione Esalando Prassi
On Sun, 11 Feb 2024 at 16:32, Daniele Zambelli 
wrote:

> Stavo studiando degli algoritmi per produrre la lista delle
> permutazioni di una sequenza, ho modificato una funzione che ho
> trovato su stackoverflow e mi sono imbattuto in un comportamento molto
> strano (per me).
> Lo script è questo:
>
> def permutazioni1(head, tail='', result=[]):
>

 Questo e' una cosa nota e mi sa che in tanti ci hanno sbattuto la testa:
https://docs.python-guide.org/writing/gotchas/#mutable-default-arguments

```
def permutazioni1(head, tail='', result=[]):
```

andrebbe cambiato in:

```
def permutazioni1(head, tail='', result=None):
if result is None:
   result = []
```

Ciao!
-- 
http://alepisa.blogspot.com
Esalando Prassi
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] Questo, da Python, non me lo sarei mai aspettato

2024-02-12 Per discussione Marco Beri
Il giorno lun 12 feb 2024 alle ore 09:36 Daniele Zambelli <
daniele.zambe...@gmail.com> ha scritto:

> Lo strano per me è che il valore di default dovrebbe essere una lista
> vuota ogni volta che chiamo la funzione invece la seconda volta è una
> lista con i valori che sono stati inseriti dalla funzione nella
> chiamata precedente.
> Cioè due chiamate identiche della funzione hanno effetti differenti.
> Mi pare che non rispetti il principio di non side effect (se si dice così).
>

Daniele,
il non side effect non si applica quando il valore di default di un
parametro è un mutable (lista o set o dict).
Pensa che a volte si usa questo per memoizzare brutalmente una funzione.

Esempio:

def quadrato(n, cache={}):
try:
return cache[n]
except KeyError:
pass
print("calcolo")
q = cache[n] = n*n
return q

>>> quadrato(10)
calcolo
100
>>> quadrato(10)
100


Ciao.
Marco.
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] Questo, da Python, non me lo sarei mai aspettato

2024-02-12 Per discussione Daniele Zambelli
Il giorno lun 12 feb 2024 alle ore 09:38 Esalando Prassi
 ha scritto:
>
> On Sun, 11 Feb 2024 at 16:32, Daniele Zambelli  
> wrote:
>> [...]
>  Questo e' una cosa nota e mi sa che in tanti ci hanno sbattuto la testa: 
> https://docs.python-guide.org/writing/gotchas/#mutable-default-arguments
> [...]

Lettura istruttiva, grazie.

-- 

Daniele

www.matematicadolce.eu

Perché la scuola,
invece di essere un luogo dove ci si allena a imparare,
è un luogo dove si fa finta di sapere?
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] Questo, da Python, non me lo sarei mai aspettato

2024-02-12 Per discussione Daniele Zambelli
Il giorno lun 12 feb 2024 alle ore 09:46 Marco Beri
 ha scritto:
> [...]
>
> Daniele,
> il non side effect non si applica quando il valore di default di un parametro 
> è un mutable (lista o set o dict).
> Pensa che a volte si usa questo per memoizzare brutalmente una funzione.
> [...]

Se non fosse banale, dato che sono molte più le cose che non conosco
di Python di quelle che conosco, direi che non si è mai finito di
imparare.

Grazie a tutti per la competenza e la pazienza.

-- 

Daniele

www.matematicadolce.eu

Perché la scuola,
invece di essere un luogo dove ci si allena a imparare,
è un luogo dove si fa finta di sapere?
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] Questo, da Python, non me lo sarei mai aspettato

2024-02-12 Per discussione Federico Fissore
  On Mon, 12 Feb 2024 09:30:18 +0100  Daniele Zambelli  wrote --- 
 > 
 > Mi sfugge ancora qualcosa...
 > 

Credo che quello che ti sfugge è che quando scrivi
par.append('pippo')
stai cambiando lo stato di una lista esistente, quella riferita dalla variabile 
`par`, mentre quando scrivi
par = 'pippo'
stai cambiando ciò a cui `par` fa riferimento.

Quindi se fai
par = []
par.append('pippo')
prima cambi il riferimento, facendolo puntare a una nuova lista, poi ne cambi 
lo stato

ciao

federico
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] Questo, da Python, non me lo sarei mai aspettato

2024-02-12 Per discussione Riccardo Ghetta

Ciao,
quando crei una funzione con parametri di default in python, funziona un 
po' come se l'avessi in realtà dichiarata così (*)


var_0001 = []
def prova(cambia, par):
if par is None: 
par = var_0001

if cambia:
par.append('pippo')
print("cambiata")
print(par)

e l'interprete avesse trasformato le chiamate in

prova(False, None)# []
prova(True, None) # cambiata \n ['pippo']
prova(False, None)# ['pippo']



In altre parole, ogni volta che entri nella funzione il parametro /par 
/viene agganciato alla variabile /var_0001 /e quindi ogni modifica al 
contenuto di /par /tocca la variabile.

se invece di append metti
par = ['pippo']
invece non modifichi /var_0001/, ma stai semplicemente agganciando par 
a/['pippo']/
La prossima volta par sarà riagganciato alla variabile originaria e 
quindi avrai sempre


prova(False, None)# []
prova(True, None) # cambiata \n ['pippo']
prova(False, None)# []

Ciao,
Riccardo

(*) ovviamente l'interprete non lavora proprio così
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


[Python] Sostituire l'interprete.

2024-02-12 Per discussione iz4apu
Ciao.

Con Windows 11 e Python 3.11, si può sostituire l’interprete di default 
mettendo, ad esempio, iPython?

 

Gabriele Battaglia (Gabe / Gabry) - IZ4APU

--... ...--  -.. .  .. --.. - .- .--. ..-  - ..-  . .

Sent from Outlook on Windows, Genus Bononiae's computer. (Libero)

 

___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


[Python] LISTE E RANDOM

2024-02-12 Per discussione Marco Monti
Buongiorno. Sto usando liste e tuple e non so come risolvere un problema
sulla diversa numerosità degli oggetti. Mi spiego meglio.
In un test di geografia ho inserito una lista delle 20 regioni italiane,
una lista delle 25 nazioni europee e una lista delle circa 100 province
italiane.
Dato che le 100 provincie italiane sono numericamente ben superiori alle
nazioni e alle regioni la scelta casuale fa uscire quasi sempre le
provincie. Non trovo un modo per bilanciare la scelta casuale.
Ho pensato di fare una scelta casuale differenziata: scelta solo fra le
nazioni, solo fra le regioni, solo fra le provincie. Poi fare una scelta
fra le suddette tre. Mi dà errore.
reg_ita=[]
naz_eur=[]
pro_ita=[]
reg_cas=random.choice(reg_ita)
naz_cas=random.choice(naz_eur)
pro_cas=random.choice(pro_ita)
cas_fin=random.choice(reg_cas+pro_cas+naz_cas)
Da errore. Non so come fare

Marco Monti
cell. 340 7200207
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] LISTE E RANDOM

2024-02-12 Per discussione Daniele Zambelli
Il giorno lun 12 feb 2024 alle ore 16:06 Marco Monti
 ha scritto:
>
> [...]
> Da errore. Non so come fare

Ho un sospetto di quale sia l'errore, ma dato che il codice che hai
postato non è eseguibile, almeno riporta l'errore che ti segnala
l'interprete.

Ciao.

-- 

Daniele

www.matematicadolce.eu

Perché la scuola,
invece di essere un luogo dove ci si allena a imparare,
è un luogo dove si fa finta di sapere?
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] LISTE E RANDOM

2024-02-12 Per discussione Esalando Prassi
On Mon, 12 Feb 2024 at 16:06, Marco Monti  wrote:

> Buongiorno. Sto usando liste e tuple e non so come risolvere un problema
> sulla diversa numerosità degli oggetti. Mi spiego meglio.
> In un test di geografia ho inserito una lista delle 20 regioni italiane,
> una lista delle 25 nazioni europee e una lista delle circa 100 province
> italiane.
> Dato che le 100 provincie italiane sono numericamente ben superiori alle
> nazioni e alle regioni la scelta casuale fa uscire quasi sempre le
> provincie. Non trovo un modo per bilanciare la scelta casuale.
> Ho pensato di fare una scelta casuale differenziata: scelta solo fra le
> nazioni, solo fra le regioni, solo fra le provincie. Poi fare una scelta
> fra le suddette tre. Mi dà errore.
> reg_ita=[]
> naz_eur=[]
> pro_ita=[]
> reg_cas=random.choice(reg_ita)
> naz_cas=random.choice(naz_eur)
> pro_cas=random.choice(pro_ita)
> cas_fin=random.choice(reg_cas+pro_cas+naz_cas)
> Da errore. Non so come fare
>
>
Credo tu voglia fare qualcosa tipo:

```
random.choice(reg_ita + naz_eur +  pro_ita)
```

Ciao!
-- 
http://alepisa.blogspot.com
Esalando Prassi
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] LISTE E RANDOM

2024-02-12 Per discussione Marco Beri
Il giorno lun 12 feb 2024 alle ore 16:20 Esalando Prassi <
alessandro.p...@katamail.com> ha scritto:

> Credo tu voglia fare qualcosa tipo:
>
> ```
> random.choice(reg_ita + naz_eur +  pro_ita)
> ```
>

Io invece punto su:

cas_fin=random.choice((reg_cas, pro_cas, naz_cas))

Ciao.
Marco.

>
>
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] LISTE E RANDOM

2024-02-12 Per discussione Mauro Casini
Marco Monti  writes:

> reg_cas=random.choice(reg_ita)
> naz_cas=random.choice(naz_eur)
> pro_cas=random.choice(pro_ita)
> cas_fin=random.choice(reg_cas+pro_cas+naz_cas)
> Da errore. Non so come fare

cas_lst = random.choice((reg_ita, naz_eur, pro_ita))
cas_fin = random.choice(cas_lst)

Mauro
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] LISTE E RANDOM

2024-02-12 Per discussione Marco Beri
Il giorno lun 12 feb 2024 alle ore 19:42 Mauro Casini <
ma...@iperbole.bologna.it> ha scritto:

> Marco Monti  writes:
>
> > reg_cas=random.choice(reg_ita)
> > naz_cas=random.choice(naz_eur)
> > pro_cas=random.choice(pro_ita)
> > cas_fin=random.choice(reg_cas+pro_cas+naz_cas)
> > Da errore. Non so come fare
>
> cas_lst = random.choice((reg_ita, naz_eur, pro_ita))
> cas_fin = random.choice(cas_lst)
>

Non è quello che vuole fare lui.

Lui vuole scegliere a caso tra reg_cas, naz_cas e pro_cas.

Ciao.
Marco.
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] LISTE E RANDOM

2024-02-12 Per discussione Mauro Casini
Marco Beri  writes:

>> cas_lst = random.choice((reg_ita, naz_eur, pro_ita))
>> cas_fin = random.choice(cas_lst)
>
> Non è quello che vuole fare lui.
>
> Lui vuole scegliere a caso tra reg_cas, naz_cas e pro_cas.

È la stessa cosa: un elemento casuale con prob. 1/3 reg, 1/3 naz, 1/3
pro.  È inutle sorteggiare un elemento da ogni lista per poi scartarne
due, basta estrarne uno solo da una lista scelta a caso fra le tre,

ciao,
Mauro
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] LISTE E RANDOM

2024-02-12 Per discussione Marco Beri
On Mon, 12 Feb 2024, 21:25 Mauro Casini,  wrote:

> Marco Beri  writes:
>
> >> cas_lst = random.choice((reg_ita, naz_eur, pro_ita))
> >> cas_fin = random.choice(cas_lst)
> >
> > Non è quello che vuole fare lui.
> >
> > Lui vuole scegliere a caso tra reg_cas, naz_cas e pro_cas.
>
> È la stessa cosa: un elemento casuale con prob. 1/3 reg, 1/3 naz, 1/3
> pro.  È inutle sorteggiare un elemento da ogni lista per poi scartarne
> due, basta estrarne uno solo da una lista scelta a caso fra le tre,
>


Ah, giusto. Sono stato avventato :-)

Così ti risparmi due random.choice.

Ciao.
Marco.
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] LISTE E RANDOM

2024-02-12 Per discussione Bruno Firmani
Altra possibilità.

Supponiamo di avere 20 regioni, 30 stati e 100 province.

Si scrivano le equazioni delle rette passanti per le coppie di punti:

( 0 , 0  ) - ( 20 , 1/3)
(20 , 1/3) - ( 50 , 2/3)
(50 , 2/3) - (150 , 1  )


Scelto un numero casuale w in ( 0 , 1 ) si stabilisce se è compreso da (0/1/3) 
o fra (1/3,2/2) oppure fra (2/3, 1 ).

Si calcola la corrispondente contro immagine e l’intervallo nel quale questa 
cade ci dà la regione o la nazione oppure la provincia cercata.

In questo modo si effettua un solo sorteggio.

Bruno Firmani




> Il giorno 12 feb 2024, alle ore 22:13, Marco Beri  ha 
> scritto:
> 
> On Mon, 12 Feb 2024, 21:25 Mauro Casini,  > wrote:
>> Marco Beri mailto:marcob...@gmail.com>> writes:
>> 
>> >> cas_lst = random.choice((reg_ita, naz_eur, pro_ita))
>> >> cas_fin = random.choice(cas_lst)
>> >
>> > Non è quello che vuole fare lui.
>> >
>> > Lui vuole scegliere a caso tra reg_cas, naz_cas e pro_cas.
>> 
>> È la stessa cosa: un elemento casuale con prob. 1/3 reg, 1/3 naz, 1/3
>> pro.  È inutle sorteggiare un elemento da ogni lista per poi scartarne
>> due, basta estrarne uno solo da una lista scelta a caso fra le tre,
> 
> 
> 
> Ah, giusto. Sono stato avventato :-)
> 
> Così ti risparmi due random.choice.
> 
> Ciao.
> Marco.
> 
> ___
> Python mailing list
> Python@lists.python.it 
> https://lists.python.it/mailman/listinfo/python

___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python