Re: [Python] Errore di semantica -
2015-06-25 8:56 GMT+02:00 Carpediem i.carped...@tiscali.it: Devo dire che questa lista di pytoniani è sempre più gradevolmente sorprendente:-) ... :-) Comunque http://itspython.com/ Ciao. Marco. -- http://beri.it/ - Un blog http://beri.it/i-miei-libri/ - Qualche libro http://beri.it/articoli/ - Qualche articolo ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Errore di semantica -
Il giorno 25 giugno 2015 01:23, Marco Beri marcob...@gmail.com ha scritto: 2015-06-25 1:22 GMT+02:00 Simone Federici s.feder...@gmail.com: Ma credo che le parole adatte siano quelle di Gandhi: La propensione dell'uomo a ingannare se stesso è immensamente superiore alla sua capacità d'ingannare il prossimo. Questa è una incredibile perla che non conoscevo. Grazie Simone. +1 Marco ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Errore di semantica -
Il 25/06/2015 01:22, Simone Federici ha scritto: Non ho mai capito se ci vuol più coraggio a tentare o ad arrendersi. :-) Cmq William Blake diceva: Chi manca di coraggio è esuberante d’astuzia. Ma credo che le parole adatte siano quelle di Gandhi: La propensione dell'uomo a ingannare se stesso è immensamente superiore alla sua capacità d'ingannare il prossimo. Devo dire che questa lista di pytoniani è sempre più gradevolmente sorprendente:-) ... ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Errore di semantica -
Il 25/06/2015 01:41, Marco Beri ha scritto: Io credo che sia giusto provare a scoprire cose nuove. Anche combattere contro dei mulini a vento se uno ci crede davvero. È perfino possibile tentare di quadrare il cerchio, ma solo se non si sa che è impossibile. Quando qualcuno ti rimanda a https://it.wikipedia.org/wiki/Quadratura_del_cerchio e tu insisti, allora non si tratta più di costanza o coraggio o inventiva o quant'altro ma solo di ottusità. Non me ne voglia (troppo) Carpediem. Ah, giusto, non avevo postato il link: https://en.wikipedia.org/wiki/Gambler's_fallacy https://en.wikipedia.org/wiki/Gambler%27s_fallacy La pagina italiana è meno completa ma comunque contiene la sostanza necessaria a comprendere perché è tempo perso provare a battere il banco: https://it.wikipedia.org/wiki/Fallacia_dello_scommettitore Ciao. Marco. Ciao Marco, forse, prima che finisca per passare per più scemo di quello che sono, è giusto che io chiarisca bene la mia posizione verso questo mio esperimento che, in primis, è nato come esercizio alla programmazione autoimposto. La consapevolezza che il banco giochi con la matematica a suo favore, mi appartiene. Sono consapevole, quindi, che chi gli giochi contro è in svantaggio rispetto alle aspettative di vincita a suo favore. Ne sono così convinto, che non ho mai messo piede in vita mia in un casinò nè mai una sola moneta nelle varie macchinette per il poker poste ormai in moltissimi locali in giro per l'Italia. Fermo restante la premessa, ho fatto questo ragionamento: scommettere al tavolo della roulette sull'uscita, per esempio, di un numero facente parte della prima dozzina, mi concede una possibilità di vincita su tre. Eventuale vincita che verrebbe pagata con importo doppio di quello puntato. Ora, è chiaro che teoricamente su cento giocate, tutte e cento potrebbero verificarsi con l'uscita addirittura dello stesso numero ma chi mai scommetterebbe su una ipotesi simile? Nel caso preso in esame (e questo giustifica la presenza di liste_in_ritardo) ho immaginato che un giocatore possa iniziare a giocare su ogni specifica possibile puntata, solo dopo il verificarsi consecutivo di una serie di eventi diversi da quello su cui si deciderà solo da un certo punto in poi a scommettere (nel caso, poniamo undici ritardi consecutivi). Tutto questo, per tentare di farsi aiutare, se non proprio dalla matematica, dalla statistica. dopo l'undicesimo ritardo consecutivo sul tipo di scommessa qui ipotizzato, ecco che il giocatore punta i suoi primi 10 euro che, poniamo, vengano persi. Alla scommessa successiva (con già dodici ritardi) il giocatore punterà altri 10 euro. In caso di vincita avrà un saldo attivo di 10 euro o al contrario, passivo di 20 euro. Alla scommessa successiva, ipotizzando una vincita che determini un attivo tra importi scommessi e somme incassate, il giocatore dovrebbe puntare 20 euro. Il gioco, così facendo, potrebbe andare avanti entro i limiti della puntata massima consentita, fino all'ipotesi di 22 ritardi consecutivi su un tipo di scommessa che in teoria, prevede il verificarsi dell'evento una volta su tre. Credo che questo ragionamento, porti non certo ad avere certezze di vincita ma sicuramente a portare le probabilità inizialmente a favore del banco, dalla parte del giocatore. Non si tratta quindi di sperare di Sbancare ma semplicemente di alzarsi dal tavolo di gioco dopo averci passato un po' di tempo e magari con poco più di un centinaio di euro in tasca rispetto a quelli con cui ci si è oresentati al tavolo da gioco. Ho già fatto molti tentativi che comunque, escludono ipotesi di scommesse su eventi sempre più improbabili dal verificarsi (parlo delle terzine e dei numeri singoli estratti) e ti assicuro, che i risultati ottenuti sono stati molto incoraggianti. L'utilizzo di un programma, conto possa aiutarmi a perfezionare la tecnica. Dopodichè, saprò dirti meglio; pronto anche a definire me, io stesso, un ottuso. Per ora, mi definisco semplicemente un testardo che prima di decidere di buttare anche solo dieci euro al gioco, ci pensa 100 volte. Insomma, sono consapevole che anche il più preciso dei pi non potrà mai determinare l'esatta riuscita del calcolo dell'area del cerchio ma il mio tentativo, è solo quello di avvicinarmici il più possibile. Tutto qui. Grazie per i link che hai postato. A presto ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Errore di semantica -
Il 25/06/2015 01:22, Simone Federici ha scritto: Ma credo che le parole adatte siano quelle di Gandhi: La propensione dell'uomo a ingannare se stesso è immensamente superiore alla sua capacità d'ingannare il prossimo. Sarebbe interessante sapere cosa pensava invece della donna :D ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Errore di semantica -
Diego Barrera: Sarebbe interessante sapere cosa pensava invece della donna :D Da quel poco che so su di lui, la parola Uomo qui presente è usata per essere umano. Quindi nessuna differenza per la donna in questo frangente. ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Errore di semantica -
On Jun 25, 2015 6:26 PM, Simone Federici s.feder...@gmail.com wrote: Enrico Franchi: Gli *unici* modi per vincere scientificamente devono uscire dal modello probabilistico astratto e considerare eventuali bias della ruota (che, come fa notare Marco e' qualcosa che i casino' monitorano attivamente per scongiurare) oppure la fisica del moto (essenzialmente calcolare dove andra' a finire la pallina e piazzare la scommessa prima che vengano chiuse ma quando si ha una probabilita' di vittoria piu' alta perche' si possono eliminare possibilita'). Guarda caso, ai casino' diventano nervosi se si fanno l'idea che stai facendo questa cosa. una telecamera che guarda la ruota mentre gira con la pallina e calcola dove andrà a finire? per questo mi sa che hanno già vietato i google glass nei casinò E comunque io faccio fatica a credere anche a questo. Ciao. Marco. ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Errore di semantica -
2015-06-25 8:57 GMT+01:00 Carpediem i.carped...@tiscali.it: Per ora, mi definisco semplicemente un testardo che prima di decidere di buttare anche solo dieci euro al gioco, ci pensa 100 volte. Allora usa la tua testardaggine per studiare un po' di probabilita'. Tra l'altro la roulette e' un gioco eccellente su cui applicarla perche' ha un modello molto molto semplice. Ora, lascia che ti dica una cosa: se giungi alla conclusione che *in media* puoi vincere, stai semplicemente sbagliando. O non hai capito la matematica, o non hai capito il gioco o non hai sbagliato il modo in cui hai modellato il problema. In primo luogo il gioco non e' equo (sebbene per poco). Il che vuole dire che il teorema ergodico ti sta semplicemente giocando contro. Non ci puoi fare sopra nulla. Nulla. Se vinci, e' per puro e semplice culo. Gli *unici* modi per vincere scientificamente devono uscire dal modello probabilistico astratto e considerare eventuali bias della ruota (che, come fa notare Marco e' qualcosa che i casino' monitorano attivamente per scongiurare) oppure la fisica del moto (essenzialmente calcolare dove andra' a finire la pallina e piazzare la scommessa prima che vengano chiuse ma quando si ha una probabilita' di vittoria piu' alta perche' si possono eliminare possibilita'). Guarda caso, ai casino' diventano nervosi se si fanno l'idea che stai facendo questa cosa. Te lo ripeto: credi quello che vuoi. Hai torto. -- . ..: -enrico- ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Errore di semantica -
2015-06-25 17:40 GMT+01:00 Marco Beri marcob...@gmail.com: una telecamera che guarda la ruota mentre gira con la pallina e calcola dove andrà a finire? per questo mi sa che hanno già vietato i google glass nei casinò E comunque io faccio fatica a credere anche a questo. Apparentemente c'e' gente che ha vinto dei soldi in questa maniera. Non e' necessario sapere esattamente dove finira'. Ma essenzialmente tu al casino perdi perche' il casino ha l'edge. Se riuscissi ad avere tu l'edge, andresti a vincere. Se, per intenderci, hai un sistema che ti permette di dire in quale spicchio di numeri la pallina cadra', tu avresti 1/5 di vincere, ma vinci sempre 30 e qualcosa volte quello che giochi. Puoi calcolare matematicamente il tempo medio di puntate che devi fare per avere una probabilita' del 99.9x9 di vincere (scegli il numero di 9 che vuoi). Io mi aspetto che sia fattibile. -- . ..: -enrico- ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Errore di semantica -
2015-06-25 18:51 GMT+02:00 enrico franchi enrico.fran...@gmail.com: 2015-06-25 17:40 GMT+01:00 Marco Beri marcob...@gmail.com: una telecamera che guarda la ruota mentre gira con la pallina e calcola dove andrà a finire? per questo mi sa che hanno già vietato i google glass nei casinò E comunque io faccio fatica a credere anche a questo. Apparentemente c'e' gente che ha vinto dei soldi in questa maniera. Non e' necessario sapere esattamente dove finira'. Ma essenzialmente tu al casino perdi perche' il casino ha l'edge. Se riuscissi ad avere tu l'edge, andresti a vincere. Sì, avevo letto. Però è tutto molto fumoso e, purtroppo, veramente poco documentato. Si fa fatica a capire cosa c'è di vero e cosa è solo bragging. Se, per intenderci, hai un sistema che ti permette di dire in quale spicchio di numeri la pallina cadra', tu avresti 1/5 di vincere, ma vinci sempre 30 e qualcosa volte quello che giochi. Puoi calcolare matematicamente il tempo medio di puntate che devi fare per avere una probabilita' del 99.9x9 di vincere (scegli il numero di 9 che vuoi). Io mi aspetto che sia fattibile. Certo, questo mi è chiaro :-) Affascinante. Ciao. Marco. ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Errore di semantica -
Enrico Franchi: Gli *unici* modi per vincere scientificamente devono uscire dal modello probabilistico astratto e considerare eventuali bias della ruota (che, come fa notare Marco e' qualcosa che i casino' monitorano attivamente per scongiurare) oppure la fisica del moto (essenzialmente calcolare dove andra' a finire la pallina e piazzare la scommessa prima che vengano chiuse ma quando si ha una probabilita' di vittoria piu' alta perche' si possono eliminare possibilita'). Guarda caso, ai casino' diventano nervosi se si fanno l'idea che stai facendo questa cosa. una telecamera che guarda la ruota mentre gira con la pallina e calcola dove andrà a finire? per questo mi sa che hanno già vietato i google glass nei casinò ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Errore di semantica -
2015-06-25 9:57 GMT+02:00 Carpediem i.carped...@tiscali.it: Non si tratta quindi di sperare di Sbancare ma semplicemente di alzarsi dal tavolo di gioco dopo averci passato un po' di tempo e magari con poco più di un centinaio di euro in tasca rispetto a quelli con cui ci si è oresentati al tavolo da gioco. Ho già fatto molti tentativi che comunque, escludono ipotesi di scommesse su eventi sempre più improbabili dal verificarsi (parlo delle terzine e dei numeri singoli estratti) e ti assicuro, che i risultati ottenuti sono stati molto incoraggianti. Di norma (e questa è l'ultima cosa che ti dico :-) questi sistemi funzionano per il 99% delle volte ma in quell'1% contrario il banco ti sottrae tutto quello che hai vinto prima con l'aggiunta della sua cagnotte. E quell'1% alla lunga accade sempre. Sempre. L'unico modo per battere la roulette nell'arco della tua vita è entrare in un casinò, puntare la puntata minima su 35 numeri a caso, sperare che non esca uno degli altri 2, uscire con la vincita equivalente alla puntata minima e non giocare *MAI PIÙ* per tutta la vita alla roulette. Rispondo ad una domanda lecita ma che nessuno ha ancora fatto: perché vado al casinò una volta all'anno nonostante sappia di non poter vincere alla lunga? Perché mi piace l'emozione degli attimi prima dell'uscita di un numero e, quando va bene, quella degli attimi dopo. In fondo anche andare al cinema o leggere un libro ha un costo in cambio di emozioni. Ciao. Marco. -- http://beri.it/ - Un blog http://beri.it/i-miei-libri/ - Qualche libro http://beri.it/articoli/ - Qualche articolo ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Errore di semantica -
Il giorno 25 giugno 2015 01:41, Marco Beri marcob...@gmail.com ha scritto: Io credo che sia giusto provare a scoprire cose nuove. Anche combattere contro dei mulini a vento se uno ci crede davvero. È perfino possibile tentare di quadrare il cerchio, ma solo se non si sa che è impossibile. Quando qualcuno ti rimanda a https://it.wikipedia.org/wiki/Quadratura_del_cerchio e tu insisti, allora non si tratta più di costanza o coraggio o inventiva o quant'altro ma solo di ottusità. Non me ne voglia (troppo) Carpediem. Ah, giusto, non avevo postato il link: https://en.wikipedia.org/wiki/Gambler's_fallacy La pagina italiana è meno completa ma comunque contiene la sostanza necessaria a comprendere perché è tempo perso provare a battere il banco: https://it.wikipedia.org/wiki/Fallacia_dello_scommettitore A tutto ciò aggiungerei che la questione dei numeri ritardatari sia una trappola vincente per il banco. Pensiamo al lotto, se il 90% dei giocatori puntasse sullo stesso numero perchè ritardatario, si avrebbe una distribuzione di giocate concentrate su un numero che ha la stessa probabilità di uscire degli altri 89. Se il numero non esce, il banco non pagherà nessuno dei giocatori e in più i giocatori saranno invogliati a rigiocare lo stesso numero perchè sono aumentate le settimane di ritardo. E' vero che quando e se il numero uscirà il banco forse sarà sbancato, ma nel frattempo avrà accumulato tante puntate concentrate su quel numero che sarà irrilevante la perdita finale. Quindi i numeri ritardatari migliorano le prestazioni del banco, che già ha migliori probabilità di vincere senza questo aiutino ulteriore. Ciao ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Errore di semantica -
Il 25/06/2015 01:13, Marco Beri ha scritto: Se tu avessi scritto variabile = 1 ti avrebbe sorpreso che fosse sempre posta a 1? Credo di no. Se tu avessi scritto variabile = -1 ti avrebbe sorpreso che fosse sempre posta a -1? Credo di no. Ma allora perché se scrivi variabile = +1 ti sorprende che venga sempre posta a 1? Ciao. Marco. Chiaro, Ho capito. Grazie!!! ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Errore di semantica -
@Marco Beri, ahaha ti stavi giustificando per le tue scappatelle al casinò? :D Io non ci sono mai stato, ma potrei andarci. E ovviamente ci andrei per lo stesso motivo: per divertirmi, non per vincere... Quella sarebbe un'illusione. La consapevolezza che il banco giochi con la matematica a suo favore, mi appartiene. Sono consapevole, quindi, che chi gli giochi contro è in svantaggio rispetto alle aspettative di vincita a suo favore. Ne sono così convinto, Non ne sei troppo convinto se cerchi di vincere usando una strategia come quella che esponi qui sotto :) Se il banco vince sempre, vuol dire che vince sempre, non sempre a meno di un giocatore intelligente. Quindi, la tua strategia è quella di dire: aspetto un evento che è più probabile che esca, tipo l'uscita di un numero/colonna ritardatario/a. Poi dopo un certo numero di volte che non esce, inizio a puntare. Se perdo, la volta dopo punto il doppio, così mi ripago delle perdite precedenti, e avanti così. Marco ha già dato una risposta, ma io - che ho un debole per il calcolo delle probabilità - aggiungerò altro. La tua strategia non è nuova, e anzi esiste dal 1700... È abbastanza naturale, secondo me, arrivare a questa idea, e persino io quando ho studiato i giochi d'azzardo ci sono arrivato (solo che non ho dovuto fare un programma per convincermi che non era fattibile :D). Il concetto si chiama Martingala: https://it.wikipedia.org/wiki/Martingala_%28matematica%29 https://en.wikipedia.org/wiki/Martingale_%28betting_system%29 L'osservazione fondamentale è: la strategia funziona se hai il portafoglio illimitato. Ovvero: non puoi viverci. Ovvero: se hai tanti soldi puoi bilanciare la sfiga fino ad un certo punto, ma non puoi arricchirti. E comunque se hai tanti soldi non vai al casinò per farne altri. L'osservazione pratica è: se esiste dal 1700 e i casinò esistono ancora e vincono ancora, significa che empiricamente non funziona :) Per quanto riguarda i numeri ritardatari... Gianluca ha fatto un discorso che ha senso dal punto di vista della distribuzione, che è interessante, e ha centrato il punto: tutti i numeri hanno, ad ogni giocata, la stessa probabilità di essere estratti. Questo vuol dire che fondamentalmente puoi applicare la tua strategia anche appena arrivi al banco, senza tener conto dei ritardatari. Il concetto a cui fai riferimento, cioé prima o poi deve uscire, che è ciò che spinge a studiare i numeri ritardatari, è valida: solo che la legge dei grandi numeri è, appunto, sui grandi numeri, che non sono 20 giocate, ma sono - di solito - almeno 30. Non puoi raddoppiare abbastanza volte da avere un margine di sicurezza sensato per giocare, semplicemente perché c'é un limite alla posta. Divertiti pure a programmare, ma sappi che la strategia non ti porterà da nessuna parte (a parte una piccola soddisfazione intellettuale, certo, ma da quel che leggo sembra che tu ambisca a vincere qualche soldino). Ciauz ~Ale ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Errore di semantica -
2015-06-25 10:43 GMT+02:00 Alessandro Re a...@ale-re.net: @Marco Beri, ahaha ti stavi giustificando per le tue scappatelle al casinò? :-) L'osservazione fondamentale è: la strategia funziona se hai il portafoglio illimitato. Non solo: anche la puntata deve essere possibilmente illimitata. Infatti il banco si difende comunque, limitando la puntata, da un eventuale ipotetico giocatore con portafoglio infinito. Ovvero: non puoi viverci. Ovvero: se hai tanti soldi puoi bilanciare la sfiga fino ad un certo punto, ma non puoi arricchirti. In realtà se hai portafoglio illimitato e un gioco con puntata illimitata puoi guadagnare infiniti soldi. Certo hai ragione: se hai già un portafoglio illimitato che te ne fai di infiniti soldi? :-D Ciao. Marco. -- http://beri.it/ - Un blog http://beri.it/i-miei-libri/ - Qualche libro http://beri.it/articoli/ - Qualche articolo ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Errore di semantica -
2015-06-25 9:57 GMT+02:00 Carpediem i.carped...@tiscali.it: utto questo, per tentare di farsi aiutare, se non proprio dalla matematica, dalla statistica. Pardonez moi ma ti rimanderei alla visione del bellissimo Rosencrantz e Guilderstern sono morti * per quanto riguarda le percentuali di ritardo. A ogni estrazione le probabilita' sono le stesse. Sic et simpliciter. In un corso che ho tenuto (casi delal vita in Python) abbiamo realizzato un semplice simulatore di SuperEnalotto. Posta una giocata di 6 numeri fissi abbiamo simulato 100,000 estrazioni del lotto prendenodo i primi estratti delle sei ruote che si usano per il superenalotto appunto (inclusa la regola di prendere il secondo estratto qualora il rpimo fosse gia stato estratto su altra ruota) e testato le percentuali di vincita (per comodita' abbiamo eliminato il 5+1) per 3,4,5,6. 6 mai beccato, un 5 una volta o due (su 100,000 estrazioni ricordo che sono quelle che si hanno in oltre 660 anni considerando 3 estrazioni settimanali) mentre 4 abbastanza alti e 3 elevatissimi. Comunque assegnado una vincita media a ciascun risultato utile e ponendio di giocare solo 50 cent (in realta' si giocano 2 colonne per 1 euro minimo) ci abbiamo rimesso alla grande (in senso simulato). La statistica e' una cosa, il calcolo delle probabilita' una cosa differente. Mi spiace ma potrebbe uscire 1000 volte di seguito croce (come nel citato film) e a ogni lancio le probabilita' (posto che chi lancia non bari) sono le stesse: 50%. * Erano gli amici di Amleto. Carlos -- EZLN ... Para Todos Todo ... Nada para nosotros ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Errore di semantica -
On Jun 24, 2015 8:50 AM, Marco Beri marcob...@gmail.com wrote: On Jun 24, 2015 8:28 AM, Simone Federici s.feder...@gmail.com wrote: Marco Baro: Rotfl! Solo ora ho visto... ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Errore di semantica -
On Jun 24, 2015 8:49 AM, Daniele Zambelli daniele.zambe...@gmail.com wrote: La matematica non credo, ma forse la fisica potrebbe aiutare. Daniele, hai ragione, ma per evitare anche questo problema le uscite della roulette sono monitorate costantemente e non appena viene notato uno scostamento da una normale distribuzione statistica (da un programma ovviamente) la roulette viene fatta controllare e ritirare. C'è una storia su come sono state cambiate le regole del black jack per non favorire i giocatori che è molto istruttiva, ma sarei troppo OT. Ciao. Marco. ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Errore di semantica -
On Jun 24, 2015 2:41 AM, Alessandro Re a...@ale-re.net wrote: E non solo ti dirò dove sbagli per l'errore che descrivi, ma per gli altri mille peccati capitali che hai commesso nel codice :D ahahah Aggiungo un commento anche io, ma solo perché da giovane mi sono illuso fino a che ho studiato un po' più seriamente la questione. Se stai scrivendo questo programma per diletto vai pure avanti e divertiti. Ma se pensi che la roulette sia battibile con un qualsiasi sistema, rinuncia: la matematica ti condanna alla sconfitta. Per poter vincere dovresti avere capitale infinito e puntate non limitate. Cose false entrambe. Ciao. Marco. P.s. Oltre al fatto che è vietato usare un computer al casinò. ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
[Python] Errore di semantica -
Marco Baro: Ma se pensi che la roulette sia battibile con un qualsiasi sistema, rinuncia: la matematica ti condanna alla sconfitta. Per poter vincere dovresti avere capitale infinito e puntate non limitate. Cose false entrambe. Tieni per te le tue paure, ma condividi con gli altri il tuo coraggio. (Robert Louis Stevenson) -- Simone Federici Software Craftsman XP, Agile, Scrum, Kanban Quality, performance security Explicit is better than implicit. ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Errore di semantica -
On Jun 24, 2015 8:28 AM, Simone Federici s.feder...@gmail.com wrote: Marco Baro: Ma se pensi che la roulette sia battibile con un qualsiasi sistema, rinuncia: la matematica ti condanna alla sconfitta. Per poter vincere dovresti avere capitale infinito e puntate non limitate. Cose false entrambe. Tieni per te le tue paure, ma condividi con gli altri il tuo coraggio. (Robert Louis Stevenson) Queste non sono paure (vado ancora al casinò una volta l'anno) ma è semplice conoscenza. Tra l'altro è conoscenza cassandresca nel senso che l'avrò detto cento volte ma nessuno mai mi ha ascoltato. L'illusione di poter battere il banco è dura a morire. Ciao. Marco. ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Errore di semantica -
Il 24 giugno 2015 08:21, Marco Beri marcob...@gmail.com ha scritto: Ma se pensi che la roulette sia battibile con un qualsiasi sistema, rinuncia: la matematica ti condanna alla sconfitta. Per poter vincere dovresti avere capitale infinito e puntate non limitate. Cose false entrambe. Odio il gioco d'azzardo. Io a naso punterei sui numeri che escono più spesso piuttosto che sui ritardatari. La matematica non credo, ma forse la fisica potrebbe aiutare. Un sorriso. -- Daniele www.fugamatematica.blogspot.com giusto! nel verso forse è perché non guardiamo le cose Quando non ci capiamo, ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Errore di semantica -
Il 24/06/2015 08:28, Simone Federici ha scritto: Marco Baro: Ma se pensi che la roulette sia battibile con un qualsiasi sistema, rinuncia: la matematica ti condanna alla sconfitta. Per poter vincere dovresti avere capitale infinito e puntate non limitate. Cose false entrambe. Tieni per te le tue paure, ma condividi con gli altri il tuo coraggio. (Robert Louis Stevenson) Incoraggiante!!! -- Simone Federici Software Craftsman XP, Agile, Scrum, Kanban Quality, performance security Explicit is better than implicit. ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Errore di semantica -
Il 24/06/2015 08:21, Marco Beri ha scritto: On Jun 24, 2015 2:41 AM, Alessandro Re a...@ale-re.net mailto:a...@ale-re.net wrote: E non solo ti dirò dove sbagli per l'errore che descrivi, ma per gli altri mille peccati capitali che hai commesso nel codice :D ahahah Aggiungo un commento anche io, ma solo perché da giovane mi sono illuso fino a che ho studiato un po' più seriamente la questione. Se stai scrivendo questo programma per diletto vai pure avanti e divertiti. Ma se pensi che la roulette sia battibile con un qualsiasi sistema, rinuncia: la matematica ti condanna alla sconfitta. Per poter vincere dovresti avere capitale infinito e puntate non limitate. Cose false entrambe. Ciao. Marco. P.s. Oltre al fatto che è vietato usare un computer al casinò. Ho testato quello che ho in mente di scrivere facendo delle simulazioni che mi sono costate tanta costanza e fatica (valle a controllare tutte le variabili con carta e penna ad ogni mano). Se riesco a realizzare ciò che ho in mente, mi ricorderò di chiederti di farmi una simulazione da croupier. So di apparire come uno sprovveduto ma io sto tentando di mettere in pratica l'opportunità che proprio la matematica e il calcolo delle probabilità offrono. Ad ogni modo, arrivare in fondo sarà stato un buon esercizio di programmazione. Le regole del casinò le ho studiate e mi spiace solo di non poter contare su una puntata massima appena superiore ai 600 euro. Per quanto riguarda il capitale, tremila euro sono sufficienti per avere buone possibilità di riuscire. Per il resto, serve la consapevolezza che ci si deve sedere al tavolo con l'obiettivo di alzarsi appena si è raggiunto il limite auto imposto per la perdita o per la vincita. Per quanto riguarda l'uso del computer, è chiaro che non ho certo immaginato qualcuno che possa sedersi al tavolo con il pc tra le dita ... Ti saprò dire ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Errore di semantica -
Il 24/06/2015 22:08, Alessandro Re ha scritto: Il punto è che la variabile viene messa*sempre* a 1 da quel codice, quindi se devi passare da 0 a 1 il codice funziona, ma se devi passare da 1 a 2 o da N a N+1, non funzionerà:) La cosa che ancora mi sorprende è proprio il motivo per cui la variabile sia posta sempre a 1. Ad ogni modo, tutto quanto mi hai spiegato sarà da me messo sotto test in modo da essere sicuro di riuscire a metabolizzarlo. Grazie ancora. Davvero non speravo di rimediare così tante e dettagliate informazioni. =-O ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Errore di semantica -
On Wednesday 24 June 2015 22:41:37 Carpediem wrote: So di apparire come uno sprovveduto ma io sto tentando di mettere in pratica l'opportunità che proprio la matematica e il calcolo delle probabilità offrono. Marco Beri ti ha già fatto notare la cosa. Personalmente non conosco le regole della roulette, ma di certo non è un sistema a memoria per cui la tua modellizzazione va rivista, no? Mi riferisco a `liste_in_ritardo` in particolare. -- Daniele Tricoli 'Eriol' https://mornie.org ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Errore di semantica -
2015-06-24 23:51 GMT+02:00 Carpediem i.carped...@tiscali.it: Il 24/06/2015 22:08, Alessandro Re ha scritto: Il punto è che la variabile viene messa **sempre** a 1 da quel codice, quindi se devi passare da 0 a 1 il codice funziona, ma se devi passare da 1 a 2 o da N a N+1, non funzionerà :) La cosa che ancora mi sorprende è proprio il motivo per cui la variabile sia posta sempre a 1. Ad ogni modo, tutto quanto mi hai spiegato sarà da me messo sotto test in modo da essere sicuro di riuscire a metabolizzarlo. Grazie ancora. Davvero non speravo di rimediare così tante e dettagliate informazioni. =-O Se tu avessi scritto variabile = 1 ti avrebbe sorpreso che fosse sempre posta a 1? Credo di no. Se tu avessi scritto variabile = -1 ti avrebbe sorpreso che fosse sempre posta a -1? Credo di no. Ma allora perché se scrivi variabile = +1 ti sorprende che venga sempre posta a 1? Ciao. Marco. ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Errore di semantica -
2015-06-25 1:30 GMT+02:00 Daniele Tricoli er...@mornie.org: On Wednesday 24 June 2015 22:41:37 Carpediem wrote: So di apparire come uno sprovveduto ma io sto tentando di mettere in pratica l'opportunità che proprio la matematica e il calcolo delle probabilità offrono. Marco Beri ti ha già fatto notare la cosa. Personalmente non conosco le regole della roulette, ma di certo non è un sistema a memoria per cui la tua modellizzazione va rivista, no? Mi riferisco a `liste_in_ritardo` in particolare. Io credo che sia giusto provare a scoprire cose nuove. Anche combattere contro dei mulini a vento se uno ci crede davvero. È perfino possibile tentare di quadrare il cerchio, ma solo se non si sa che è impossibile. Quando qualcuno ti rimanda a https://it.wikipedia.org/wiki/Quadratura_del_cerchio e tu insisti, allora non si tratta più di costanza o coraggio o inventiva o quant'altro ma solo di ottusità. Non me ne voglia (troppo) Carpediem. Ah, giusto, non avevo postato il link: https://en.wikipedia.org/wiki/Gambler's_fallacy La pagina italiana è meno completa ma comunque contiene la sostanza necessaria a comprendere perché è tempo perso provare a battere il banco: https://it.wikipedia.org/wiki/Fallacia_dello_scommettitore Ciao. Marco. -- http://beri.it/ - Un blog http://beri.it/i-miei-libri/ - Qualche libro http://beri.it/articoli/ - Qualche articolo ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Errore di semantica -
On Thursday 25 June 2015 01:41:49 Marco Beri wrote: Io credo che sia giusto provare a scoprire cose nuove. Anche combattere contro dei mulini a vento se uno ci crede davvero. Sì, concordo in pieno, però essendo il nostro tempo limitato magari può risultare più interessante dedicarsi al problema nella giusta ottica. La teoria della probabilità nella definizione assiomatica di Kolmogorow, a mio avviso, è veramente bella, e anche solo per diletto merita di essere esplorata. Questo libro ha un taglio pratico (io preferisco partire dalla teoria), ma èinteressante (e guarda caso utilizza Python :D): http://greenteapress.com/thinkstats2/index.html Ognuno è libero di investire il proprio tempo come ritiene più opportuno. Il mio è semplicemente un consiglio spassionato per Carpediem. -- Daniele Tricoli 'Eriol' https://mornie.org ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Errore di semantica -
Carpediem: Tieni per te le tue paure, ma condividi con gli altri il tuo coraggio. (Robert Louis Stevenson) Incoraggiante!!! Non ho mai capito se ci vuol più coraggio a tentare o ad arrendersi. :-) Cmq William Blake diceva: Chi manca di coraggio è esuberante d’astuzia. Ma credo che le parole adatte siano quelle di Gandhi: La propensione dell'uomo a ingannare se stesso è immensamente superiore alla sua capacità d'ingannare il prossimo. ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Errore di semantica -
2015-06-25 1:22 GMT+02:00 Simone Federici s.feder...@gmail.com: Ma credo che le parole adatte siano quelle di Gandhi: La propensione dell'uomo a ingannare se stesso è immensamente superiore alla sua capacità d'ingannare il prossimo. Questa è una incredibile perla che non conoscevo. Grazie Simone. Ciao. Marco. ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Errore di semantica -
Il 24/06/2015 02:41, Alessandro Re ha scritto: Se la roulette avesse avuto 1 numeri cosa facevi, li elencavi uno per uno? :P Usa tuple(range(37)) anziché quell'elenco che hai scrtto. *Ciao Alessandro, innanzitutto grazie infinite. La tua risposta non solo mi ha risolto il problema ma mi ha aperto molti altri orizzonti:** **quello sopra, è uno di questi ma, come avrai capito, sono alle prime armi con python e lavorando per 9 ore al giorno per 6 giornia settimana,** **i miei progressi sono molto lenti. Ho molte idee per la testa e provo a metterle in pratica con quel poco che ho finora acquisito. Quanto sopra, mi piace molto.* passe = (19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36) manque = (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18) Per questi usa tuple(range(19, 37)) e tuple(range(1, 19)). *Vedi sopra!!!* Questa sfilza di stringhe potresti formattarla meglio, come ad esempio puntate_possibili = ( passe, manque, pari, dispari, nero, rosso, prima ecc, anche se esce una cosa lunghissima, personalmente preferisco un codice più lungo e leggibile che di qualche riga in meno e che mi fa incrociare gli occhi. *Qui non ti seguo: in realtà il mio codice prevede una ulteriore lista di altre 65 variabili (che mi sono risparmiato dal** **riportare) e sinceramente, ritengo l'insieme troppo lungo per scriverlo riga per riga)* Ho notato che usi un sacco di print(); non voglio dirti che è una cosa brutta, ma personalmente non mi piace mischiare gli stili: o usi una print per ogni riga, o usi \n in una print sola. Io andrei di una print per ogni riga. Ti consiglio, molto umilmente, di adottare uno stile ed essere coerente ad esso. *Hai assolutamente ragione!!!* capitale_disponibile = eval(input(Per cominciare, indicami l'importo che intendi mettere a disposizione per il gioco (si consiglia almeno 2500 Euro) )) eval(input()) è una cosa che vuoi evitare quasi sempre. Non usarlo. Usa int(input()) se vuoi ottenere un intero oppure usa usa ast.literal_eval(input()). *Colpa delle prime iniziali informazioni acquisite con python 3: terrò conto del tuo consiglio* Esistono opzioni migliori per formattare incolonnando. Esempio: print('Valore: {:12} Valore {:8}'.format(4, 123)) Usa format() e tutte le sue belle opzionI: *Per me è una cosa ignorata, grazie dell'informazione!* Se passe e manque e tutti_i_numeri li usi solo per tenere elenchi di numeri, puoi fare 2 cose per migliorare il tuo codice: 1. usare set() anziché tuple(). Set è molto più veloce per vedere se un elemento è al suo interno, rispetto a tuple, e la sintassi valore in insieme è invariata e molto gradevole da leggere. Quindi, anziché usare tuple(range(37)), usa set(range(37)). Se, invece, la tupla ti serve perché è ordinata (set non preserva l'ordine), allora tieni la tupla. *Vedi sopra* uscita_manque =+1 E questa riga credo sia l'origine del tuo baco. Più volte nel codice scrivi variabile =+1 e secondo me tu stai cercando di ottenere variabile = variabile + 1 ma forse non sai, o non ti sei accorto, che l'operatore += è ben diverso dai due operatori =+. a += b vuol dire a = a + b a =+ b vuol dire a = (+b) cioé a = b (+ indica il segno del numero). *E qui casca l'asino L'errore era proprio questo e a questo punto non si trattava quindi di un errore** **di semantica. Non riesco ancora bene a spiegarmi il perchè al primo passaggio in effetti il valore della** **variabile aumenti di una unità (così come da me voluto) e poi tale valore resti invariato al passsaggio successivo** **nè capisco perchè python preveda, a questo punto, l'utilizzo di una forma di scrittura così come involontariamente** **io l'abbia scritta. Ad ogni modo, per non sbagliare, +1 = forever* ultimo appunto: in genere è buona cosa fare controllo indipendenti dalle maiuscole e dalle minuscole. Quindi: prosegui_gioco = input('Blah).lower() così se l'utente inserisce SI o Si, il codice funziona comunque e non è necessario scrivere tutto in minuscolo. *Anche questo, merita tutto il mio apprezzamento* Spero di averti risolto il problema e ti averti dato qualche dritta :P *Problema risolto e sei stato un insegnante completo ed esaustivo.** **Il codice che girava senza segnalare errori ma col risultato non voluto, era diventato frustrante.** Avrei trascorso settimane prima di scoprire l'errore da solo e non sono neanche sicuro che così sarebbe andata a finire. **Grazie infinite** * ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Errore di semantica -
2015-06-24 20:41 GMT+01:00 Carpediem i.carped...@tiscali.it: Ciao Alessandro, innanzitutto grazie infinite. La tua risposta non solo mi ha risolto il problema ma mi ha aperto molti altri orizzonti: quello sopra, è uno di questi ma, come avrai capito, sono alle prime armi con python e lavorando per 9 ore al giorno per 6 giornia settimana, i miei progressi sono molto lenti. Ho molte idee per la testa e provo a metterle in pratica con quel poco che ho finora acquisito. Quanto sopra, mi piace molto. Ciao, sì, avevo intuito e per questo ti ho dato qualche consiglio di altro tipo :) Bene se ti è utile. Qui non ti seguo: in realtà il mio codice prevede una ulteriore lista di altre 65 variabili (che mi sono risparmiato dal riportare) e sinceramente, ritengo l'insieme troppo lungo per scriverlo riga per riga) Ok, è questione di gusti :) Comunque, dato che hai diverse stringhe composte tipo carre 1a3, carre 2a6, oppure prima sestina, seconda sestina, prima colonna, seconda colonna, potresti anche valutare, per risparmiare righe, di costruire quelle frasi in modo algoritmico (dove puoi). Quindi, per esempio, per le prime 3 colonne e 3 sestine puoi fare: def genera_combinazioni(parole_prima, parole_seconda): return tuple(' '.join(x) for x in product(parole_prima.split(), parole_seconda.split())) genera_combinazioni('prima seconda terza', 'prima seconda') per ottenere ('prima sestina', 'prima colonna', 'seconda sestina', 'seconda colonna', 'terza sestina', 'terza colonna') Ora, questo metodo ti può salvare qualche riga e qualche errore di battitura (o moltiplicarli :D), ma non credo sia davvero conveniente nel tuo caso. Per evitare la bruttezza nel codice, e anche per facilitare la traduzione in altre lingue, di solito si usa mettere tutte le stringhe in un file (uno per ogni lingua da tradurre) e, nel tuo codice, leggere quel file. Nel tuo caso, mettere le stringhe in un file semplifica molto la lettura del codice, però hai lo svantaggio di dover aver sempre dietro il file in questione. Per leggere il file ed ottenere una tupla, dove ogni riga è una stringa, basta fare: with open('file_stringhe.txt') as fp: puntate_possibili = tuple(line.strip() for line in fp) attento che usare .strip() rimuove tutti gli spazi (incluse le new line) a destra e a sinistra della stringa, ti dico questa cosa, ma probabilmente ti va benissimo così :) E qui casca l'asino L'errore era proprio questo e a questo punto non si trattava quindi di un errore di semantica. Non riesco ancora bene a spiegarmi il perchè al primo passaggio in effetti il valore della variabile aumenti di una unità (così come da me voluto) e poi tale valore resti invariato al passsaggio successivo Il punto è che la variabile viene messa *sempre* a 1 da quel codice, quindi se devi passare da 0 a 1 il codice funziona, ma se devi passare da 1 a 2 o da N a N+1, non funzionerà :) nè capisco perchè python preveda, a questo punto, l'utilizzo di una forma di scrittura così come involontariamente io l'abbia scritta. Ad ogni modo, per non sbagliare, +1 = forever Aspetta, forse ho capito male, ma +1 = è sbagliato in python: attento a non confondere il + di +1 col segno positivo (contrapposto al segno negativo dei numeri -1, -2, -3...), al fatto che l'operatore += è composto da due caratteri. Scrivere (metto gli spazi per farti capire quali sono le entità in gioco) A+=B è come scrivere A=A + B Se scrivi A+=B hai errore: += è un operatore vero e proprio e deve essere scritto attaccato. Invece, il + che precede un numero per indicare il segno positivo, può essere separato. Scrivere A += + B ha perfettamente senso, e il secondo + davanti a B è solo ridondante... Fondamentalmente, python permette di scrivere A =+1 perché +1 è un numero, e lo spazio tra l'uguale e il numero +1 non ha importanza :) A=1, A = 1, A=+ 1, A = + 1 son tutte cose uguali. Insomma, tu devi scrivere qualcosa come [variabile] [operatore] [valore] variabile è uscita_manque operatore è += (senza spazi) valore è 1 (o +1, è indifferente) se scrivi uscita_manque +1 = ottieni [variabile] [valore] [operatore] che in Python non funziona. Comunque, ti ho scritto 'sta spataffiata perché hai scritto +1 =, ma magari avevi già capito. Se vuoi toglierti ogni dubbio usa variabile = variabile + valore e vivi felice :D Ciauz ~Ale ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
[Python] Errore di semantica -
Scusate ma ci sto sbattendo la testa da 5 giorni e non riesco a capire dov'è che sbaglio. Sto testando queste poche righe di codice e quando il programma mi chiede quale sia il numero uscito, scrivo 19 e proseguendo, nella schermata di riepilogo successiva mi ritrovo, così come mi aspetto, che il ritardo di uscita manque sia incrementato di 1. Potete dirmi per cortesia, per quale diavolo di errore ripetendo l'inserimento sempre dello stesso numero, nella schermata di riepilogo successiva invece di ritrovarmi con il ritardo di uscita manque a 2 me lo ritrovo fermo a 1? Ho seguito i passaggi uno ad uno anche con carta e penna, ho modificato il codice più volte ma alla fine ottengo sempre lo stesso non voluto risultato. Mi aiutate a capire? Grazie uscita_passe =0 uscita_manque =0 scommessa_semplice = (passe,manque) scommessa_passe =0 scommessa_manque =0 tutti_i_numeri = (0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36) passe = (19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36) manque = (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18) liste_in_ritardo = [] puntate_possibili = (passe,manque,pari,dispari,nero,rosso,prima dozzina,seconda dozzina,terza dozzina,prima colonna,seconda colonna,terza colonna,prima sestina,seconda sestina,terza sestina,quarta sestina,quinta sestina,sesta sestina,\ settima sestina,ottava sestina,nona sestina,decima sestina,undicesima sestina,quattro primi,carre 1a5,carre 2a6,carre 4a8,carre 5a9,carre 7a11,carre 8a12,carre 10a14,carre 11a15,carre 13a17,carre 14a18,carre 16a20,carre 17a21,\ carre 19a23,carre 20a24,carre 22a26,carre 23a27,carre 25a29,carre 26a30,carre 28a32,carre 29a33,carre 31a35,carre 32a36) print(Attenzione: stiamo facendo riferimento alle regole della Roulette francese.) print(Si presuppone, come previsto ad esempio al Casino' di Venezia, che la puntata minima accettata\nsia di 10 Euro e la massima di 600. Si ritiene scontato, inoltre, che il giocatore\nsegua rigorosamente i suggerimenti che verranno evidenziati dal programma.) print() capitale_disponibile =eval(input(Per cominciare, indicami l'importo che intendi mettere a disposizione per il gioco (si consiglia almeno 2500 Euro))) print() inizio_gioco =0 giocate_effettuate =0 whileinizio_gioco ==0: print(A seguire, l'elenco delle puntate possibili considerate da questo programma e l'attuale situazione del gioco:) print() print(Giocata+(()*17),ritardi di uscita+(()*6),Giocata+(()*17),ritardi di uscita+(()*8)) print(\npasse+(()*27),uscita_passe,(()*13),manque+(()*26),uscita_manque) print() iflen(liste_in_ritardo) ==0: print(Al momento non ho scommesse da suggerirti: salta la mano e) eliflen(liste_in_ritardo) 0: ifuscita_manque =8: print(I numeri da 1 a 18 (manque) sono in ritardo da,uscita_manque,estrazioni) elifuscita_passe =8: print(I numeri da 19 a 36 (passe) sono in ritardo da, uscita_passe,estrazioni) controllo_numero_uscito =0 whilecontrollo_numero_uscito ==0: numero_uscito =eval(input(indica il numero uscito)) print() ifnumero_uscitonot intutti_i_numeri: print(Devi inserire un numero compreso tra 0 e 36) elifnumero_uscitointutti_i_numeri: conferma_numero_uscito =input(Sei sicuro di aver inserito il numero giusto? si/no) print() ifconferma_numero_uscito ==no: print() elifconferma_numero_uscito ==si: controllo_numero_uscito =+1 else: print(Per confermare o smentire devi scrivere si o no) ifnumero_uscitoinpasse: uscita_passe =0 uscita_manque =+1 print() print(E' appena uscito un numero del gruppo passe,,) ifuscita_passeinliste_in_ritardo: delliste_in_ritardo[uscita_passe] ifuscita_manque ==8: liste_in_ritardo.append(uscita_manque) elifnumero_uscitoinmanque: uscita_manque =0 uscita_passe =+1 print() print(E' appena uscito un numero del gruppo manque,,) ifuscita_manqueinliste_in_ritardo: delliste_in_ritardo[uscita_manque] ifuscita_passe ==8: liste_in_ritardo.append(uscita_passe) controllo_prosegui_gioco =0 whilecontrollo_prosegui_gioco ==0: prosegui_gioco =input(Vuoi continuare a giocare? si/no) ifprosegui_gioco ==si: print() controllo_prosegui_gioco =+1 giocate_effettuate =+1 elifprosegui_gioco ==no: inizio_gioco =+1 print(Ok, spero tu ti sia divertito; arrivederci) controllo_prosegui_gioco =+1 else: print(Devi rispondere si o no) ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Errore di semantica -
2015-06-24 0:19 GMT+01:00 Carpediem i.carped...@tiscali.it: Ho seguito i passaggi uno ad uno anche con carta e penna, ho modificato il codice più volte ma alla fine ottengo sempre lo stesso non voluto risultato. Mi aiutate a capire? Ciao, ti dirò dove secondo me stai sbagliando, anche se non conosco la roulette. E non solo ti dirò dove sbagli per l'errore che descrivi, ma per gli altri mille peccati capitali che hai commesso nel codice :D ahahah uscita_passe = 0 uscita_manque = 0 scommessa_semplice = (passe,manque) scommessa_passe = 0 scommessa_manque = 0 tutti_i_numeri = (0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24! ,25,26,27,28,29,30,31,32,33,34,35,36) Se la roulette avesse avuto 1 numeri cosa facevi, li elencavi uno per uno? :P Usa tuple(range(37)) anziché quell'elenco che hai scrtto. passe = (19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36) manque = (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18) Per questi usa tuple(range(19, 37)) e tuple(range(1, 19)). liste_in_ritardo = [] puntate_possibili = (passe,manque,pari,dispari,nero,rosso,prima dozzina,seconda dozzina,terza dozzina,prima colonna,seconda colonna,terza colonna,prima sestina,seconda sestina,terz a sestina,quarta sestina,quinta sestina,sesta sestina,\ settima sestina,ottava sestina,nona sestina,decima sestina,undicesima sestina,quattro primi,carre 1a5,carre 2a6,carre 4a8,carre 5a9,carre 7a11,carre 8a12,carre 10a14,carre 11a15,carre 13a17,carre 14a18,carre 16a20,carre 17a21,\ carre 19a23,carre 20a24,carre 22a26,carre 23a27,carre 25a29,carre 26a30,carre 28a32,carre 29a33,carre 31a35,carre 32a36) Questa sfilza di stringhe potresti formattarla meglio, come ad esempio puntate_possibili = ( passe, manque, pari, dispari, nero, rosso, prima ecc, anche se esce una cosa lunghissima, personalmente preferisco un codice più lungo e leggibile che di qualche riga in meno e che mi fa incrociare gli occhi. print(Attenzione: stiamo facendo riferimento alle regole della Roulette francese.) print(Si presuppone, come previsto ad esempio al Casino' di Venezia, che la puntata minima accettata \nsia di 10 Euro e la massima di 600. Si ritiene scontato, inoltre, che il giocatore\nsegua rigorosamente i suggerimenti che verranno evidenziati dal programma.) print() Ho notato che usi un sacco di print(); non voglio dirti che è una cosa brutta, ma personalmente non mi piace mischiare gli stili: o usi una print per ogni riga, o usi \n in una print sola. Io andrei di una print per ogni riga. Ti consiglio, molto umilmente, di adottare uno stile ed essere coerente ad esso. capitale_disponibile = eval(input(Per cominciare, indicami l'importo che intendi mettere a disposizione per il gioco (si consiglia almeno 2500 Euro) )) eval(input()) è una cosa che vuoi evitare quasi sempre. Non usarlo. Usa int(input()) se vuoi ottenere un intero oppure usa usa ast.literal_eval(input()). https://docs.python.org/3/library/ast.html#ast.literal_eval print(Giocata+(( )*17),ritardi di uscita+(( )*6),Giocata+(( )*17),ritardi di uscita+(( )*8)) Esistono opzioni migliori per formattare incolonnando. Esempio: print('Valore: {:12} Valore {:8}'.format(4, 123)) Usa format() e tutte le sue belle opzionI: https://docs.python.org/3.3/library/string.html#formatstrings if numero_uscito in passe: Se passe e manque e tutti_i_numeri li usi solo per tenere elenchi di numeri, puoi fare 2 cose per migliorare il tuo codice: 1. usare set() anziché tuple(). Set è molto più veloce per vedere se un elemento è al suo interno, rispetto a tuple, e la sintassi valore in insieme è invariata e molto gradevole da leggere. Quindi, anziché usare tuple(range(37)), usa set(range(37)). Se, invece, la tupla ti serve perché è ordinata (set non preserva l'ordine), allora tieni la tupla. 2. Se hai degli intervalli numerici e devi verificare se sei in tali intervalli, non usare né tuple né set. Usa gli operatori =, e magari definisci un paio di funzioni per leggere meglio: def in_passe(n): return 19 = n = 36 if in_passe(numero_uscito): etc uscita_manque =+1 E questa riga credo sia l'origine del tuo baco. Più volte nel codice scrivi variabile =+1 e secondo me tu stai cercando di ottenere variabile = variabile + 1 ma forse non sai, o non ti sei accorto, che l'operatore += è ben diverso dai due operatori =+. a += b vuol dire a = a + b a =+ b vuol dire a = (+b) cioé a = b (+ indica il segno del numero). prosegui_gioco = input(Vuoi continuare a giocare? si/no ) if prosegui_gioco == si: ultimo appunto: in genere è buona cosa fare controllo indipendenti dalle maiuscole e dalle minuscole. Quindi: prosegui_gioco = input('Blah).lower() così se l'utente inserisce SI o Si, il codice funziona comunque e non è necessario scrivere tutto in minuscolo. Spero di averti risolto il problema e ti averti dato qualche dritta :P Ciauz ~Ale