Aggiungere un numero random in un file

In questa lezione svilupperemo un semplice algoritmo per aggiungere un numero random in un file in Python.

Supponiamo di avere un file che contiene un numero.

Innanzitutto stampiamo il numero contenuto nel file, dopo generiamo un numero random e lo sommiamo al numero che è contenuto nel file.

Poi sommiamo i due numeri e aggiungiamo il numero così ottenuto al file, iniziando da una nuova riga.

Supponendo che il file number_random.txt contenga il numero 6, proviamo questo codice di esempio:


import random

f = open('number_random.txt', 'r+')
numero = f.readline()
print(numero)

random_number = random.randint(1, 100)
print(random_number)

somma = random_number + int(numero)
print(somma)

f.write('n' + str(somma))
f.close()

Occorre utilizzare la modalità r+ per poter aprire un file in lettura e scrittura contemporaneamente.

Ricordiamo inoltre che il metodo write() vuole una stringa, quindi dobbiamo convertire il numero ottenuto dalla lettura del file in una stringa utilizzando il casting con str().

Aggiungere un numero random in un file – secondo esempio

In questo secondo esempio cercheremo di indovinare il numero che è contenuto nel file di testo number.txt.

Supponendo che il file contenga un solo numero, apriamo il file in modalità di sola lettura e leggiamo il numero. Dopo chiediamo qual è il numero contenuto nel file e diamo un messaggio di vittoria o di sconfitta dopo averlo confrontato.

Sviluppiamo un possibile algoritmo che risolve il nostro problema utilizzando anche una semplice funzione:


f = open('number.txt', 'r')
number = f.readline()

def indovina(num):
    if num == number:
        return True

my_number = input('Quale numero è contenuto nel file?: ')

risultato = indovina(my_number)

if risultato:
    print('Hai indovinato!')
else:
    print('Non hai indovinato')
    print('Il numero era: ' + number)

Aggiungere un numero random in un file – terzo esempio

Adesso modifichiamo l’algoritmo dando degli aiuti all’utente. Ogni volta che l’utente proverà ad indovinare gli verrà detto se il numero pensato è più basso o più alto di quello contenuto nel file di testo.

Il tutto per 5 volte.

Quando siamo davanti ad un problema complesso dobbiamo scomporlo in sottoproblemi per renderlo più semplice.

Allora dapprima sviluppiamo il caso più semplice, cioè una sola risposta:


f = open('number.txt', 'r')
number = f.readline()

def indovina(num):
    if num == number:
        return 0
    elif num > number:
        return 1
    else:
        return 2
 

my_number = input('Quale numero è contenuto nel file?: ')

risultato = indovina(my_number)

if risultato == 0:
    print('Hai indovinato!')
elif risultato == 1:
    print('Il numero da indovinare è più basso')
else:
    print('Il numero da indovinare è più alto')

Adesso generiamo i 5 tentativi, facendo in modo di terminare il gioco quando si finiscono i tentativi oppure quando si indovina.

Generiamo una prima soluzione nella quale usciremo dal ciclo attraverso l’uso di break:


f = open('number.txt', 'r')
number = f.readline()

def indovina(num):
    if num == number:
        return 0
    elif num > number:
        return 1
    else:
        return 2
 
tentativi = 5

for i in range(tentativi):
    my_number = input('Quale numero è contenuto nel file?: ')
    risultato = indovina(my_number)
    if risultato == 0:
        print('Hai indovinato!')
        break
    elif risultato == 1:
        print('Il numero da indovinare è più basso')
    else:
        print('Il numero da indovinare è più alto') 

Adesso creiamo una nuova funzione evitando così l’utilizzo del break:


f = open('number.txt', 'r')
number = f.readline()

def indovina(num):
    if num == number:
        return 0
    elif num > number:
        return 1
    else:
        return 2
 
tentativi = 5
trovato = False

def gioco():
    for i in range(tentativi):
        my_number = input('Quale numero è contenuto nel file?: ')
        risultato = indovina(my_number)
        if risultato == 0:
            print('Hai indovinato!')
            return
        elif risultato == 1:
            print('Il numero da indovinare è più basso')
        else:
            print('Il numero da indovinare è più alto')

gioco()

In questa lezione abbiamo sviluppato alcuni algoritmi come ad esempio aggiungere un numero random in un file in Python, oppure indovinare il numero contenuto in un file di testo. Nelle prossime lezioni ci eserciteremo ancora sui file.

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

Continua la lettura su: https://www.codingcreativo.it/aggiungere-un-numero-random-in-un-file/ Autore del post: Coding Creativo Fonte: https://www.codingcreativo.it

Articoli Correlati

readline Python

In questa lezione studieremo il metodo readline di Python necessario per la lettura di un file di testo.

Questo metodo restituisce una riga di caratteri, incluso il carattere di fine riga, ovvero il carattere n.

readline Python – primo esempio

Facciamo un primo esempio su un file rubrica che contiene i seguenti contatti di esempio:

Nome: cristina – Telefono: 3567Nome: coding – Telefono: 34789

Apriamo il file utilizzando la funzione open, specificando la modalità di lettura (r). Dopo applicahiamo il metodo readline() di Python e proviamo a stampare il testo letto.

f = open(‘rubrica.txt’, ‘r’)
testo = f.readline()
print(testo)
f.close()

Il seguente codice stamperà solo la prima riga: Nome: cristina – Telefono: 3567.

Come possiamo notare l’esecuzione di readline() produce la lettura fino al carattere di fine riga, ovvero n.

In definitiva questo metodo utilizza un cursore che rappresenta un indice numerico che parte da 0 e che si incrementa di 1 ad ogni carattere letto.

Se provassimo ad eseguire nuovamente readline() leggeremo la seconda riga, in quanto l’indice è stato incrementato.

f = open(‘rubrica.txt’, ‘r’)
testo = f.readline()
print(testo)
testo = f.readline()
print(testo)
f.close()

Ma chiaramente questo codice per la lettura di un file di testo non è l’ideale. Proviamo ad utilizzare un ciclo.

readline Python – secondo esempio

Ragioniamo sul fatto che arresteremo la lettura quando incontreremo la stringa nulla, in quanto rappresenta la fine del file.

Implementiamo dunque una possibile soluzione:

f = open(‘rubrica.txt’, ‘r’)
testo = f.readline()

while testo != “”:
print(testo)
testo = f.readline()

f.close()

Notiamo che ciascun contatto della rubrica occuperà due righe in quanto la funzione print aggiunge un ulteriore carattere di fine riga.

Per evitare questo problema potremmo utilizzare la funzione print con il parametro end, in questo modo:

print(testo, end = ” “)

in alternativa si può utilizzare il metodo rstrip().

Ciclo for in

Un’alternativa all’utilizzo di readline in Python per poter leggere un file è il ciclo for in.

Vediamo un semplice esempio:

f = open(‘rubrica.txt’, ‘r’)

for testo in f:
print(testo.rstrip())

f.close()

In definitiva stiamo trattando il file come se fosse semplicemente un elenco di stringhe.

Conclusioni

In questa lezione abbiamo studiato il metodo readline di Python per leggere i dati da un file di testo. Abbiamo anche visto che non è l’unico modo per poter leggere un file di testo.

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

Python matrici

In Python è possibile creare delle matrici utilizzando due semplici cicli for, oppure è possibile utilizzare semplicemente la libreria Numpy.

In questa lezione creeremo delle matrici utilizzando le istruzioni iterative, più avanti vedremo l’utilizzo di Numpy.

Python matrici – primo esercizio

In questo primo esercizio utilizziamo un doppio ciclo for per creare delle matrici con dei numeri random.

In particolare creeremo una matrice 3 x 3, ma poi generalizzeremo l’algoritmo creando matrici di dimensione personalizzata.

Innanzitutto, siccome devo generare dei numeri random, importo il modulo random ed in particolare randint.

Dopo, creo una lista vuota e con il primo ciclo for scorro tutte le righe. Per ogni riga utilizza un altro ciclo for e genero una lista di 3 numeri random. Alla fine del ciclo più interno utilizzo il metodo append di Python per appendere la lista generata alla matrice di partenza.

Ecco dunque una possibile soluzione per creare in Python delle matrici:

from random import randint

matrix = []

for i in range(3):
n = []
for j in range(3):
number = randint(1,100)
n.insert(i,number)

matrix.append(n)

print(matrix)

Possiamo popolare una matrice con un ciclo while, ma non è la soluzione ottimale. Ricordiamo infatti che quando sappiamo esattamente quante volte deve essere eseguito un ciclo si utilizza il for. Il while si utilizza invece quando devo soddisfare una condizione.

from random import randint
matrix = []
i=0
while i < 3: j = 0 n = [] while j < 3: number = randint(1,100) n.insert(i,number) j = j+1 matrix.append(n) i = i+1 print(matrix) Creiamo adesso una funzione per generare una matrice. from random import randint def matrix(x,y): matrix = [] for i in range(x): n = [] for j in range(y): number = randint(1,100) n.insert(i,number) matrix.append(n) return matrix print(matrix(3,3)) In questo modo possiamo generare delle matrici di qualsiasi dimensione. Python matrici – secondo esercizio Chiediamo in input all’utente la dimensione della matrice da generare. from random import randint def matrix(x,y): matrix = [] for i in range(x): n = [] for j in range(y): number = randint(1,100) n.insert(i,number) matrix.append(n) return matrix x = int(input('inserisci la dimensione x della matrice ')) y = int(input('inserisci la dimensione y della matrice ')) print(matrix(x,y)) Proviamo il codice appena generato nel compilatore sotto: In questa lezione su Python abbiamo sviluppato delle matrici utilizzando semplicemente un doppio ciclo for. Nelle prossime lezioni studieremo Numpy. Alcuni link utili Indice tutorial Python FunzioniCome chiamare una funzioneConvertitore da decimale a binario e ottaleIl fattoriale di un numero in PythonPython open()Scrivere in un file con il metodo write()Memorizzare dati di input in un file di testoPython readline()

Vuoi rimanere aggiornato sulle nuove tecnologie per la Didattica e ricevere suggerimenti per attività da fare in classe?

Sei un docente?

soloscuola.it la prima piattaforma
No Profit gestita dai

Volontari Per la Didattica
per il mondo della Scuola. 

 

Tutti i servizi sono gratuiti. 

Associazione di Volontariato Koinokalo Aps

Ente del Terzo Settore iscritta dal 2014
Tutte le attività sono finanziate con il 5X1000