Python carte

Python carte

Realizziamo un esempio in Python sulle carte della briscola. Le carte della briscola sono 40 con i seguenti valori: asso, 2, 3, 4, 5, 6, 7, fante, cavallo, re. I semi sono bastoni, coppe, denari e spade.

Python carte – primo esempio

Estrarre una carta a caso da un mazzo di 40 carte.

Utilizziamo una lista carte che conterrà i numeri da 0 a 39. Per popolarla utilizzo list(range(40)).

Per mescolare le carte utilizzo poi il metodo shuffle, importando il modulo random.

Fate dunque la prova ad eseguire questo codice:

from random import *

carte=list(range(40))

print(carte)
shuffle(carte)
print(carte)

Noterete come il mazzo delle 40 carte viene mescolato.

Adesso proviamo ad estrarre una carta utilizzando il metodo choice e dopo averla estratta la rimuoviamo dal mazzo utilizzando il metodo remove.

Provate dunque questo codice:

from random import *

carte=list(range(40))

shuffle(carte)

estratta=choice(carte)
carte.remove(estratta)

print(carte)


Secondo esempio estrazione di carte in Python

Estraiamo adesso tutte le carte dal mazzo.

Quindi con un ciclo while che continua finché la lunghezza della lista carte non è 0, estraiamo delle carte. Visualizziamo la lista ogni volta per vedere i risultati dell’estrazione.

Ecco dunque un esempio:

from random import *

n=40

carte=list(range(n))
shuffle(carte)

while n>0:    
    estratta=choice(carte)
    carte.remove(estratta)
    print('La carta estratta è', estratta)
    print(carte)    
    n-=1


Terzo esempio estrazione dell’ultima carta in Python

Facciamo una variazione all’esercizio proposto estraendo sempre l’ultima carta.

Utilizziamo per questo scopo il metodo pop.

from random import *

n=40

carte=list(range(n))

shuffle(carte)

while n>0:    
    estratta=carte.pop()    
    print('La carta estratta è', estratta)
    print(carte)    
    n-=1


Quarto esempio

Associamo adesso il seme e il valore della carta al numero estratto.

Creiamo quindi due liste, una per i semi e una per i valori.

valori = [‘asso’, ‘due’, ‘tre’, ‘quattro’, ‘cinque’, ‘sei’, ‘sette’, ‘fante’, ‘cavallo’, ‘re’]

semi=[‘bastoni’, ‘coppe’, ‘denari’, ‘spade’]

I valori sono 10, mentre i semi sono 4.

Quindi per trovare il seme basta dividere ciascun numero per 10.

Infatti se ad esempio esce 35:

35//10=3 – corrisponde a spade

24//10=2 – corrisponde a denari

16//10=1 – corrisponde a coppe

8//10=0 – corrisponde a bastoni

Quindi modifichiamo il codice:


from random import *

semi = ['bastoni', 'coppe', 'denari', 'spade']
valori = ['asso', 'due', 'tre', 'quattro', 'cinque', 'sei', 'sette', 'fante', 'cavallo', 're']

n = 40

carte = list(range(n))

shuffle(carte)

while n > 0:    
    estratta = carte.pop()      
    n -= 1
    s = estratta//10
    print('La carta estratta è', estratta)
    print('Seme: ', semi[s])
    print(carte) 

Adesso non ci resta che determinare il valore. Possiamo pensare di considerare i resti della divisione in quanto i valori vanno da 0 a 9. In questo modo ottengo tutte le possibili combinazioni.

Quindi modifico ancora il codice:

from random import *

semi = ['bastoni', 'coppe', 'denari', 'spade']
valori = ['asso', 'due', 'tre', 'quattro', 'cinque', 'sei', 'sette', 'fante', 'cavallo', 're']

n = 40

carte = list(range(n))

shuffle(carte)

while n > 0:    
    estratta = carte.pop()      
    n -= 1
    s = estratta//10
    v = estratta%10
    print('La carta estratta è', estratta)
    print('Seme: ', semi[s])
    print('Valore: ', valori[v])
    print(carte) 

Adesso chiediamo all’utente di continuare ad estrarre le carte utilizzando un ciclo while True.


from random import *

semi = ['bastoni', 'coppe', 'denari', 'spade']
valori = ['asso', 'due', 'tre', 'quattro', 'cinque', 'sei', 'sette', 'fante', 'cavallo', 're']

n = 40

carte = list(range(n))

shuffle(carte)

while True:
    estrai = input('Per estrarre premi invio, altrimenti premi E! ')
    if estrai == 'E':
        break
    estratta = carte.pop()      
    n -= 1
    s = estratta//10
    v = estratta%10
    print('La carta estratta è', estratta)
    print(valori[v], 'di', semi[s]) 

Una volta capito il funzionamento possiamo anche togliere l’istruzione print(‘La carta estratta è’, estratta).

Gioco indovina carta in Python

Realizziamo un semplice gioco per indovinare una carta in Python.

Dapprima facciamo indovinare il seme della carta, dopo se ha indovinato il seme facciamo indovinare anche il valore.

Questa è una possibile soluzione, proponete pure la vostra e provate a creare delle varianti al gioco.


from random import *

semi=['bastoni', 'coppe', 'denari', 'spade']
valori=['asso', 'due', 'tre', 'quattro', 'cinque', 'sei', 'sette', 'fante', 'cavallo', 're']

n=40

carte = list(range(n))

shuffle(carte)

while True:
    estrai = input('Per estrarre premi invio, altrimenti premi E! ')
    if estrai == 'E':
        break
    estratta = carte.pop()      
    n -= 1
    s = estratta//10
    v = estratta%10

    print('Hai due tentativi per indovinare il seme!')

    tentativo = 0

    for i in range(2):
        indovina = input('metti il seme: b, c, d oppure s: ')
        if indovina == 'b':
            indovina = 'bastoni'
        elif indovina == 'c':
            indovina = 'coppe'
        elif indovina == 'd':
            indovina = 'denari'
        elif indovina == 's':
            indovina = 'spade'
        else:
            print('Hai sbagliato a digitare') 
        if indovina == semi[s]:
            print('Hai indovinato il seme! ')
            tentativo = 1
            break
        else:
            print('Non hai indovinato!')
 
    if tentativo == 1:
        print('Hai tre tentativi per indovinare il valore!')
        for i in range(3):
            numero = input('metti il valore: asso, due, tre, quattro , cinque, sei, sette, fante, cavallo, re: ')
            if numero == valori[v]:
                print('Hai indovinato! ')
                break
            else:
                print('Non hai indovinato! ')
                if i == 2:
                    print('La carta estratta era: ', valori[v], 'di', semi[s] )

    print()

Provate a scrivere codice direttamente nell’editor sotto:

Alcuni link utili

Indice tutorial sul linguaggio Python

1 – Introduzione al linguaggio Python

2 – Le variabili

3 – Operatori aritmetici e di assegnazione

4 – Stringhe

5 – Casting

6 – Input e print

7 – Primi esercizi in Python

8 – Errori in Python

9 – Script Python

10 – Scambio di variabili

Algobuild esercizi svolti

Algobuild esercizi svolti

In questa lezione realizzeremo alcuni semplici esercizi svolti con Algobuild.

Algobuild esercizi svolti – primo esercizio

Il primo semplicissimo esercizio sulla selezione che voglio proporvi è questo:

Scrivere un algoritmo che, dati base e altezza di un triangolo, calcoli l’area se sono entrambi positivi, oppure stampi il messaggio “Valori di input errati”.

La risoluzione del problema è piuttosto semplice. Prendiamo in input la base e l’altezza del triangolo e controlliamo se uno dei due valori è minore o uguale a zero. Se la condizione è vera scriviamo ‘dati non validi‘, altrimenti calcoliamo l’area e la visualizziamo in output.

Ecco dunque l’algoritmo sviluppato con Algobuild.

Algobuild area triangolo


Secondo esercizio

Scrivere l’algoritmo che, dati la base maggiore, la base minore e l’altezza di un trapezio, calcoli l’area se tutti i valori sono positivi, altrimenti stampi il messaggio “Valori di input errati”.

Anche in questo caso prendiamo i dati in input e verifichiamo se uno dei 3 è minore o uguale a zero. Se la condizione è vera visualizziamo ‘dati non validi’ in output, altrimenti calcoliamo l’area del trapezio.

Ecco dunque l’algoritmo sviluppato con Algobuild:

Algobuild area trapezio

Noterete che ho utilizzato due variabili con lo stesso nome, base e BASE, ma una è scritta in minuscolo, l’altra in stampatello. Vi ricordo che il nome delle variabili è case sensitive, quindi la variabile base è diversa da BASE.

Potrei estendere il problema facendo un controllo sui dati inseriti, richiedendo ad esempio che BASE sia maggiore di base, ecc…

Alcuni link utili

Indice tutorial diagrammi a blocchi

1 – Diagramma a blocchi

2 – Primi esercizi con i diagrammi di flusso (perimetro triangolo; area di un trapezio)

3 – Altro semplice esercizio sui flow chart (calcolare uno sconto)

4 – Area del cerchio

5 – Precedente e successivo di un numero

6 – Introduzione agli algoritmi di selezione

7 – Minore tra due numeri

8 – Maggiore fra tre numeri

9 – Algoritmo di selezione sugli angoli

Diagrammi di flusso esercizi

Diagrammi di flusso esercizi

Diagrammi di flusso esercizi – Risolviamo alcuni esercizi con i diagrammi di flusso utilizzando le istruzioni condizionali.

Diagrammi di flusso – Primo esercizio

In un porto turistico attraccano imbarcazioni fino a 20 metri. Le tariffe giornaliere sono le seguenti:
– 15€, fino a 5 m.
– 22€, fino a 12 m.
– 30€, fino a 15 m.
– 45€, oltre 15 m.
Conoscendo il numero di giorni calcolare il costo totale dell’ormeggio.

I dati da prendere sono due:

– la lunghezza dell’imbarcazione;

– il numero di giorni.

Innanzitutto utilizziamo il parallelogramma per permettere l’inserimento di questi dati da tastiera.

Dopo utilizziamo i rombi per fare i controlli sulla lunghezza dell’imbarcazione.

Poi moltiplichiamo la paga per i giorni e visualizziamo il risultato in output.

Ecco quindi il diagramma di flusso:

imbarcazione

Potremmo anche controllare i valori inseriti in input, facendo in modo che se l’utente inserisce dei valori negativi per la lunghezza e i giorni, l’algoritmo restituisce dati non validi.

Aggiungiamo quindi questo controllo prima del blocco end.

diagrammi

Oppure la soluzione migliore è inserire il controllo all’inizio.

Diagrammi di flusso esercizi – Secondo esercizio

Un negoziante per incrementare le sue vendite, prevede di applicare uno sconto progressivo sull’importo della fattura, in base al numero di pezzi acquistati.
Se il cliente compra 1 pezzo viene applicato il 15% di sconto, il 20% per 2 pezzi, il 30% per 3; in tutti gli altri casi lo sconto è del 40%.
Visualizzare lo sconto applicato e l’importo effettivo che il cliente deve pagare.

In questo caso occorre prendere in input il numero di pezzi e l’importo della fattura.

Dopo occorre fare i controlli se il numero dei pezzi è 1, 2 oppure 3.

Di conseguenza occorre calcolare lo sconto che poi verrà sottratto al totale della fattura.

Infine in output visualizziamo l’importo scontato.

Ecco dunque il diagramma di flusso realizzato con Algobuild.

diagrammi di flusso

Possiamo fare un controllo dell’input, cioè, se l’utente ad esempio inserisce dei valori negativi per quanto riguarda il numero di pezzi e la fattura si restituisce il messaggio “dati non validi”.

Alcuni link utili

Indice tutorial diagrammi a blocchi

1 – Diagramma a blocchi

2 – Primi esercizi con i diagrammi di flusso (perimetro triangolo; area di un trapezio)

3 – Altro semplice esercizio sui flow chart (calcolare uno sconto)

4 – Area del cerchio

5 – Precedente e successivo di un numero

6 – Introduzione agli algoritmi di selezione

7 – Minore tra due numeri

8 – Maggiore fra tre numeri

9 – Algoritmo di selezione sugli angoli

Diagrammi di flusso esercizi svolti

Diagrammi di flusso esercizi svolti

Diagrammi di flusso esercizi svolti – In questa lezione affronteremo alcuni esercizi sui diagrammi di flusso riguardo la selezione.

Diagrammi di flusso primo esercizio svolto

Scrivere un algoritmo che, dato il prezzo di un prodotto, applichi uno sconto del 20% se il prezzo è superiore a € 50.00, del 10% altrimenti. Visualizzare in output il prezzo scontato.

In questo algoritmo dobbiamo prendere in input il prezzo del prodotto e confrontarlo con il valore 50.

Infatti se il prezzo è superiore occorre scontarlo del 20%, altrimenti solo del 10%.

Quindi innanzitutto ci servirà il parallelogramma per la variabile prezzo, poi dobbiamo inserire i rombi per fare i vari confronti e quindi a seconda dei casi fare l’operazione richiesta nel rettangolo.

Infine visualizziamo in output il prezzo scontato. Notate che non occorrono le virgolette perché devo stampare la variabile.

Ecco un esempio di possibile risoluzione all’algoritmo proposto.

diagramma di flusso esercizio

Facciamo alcune osservazioni sulle possibili varianti alla soluzione proposta.

Si potrebbe semplificare il problema facendo queste operazioni:

se il prezzo è maggiore di 50:

prezzo_scontato=prezzo*80/100

altrimenti

prezzo_scontato=prezzo*90/100

Inoltre osserviamo anche che si potrebbero utilizzare le costanti per memorizzare le percentuali degli sconti.


Diagrammi di flusso secondo esercizio

In una serra si considera normale la temperatura di 18°, sotto i 5° si hanno danni irreparabili, tra i 5° e i 18° vi è una situazione di pericolo. Scrivi un algoritmo che, letta la temperatura della serra, indichi lo stato della serra.

Prendiamo dunque in input la temperatura e innanzitutto controlliamo se è minore di 5.

Se è vero allora si avrà in output il messaggio: “danni irreparabili”. Notate che occorrono le virgolette perché non dobbiamo stampare una variabile ma una stringa.

Se questa proprietà non è verificata controlliamo se la temperatura è minore di 18. Dato che t<5 è falso è scontato che t è maggiore o uguale a 5 quindi basta inserire la condizione t<18 e se è vera visualizziamo il messaggio “pericolo”.

Se invece questa condizione non è vera controlliamo se t è uguale a 18. Notate l’operatore di confronto doppio uguale. Se è vera visualizziamo “normale”, altrimenti se è falsa visualizziamo invece “superiore”.

Non è necessario inserire un altro rombo.

Ecco l’algoritmo sviluppato con i diagrammi di flusso.

temperatura serra

Alcuni link utili

Indice tutorial diagrammi a blocchi

1 – Diagramma a blocchi

2 – Primi esercizi con i diagrammi di flusso (perimetro triangolo; area di un trapezio)

3 – Altro semplice esercizio sui flow chart (calcolare uno sconto)

4 – Area del cerchio

5 – Precedente e successivo di un numero

6 – Introduzione agli algoritmi di selezione

7 – Minore tra due numeri

8 – Maggiore fra tre numeri

9 – Algoritmo di selezione sugli angoli

Diagramma di flusso esempi

Diagramma di flusso esempi

Diagramma di flusso esempi – In questa lezione realizzeremo dei diagrammi di flusso utilizzando gli algoritmi sequenziali.


Diagramma di flusso primo esempio

La paga di un operaio è di 15,00 € all’ora. Sulla stessa paga viene effettuata una trattenuta pari al 27%. Chiedendo il numero delle ore lavorative svolte, calcolare la paga netta.

Per risolvere questo problema analizziamo i dati da prendere in input e le costanti.

Costanti: La paga e la trattenuta sono valori costanti in quanto, nel problema descritto, hanno un valore predefinito. La forma da utilizzare è il rettangolo!

Variabili: L’unico dato in input da prendere sono le ore. La forma da utilizzare è il parallelogramma.

L’operazione da svolgere è quella del calcolo della paga netta, cioè la paga per le ore meno le trattenute.

Quindi sviluppiamo il diagramma di flusso dell’algoritmo proposto.

paga netta

Ovviamente ci possono essere altre possibili soluzioni.

Secondo esempio

Una sala cinematografica ha 550 posti dei quali 250 in galleria e il resto in platea. Sapendo che il biglietto in platea costa 8 € e in galleria 2 € in più, calcolare l’incasso in una sera di tutto esaurito.

Per risolvere questo algoritmo abbiamo bisogno delle seguenti costanti e variabili:

Costanti:

posti_totali=550

posti_galleria=250

prezzo_p=8

Variabili:

posti_platea si ottiene dalla differenza dei posti totali meno i posti in galleria.

prezzo_g si ottiene aggiungendo 2 al prezzo della platea.

In tutti i casi utilizziamo come forma il rettangolo.

Ecco dunque l’algoritmo sviluppato con i diagrammi a blocchi.

algoritmo sequenziale

Alcuni link utili

Indice tutorial diagrammi a blocchi

1 – Diagramma a blocchi

2 – Primi esercizi con i diagrammi di flusso (perimetro triangolo; area di un trapezio)

3 – Altro semplice esercizio sui flow chart (calcolare uno sconto)

4 – Area del cerchio

5 – Precedente e successivo di un numero

6 – Introduzione agli algoritmi di selezione

7 – Minore tra due numeri

8 – Maggiore fra tre numeri

9 – Algoritmo di selezione sugli angoli