Aggiungere un numero random in un file

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

Aggiungere contenuto a un file in Python

Aggiungere contenuto a un file in Python

In questa lezione studieremo come aggiungere contenuto a un file in Python già esistente, utilizzando la modalità append.

Aggiungere contenuto a un file in Python – primo esempio

In questo primo esempio utilizzeremo il nostro file rubrica.txt che già contiene dei dati ed aggiungere dei nuovi contatti.

Ipotizziamo ad esempio che il file contenga questi contatti:

Nome: cristina – Telefono: 3567
Nome: luisa – Telefono: 34789

Implementiamo un algoritmo che consente di aggiungere un nuovo dato utilizzando il metodo write:


f = open('rubrica.txt', 'a')
name = input('Inserisci un nuovo nome: ')
telephone = input('Inserisci il telefono: ')
f.write('Nome:' + name + ' - Telefono:' + telephone)    
f.close()

Possiamo anche utilizzare la funzione print per scrivere nel file, dove specifichiamo il file su cui scrivere che abbiamo aperto in precedenza con open:


f = open('rubrica.txt', 'a')
name = input('Inserisci un nuovo nome: ')
telephone = input('Inserisci il telefono: ')
print('Nome:' + name + ' - Telefono:' + telephone, file = f)    
f.close()

Aggiungere contenuto a un file in Python – secondo esempio

In questo secondo esempio gestire più inserimenti grazie alle istruzioni cicliche.

Supponiamo ad esempio di voler chiedere all’utente quanti nomi si vuole aggiungere al file e di conseguenza gestire gli input in base alla risposta data.

Questa una possibile implementazione del semplice algoritmo nel quale utilizziamo il ciclo for:


f = open('rubrica.txt', 'a')

n_dati = int(input('Quanti dati vuoi inserire?: '))

for i in range(n_dati):
    name = input('Inserisci un nuovo nome: ')
    telephone = input('Inserisci il telefono: ')
    f.write('\nNome:' + name + ' - Telefono:' + telephone)

f.close()

Aggiungere contenuto a un file in Python – terzo esempio

Se vogliamo aggiungere più elementi possiamo utilizzare anche un’istruzione iterativa e terminare ad esempio quando si clicca su un carattere a scelta.

Ipotizziamo di voler inserire dei dati e fermarci quando si sceglie di digitare il carattere *.

Ecco dunque una possibile implementazione nel quale utilizziamo il ciclo while:


f = open('rubrica.txt', 'a')

print('Inserisci nuovi contatti nella rubrica, per terminare inserisci * nel nome')

name = input('Inserisci un nuovo nome: ')

while name !='*':
    telephone = input('Inserisci il telefono: ')
    f.write('\nNome:' + name + ' - Telefono:' + telephone)
    name = input('Inserisci un nuovo nome: ')
f.close()

Colgo l’occasione per ricordare che il ciclo for si utilizza quando sappiamo esattamente quante volte sarà eseguito il ciclo, come nel secondo esempio dove verrà esseguito n_dati. Mentre il ciclo while si utilizza quando si vuole fermare il ciclo a seguito di una condizione.

In questa lezione abbiamo visto alcuni semplici esempi su come aggiungere contenuto ad un file in Python.

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

readline Python

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: 3567
Nome: 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

JavaScript projects

JavaScript projects

In this article we will develop some simple JavaScript projects, such as displaying a counter that is incremented in various ways.

JavaScript projects – counter

In this first project we will build a counter using only Vanilla JavaScript.

Try clicking on the buttons below to increase or decrease the counter variable which starts from the initial value 0.

JavaScript Counter

0

How can we develop the code?

First here is the simple html code needed for our project.





We have inserted the button minus which has the function of decreasing the variable number and the button plus which instead has the function of increasing it.

To identify each element we used an id, in order to then be able to use the getElementById method in JavaScript.

We then add some simple CSS code of your choice. For example, I entered this:



.container {
    background-color: #2c45a3;
    text-align: center;
    padding: 20px;
    color: white;
}

h3 {
  font-size: 30px;  
}

button {
  font-size: 30px;
  background-color: #fc7180;
  color: #2c45a3;
  border: none;
  border-radius: 10px;
  padding: 10px 20px;
  cursor: pointer;
}

#number {
  font-size: 40px;
  padding: 0 50px;
}

And here is the JavaScript code that uses the addEventListener method to intercept the mouse click on the two plus and minus buttons.

What we will do by clicking the mouse on each button is simply to increase or decrease the value of the variable and write it in the element that has id number through the innerHTML property.



const number = document.getElementById('number');
const buttonPlus = document.getElementById('plus');
const buttonMinus = document.getElementById('minus');

buttonPlus.addEventListener('click', add);
buttonMinus.addEventListener('click', subtract);

let value = 0;

function add() {
  value++;
  number.innerHTML = value;
}

function subtract() {
  value--;
  number.innerHTML = value;
}

JavaScript projects – counter with different increment values

In this second example we increment the counter with different values: 1, 5, 10 or 100.

Then click on the various buttons to see the increase of the starting variable.

JavaScript Counter

0

In this second example we used the onclick event directly on the button in the HTML code.





You can see that we passed a second parameter depending on the value we want to increase.

Here is the JavaScript code:



const number = document.getElementById('number');

let value = 0;

function add(n) {
  value = value + n;
  number.innerHTML = value;
}

Conclusion

In this article we have developed a simple counter. We will then continue in the next articles to develop many interesting JavaScript projects.

Some useful links

JavaScript tutorial

JavaScript Calculator

Object in JavaScript

For in loop

Caesar cipher decoder

Slot Machine in JavaScript

JavaScript isNaN

JavaScript isNaN

JavaScript isNaN function determines whether the value passed as an argument is not a number.

The syntax is therefore the following: isNaN(value).

The function returns a Boolean value that is true if the argument passed is not a number, otherwise it returns false.

JavaScript isNaN – examples

In all the examples presented under the isNaN function gives true:



isNaN('13years');
isNaN('thirteen');
isNaN('13:50');
isNaN('13-01-20');
isNaN('13 01 20');
isNaN('true');

Instead in these other cases it has false value:



isNaN('13.50');
isNaN('13');
isNaN('');

As we can see therefore even if I pass the empty string it gives false as a result, as if it were a number.

Furthermore, even if we pass a number as a string, it always returns false, as in the example below:



var num = '13';
console.log(isNaN(num));

In the browser console we will display false, because the variable num is interpreted as a number.

Some useful links

JavaScript tutorial

JavaScript Calculator

Object in JavaScript

For in loop

Caesar cipher decoder

Slot Machine in JavaScript

Introduction to JavaScript language

Learn JavaScript – basic concepts