Convertitore decimale binario in Python

Convertitore decimale binario in Python

Realizziamo in questa lezione un semplice convertitore decimale binario in Python utilizzando le funzioni appena studiate.

Quindi iniziamo creando una funzione che prende come parametro un numero decimale e restituisce il numero convertito in binario.

Convertitore decimale binario in Python

Assegniamo a b, cioè alla variabile che conterrà il numero binario, la stringa vuota.

Dopo con un ciclo while che itera finché n è maggiore di zero, controlliamo se il resto della divisione è zero. Se il resto è zero aggiungiamo 1 alla stringa inizializzata, altrimenti aggiungiamo 1.

Ecco dunque il codice completo:

def dec_bin(n):

b=‘ ‘

while n>0:

if n%2==0:

b=‘0’+b

else:

b=‘1’+b

n=int(n/2)  #casting in intero

print(b)

c=int(input(‘Inserisci un numero decimale:  ‘))

dec_bin(c)


Convertitore decimale ottale in Python

Realizziamo anche una funzione che effettui la conversione da decimale a ottale.

In questo caso dobbiamo considerare i resti della divisione per 8.

Facciamo un esempio, considerando il numero decimale 32:

31:8=3 resto 7

Quindi 7 sarà l’ultima cifra del numero ottale che vogliamo trovare.

Dopo dobbiamo prendere 3 che si trova con questa formula (n-resto)/8, cioè (31-7)/8 e ancora 24/8 che appunto è uguale a tre.

Aggiungiamo alla stringa ottale la stringa resto che ottengo con un’operazione di casting.

Poi divido 3 per 8:

3:8=0 resto 3

Aggiungo 3 alla stringa precedente nella posizione sinistra, ottenendo così il numero 37.

Quindi mi fermo perché la condizione n>0 non è più verificata.

Ecco dunque il codice completo:

def dec_ot(n):

ottale=”

while n>0:

resto=n%8

n=int((n-resto)/8)

ottale=str(resto)+ottale

print(ottale)

o=int(input(‘Inserisci un numero decimale: ‘))

dec_ot(o)

Questo era solo un semplice modo per sviluppare un convertitore da decimale a binario e ottale in Python, potete trovare voi stessi un’altra soluzione.


Funzioni predefinite per la conversione

Ovviamente esistono le funzioni predefinite per convertire un numero da una base all’altra, ma è interessante ragionare su questi algoritmi.

Ecco quindi le funzioni predefinite:

print(‘In base 2: ‘, bin(33))

print(‘In base 8: ‘, oct(33))

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

Funzioni Python

Funzioni Python

In questa lezione studieremo le funzioni in Python che, così come in matematica, ricevono dei valori come argomenti e restituiscono un valore come risultato.

Infatti si usa dire, nei linguaggi di programmazione, che la funzione ritorna un valore.

Per dichiarare una funzione in python si usa la parola chiave def, e poi di seguito il nome della funzione e i parametri racchiusi tra parentesi tonde. Dopo si inseriscono i due punti e, a capo, con la dovuta indentazione, il blocco di istruzioni che devono essere eseguite.

Sintassi funzioni Python

La sintassi di una funzione è dunque questa:

def nomefunzione(argomenti):

istruzioni

return valore

Gli argomenti possono essere opzionali e la funzione può anche non restituire nessun valore, dunque può essere omessa. Inoltre, la funzione può anche restituire più return.


Funzioni Python che restituiscono un valore

Il classico esempio è quello della funzione somma, quindi ecco di seguito il codice:

def somma(x,y):

s = x+y

return s

Questa funzione và poi richiamata, come spiegherò più avanti nel tutorial.


Funzione che non restituisce alcun valore

Continuiamo quindi a parlare delle funzioni in Python, definendo una funzione che non restituisce alcun valore. Un esempio può essere dato dalla funzione stampa.

Ecco quindi di seguito il semplice codice di esempio:

def stampa(x,y):

s = x+y

print(s)


Funzione che restituisce più di un valore

Le funzioni in Python possono restituire un valore a seconda dei casi.

Facciamo dunque un esempio:

def somma_pos(x,y):

s = x+y

if s > 0:

return s

else:

if x > y

return x

else:

return y

In questo caso a seconda del valore della somma la funzione ritornerà valori diversi.


Funzioni senza parametri

Le funzioni in Python possono anche essere senza parametri.

Come questa di esempio:

def stampa_frase():

print(‘Ciò che dobbiamo imparare a fare, lo impariamo facendolo. (Aristotele)’)

Le funzioni che non restituiscono alcun valore, in altri linguaggi di programmazione vengono chiamate procedure e servono principalmente a scomporre un problema complesso in sotto-problemi più semplici.

In questa lezione abbiamo parlato di funzioni in Python, nelle prossime lezioni continueremo ancora a proporre degli esempi.

Alcuni link utili

Indice tutorial sul linguaggio Python

1 – Introduzione al linguaggio Python

2 – Le variabili

3 – Operatori aritmetici e di assegnazione

4 – Come usare le stringhe

5 – Casting

6 – Input e print

7 – Primi esercizi in Python

8 – Come gestire gli errori in Python

Metodi delle liste in Python

Metodi delle liste in Python

In questa lezione studieremo altri metodi delle liste in Python, che non possono essere utilizzati però con le tuple. In particolare vedremo in dettaglio il metodo append e insert.


Alcuni metodi delle liste in Python

Inserire elementi in una lista

Per inserire elementi in una lista si possono usare due metodi append(val) e insert(pos,val).

La differenza è che il metodo append consente di aggiungere elementi in coda ad una lista in Python, mentre insert consente di aggiungere un valore nella posizione pos specificata.

Append()

Vediamo quindi un esempio pratico sull’uso di append:

stagioni=[‘Primavera’, ‘Estate’]

stagioni.append(‘Autunno’)

print(stagioni)


Insert()

Come già detto il metodo insert, consente di inserire un elemento in una posizione specificata dall’indice. Ad esempio:

stagioni=[‘Primavera’, ‘Estate’]

stagioni.insert(0, ‘Autunno’)

print(stagioni)

Questo script stamperà quindi la lista con l’aggiunta di Autunno in prima posizione: [‘Autunno’, ‘Primavera’, ‘Estate’].

Facciamo altri esempi con i due metodi.

Uso di append

Inserire in una lista di n elementi, i valori del suo indice. Dopo averli inseriti tutti, visualizzare gli elementi e la relativa posizione.


n = int(input('Inserisci il numero degli elementi:'))
lista = []

for i in range(n):
    lista.append(i)

for i in range(n):
    print('Elemento in posizione:', i, 'vale', lista[i])

Analizziamo i cicli che abbiamo utilizzato per risolvere l’algoritmo proposto.

In questo esempio i rappresenta l’indice, mentre lista[i] rappresenta l’elemento.

Supponendo che n valga 5, quindi eseguiamo il primo ciclo for passo passo. Partendo dalla prima iterazione abbiamo:

i=0 e dunque con lista.append(i) ottengo lista[0]=0

i=1 e dunque con lista.append(i) ottengo lista[1]=1

….

i=4 e dunque con lista.append(i) ottengo lista[4]=4


Con il secondo ciclo for poi visualizzo tutti gli elementi ed il suo indice, infatti con i visualizzo l’indice, cioè la posizione dell’elemento mentre con lista[i] visualizzo l’elemento.

Possiamo anche utilizzare questo secondo metodo per leggere gli elementi della lista. Quindi al posto del secondo for posso scrivere:

for i in lista:
    print('Elemento in posizione', lista.index(i), 'vale', i)

N.B. Questo metodo però non funziona se ci sono elementi uguali nella lista!

In questo secondo esempio i rappresenta l’elemento, non l’indice come nel primo esempio, dunque per ottenere l’indice richiamo il già citato metodo index.

L’output generato, in entrambi i casi, sarà dunque questo:

Elemento in posizione 0 vale 0
Elemento in posizione 1 vale 1
Elemento in posizione 2 vale 2
Elemento in posizione 3 vale 3
Elemento in posizione 4 vale 4

Uso di Insert

Adesso implementiamo lo stesso esempio utilizzando insert.


n = 5
lista = []

for i in range(n):
    lista.insert(0,i)

for i in range(n):
    print('Elemento in posizione:', i, 'vale', lista[i])

In questo caso gli elementi sono inseriti in testa alla lista in quanto ho specificato la posizione 0 da cui partire per ogni inserimento. Gli elementi, cioè, a mano a mano vengono spostati verso destra.

La lista, al termine del ciclo for, conterrà i seguenti valori: lista[4,3,2,1,0].

Quindi l’output ottenuto è:

Elemento in posizione: 0 vale 4
Elemento in posizione: 1 vale 3
Elemento in posizione: 2 vale 2
Elemento in posizione: 3 vale 1
Elemento in posizione: 4 vale 0

Anche qui per visualizzare gli elementi avrei potuto utilizzare questo procedimento:

for i in lista:
    print('Elemento in posizione:', lista.index(i), 'vale', i)

Anche in questo caso possiamo utilizzare questo metodo, attenzione però quando ci sono elementi ripetuti!

In questa lezione abbiamo studiato i metodi delle liste in Python, presto faremo delle applicazioni pratiche.

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

Numeri random e metodi in Python

Numeri random e metodi in Python

Continuiamo a parlare di numeri random e metodi in Python.

Numeri random e metodi in Python – choice()

Il metodo choice consente di estrarre a caso un elemento della lista o anche della tupla.

Allora potremmo modificare il gioco della morra cinese, che potete consultare a questo link morra cinese in python, utilizzando choice.

morra=('sasso', 'carta', 'forbice')

print(random.choice(morra))

Provate quindi a modificare tutto il gioco utilizzando questo metodo.


Vi ricordo inoltre che potete utilizzare from, come spiegato nellae lezioni precedenti e dunque:

from random import choice

morra=('sasso', 'carta', 'forbice')

print(choice(morra))


Il metodo choice può anche essere utilizzato per estrarre lettere da una stringa ad esempio:

frase='Coding'

print(random.choice(frase))

Il metodo choice può essere utile per generare delle password, come vedremo nei prossimi tutorial.


choices()

Continuiamo a parlare di numeri random e metodi in Python introducendo un altro metodo, choices che ritorna una lista di valori.

Facciamo dunque un esempio:

voti=[4,6,7]

print(random.choices(voti, k=7))

In questo caso ritorna una lista di 7 valori a caso tra 4, 6 e 7.

Facciamo quindi un altro esempio:

voti=[4,6,7]

print(random.choices(voti, weights=[1,8,1], k=10))

In questo caso si ha un elenco di 10 elementi, con possibilità 8 volte maggiore che ci sia il numero 6.


Numeri random e metodi in Python – shuffle()

Introduciamo adesso il metodo shuffle che ha il compito di riorganizzare una lista.

Quindi ad esempio:

morra=['sasso', 'carta', 'forbice']

random.shuffle(morra)

print(morra)

Produce come output una nuova sequenza. Chiaramente questo metodo si può applicare alle liste ma non alle tuple, in quanto le tuple contengono valori che non possono essere modificati, nemmeno nella sequenza.

Si può anche specificare una funzione che restituisce sempre lo stesso valore.

Quindi ad esempio creo una funzione di nome ordine che poi vado a richiamare nel metodo shuffle:

def ordine():

return 0

morra=[‘sasso’, ‘carta’, ‘forbice’]

random.shuffle(morra, ordine)

print(morra)


getrandbits()

Continuiamo ancora a parlare di numeri random e metodi in Python introducendo il metodo getrandbits che ritorna un intero della dimensione dei bit specificati.

Ad esempio per 8 bit avremo i numeri tra o e 255, ricordiamo infatti che 2^8=256.

Facciamo dunque un esempio:

print(getrandbits(8))

print(getrandbits(6))

Nel primo caso si generano numeri tra 0 e 255, nel secondo tra 0 e 64.

Ci sono ancora altri metodi da utilizzare per i numeri random in Python, ne parleremo più avanti.

Alcuni link utili

Indice tutorial sul linguaggio Python

1 – Introduzione al linguaggio Python

2 – Le variabili

3 – Operatori aritmetici e di assegnazione in python

4 – Stringhe

5 – Casting

6 – Input e print

7 – Primi esercizi in Python

8 – Errori in Python

9 – Script Python

10 – Scambio di variabili

Numeri random in Python

Numeri random in Python

I numeri random in Python, cioè i numeri pseudocasuali si utilizzano importando innanzitutto il modulo random. Quindi inseriamo semplicemente nello script: import random.

Se provate anche a digitare in modalità interattiva help(‘random’), vedrete le specifiche di questo modulo, con le funzioni che potete utilizzare nei vostri script.

random

Dopo aver importato il modulo dunque possiamo usare tutti i metodi per generare i numeri random.


Numeri random in Python – random()

Il metodo random genera un numero casuale decimale tra 0 e 1.

random.random()

Si generano dunque dei numeri con la virgola compresi tra 0 e 1.


Importazione dei moduli per i numeri random in Python

In Python è possibile richiamare solo alcuni elementi di un modulo, evitando così di richiamare un intero modulo.

Ad esempio possiamo importare solo le funzioni che ci servono utilizzando la parola chiave from seguita dal nome del modulo e poi da import e dal nome del metodo che si vuole importare.

Ecco un possibile esempio:

from random import random

print(random())

Come potete notare in questo modo non è più necessario indicare random.random(), come nell’esempio precedente ma basta solo random().

Inoltre è possibile importare tutti i metodi anche in questo modo:

from random import *

print(random())

print(randint(1,10))

Così è possibile utilizzare tutti i metodi senza ripetere ogni volta random, ma utilizzando solo il nome.


Numeri random in Python – randint()

Il metodo randint genera un numero casuale intero in un intervallo specificato tra parentesi.

random.randint(1, 10)

In questo esempio si generano i numeri casuali tra 1 e 10.


Numeri random in Python – randrange()

Il metodo randrange genera un numero casuale intero, in un intervallo di valori come randint, ma si può specificare lo step.

Ad esempio:

random.randrange(1, 10, 2)

In questo caso si possono generare solo i numeri dispari da 1 a 10, dunque: 1, 3, 5, 7, 9.

Lo step è comunque opzionale, nel senso che si può indicare anche solo:

random.randrange(1, 10)

Ed in questo caso si possono generare i numeri interi da 1 a 10.


seed()

Con questo metodo si può inizializzare il generatore di numeri casuali.

Facciamo dunque un esempio:

random.randint(1, 100)

Se eseguiamo questo script otterremo ogni volta un numero casuale diverso.

Se invece prima impostiamo il seed:

random.seed(10)

random.randint(1, 100)

Otterrete sempre lo stesso numero casuale, in questo caso 74. Provate adesso voi a cambiare il valore del seed.

Conclusioni

Questi sono solo alcuni dei metodi sui numeri random in Python, nella prossima lezione vi introdurrò qualche altro metodo.

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