Articoli Correlati

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

Sony World Photography Awards, il fotografo italiano degli “acchiappanuvole” premiato per la sostenibilità

“Stavo lavorando ad un altra commissione nei quartieri poveri di Lima, in Perù, e ho notato sulle colline delle strane reti verdi, erette sui crinali. Ho chiesto in giro e ho scoperto che i locali le costruiscono per catturare le nuvole e raccogliere l’acqua”. Alessandro Cinque racconta così la genesi di “Atrapanieblas” (letteralmente “acchiappanuvole”), il progetto fotografico con cui ha vinto il Sustainability Prize del Sony World Photography Awards.Ideato in collaborazione con la United Nations Foundation e l’iniziativa Picture This di Sony Pictures, il premio è stato indetto quest’anno per la prima volta. Lo scopo, spiegano gli organizzatori, è offrire visibilità alle “storie, le persone e le organizzazioni che, con le loro azioni, perseguono uno degli Obiettivi di Sviluppo Sostenibile dell’ONU”.Gli acchiappanuvole (o acchiappanebbie) delle foto di Cinque sono strutture costruite con reti ombreggianti sulle colline della capitale, nei quartieri più poveri dove i campesinos delle Ande si stabiliscono, spesso illegalmente, quando si trasferiscono nella grande città per cercare lavoro. Quando le nuvole e la nebbia le attraversano, le reti condensano l’acqua e la convogliano nelle cisterne dalle quali poi viene distribuita alla comunità. Con questo metodo gli abitanti riescono a raccogliere ogni giorno fino a 200 litri d’acqua, che non devono così comprare a caro prezzo.

Nelle invasiòn di Lima

“Il paradosso di Lima è che nei quartieri più ricchi l’acqua costa il giusto. Ma qui, nelle invasión (il nome locale degli insediamenti, nda) il prezzo è molto più alto, perché non ci sono infrastrutture”, spiega Cinque, che nella capitale peruviana si è trasferito nel 2019.

“I più poveri finiscono per dover comprare l’acqua dalle aziende, che la portano in grandi cisterne. Il paradosso è che queste persone vengono da villaggi delle Ande attratti dalla promessa capitalista e neoliberista di uno status economico, e si ritrovano invece a vivere in insediamenti dove si possono comprare la tv o il cellulare ma manca l’acqua, o dove devono comprarsi le verdure che nelle Ande si coltivavano da soli”.

Alla Somerset House, dove abbiamo potuto visitare in anteprima le immagini dei vincitori di tutte le categorie del premio, passiamo in rassegna le foto della serie assieme a Cinque. “Lui è Abel Cruz, gli atrapanieblas che ho fotografato sono una sua idea”, spiega il fotografo mentre ci soffermiamo sul ritratto di un uomo sulla sessantina, seduto contro lo sfondo senza colori del cielo di Lima, “la gris” (la grigia) come la chiamano i locali. “Abel è arrivato con una invasión negli anni ’80, poi ha potuto studiare ingegneria. Mi ha detto che gli acchiappanebbia sono una sua idea, ma so che in realtà non è vero. Per lui però è una questione di orgoglio, perché questa soluzione semplice e sostenibile libera un’intera comunità dal peso economico dell’acquisto dell’acqua”.

® Alessandro Cinque, vincitore del Sustainability Prize al Sony World Photography Awards 2023 – Perù 

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