Subsections

3. Chi va là?

3.1 Input e variabili

Ora proviamo un programma un po' più complicato:
print "Halt!"
s = raw_input("Who Goes there? ")
print "You may pass,", s

Quando io lo eseguo, questo appare sul mio schermo:

Halt!
Who Goes there? Josh
You may pass, Josh

Ovviamente quando proverete anche voi l'esecuzione il vostro output sarà differente, grazie all'istruzione raw_input. Avviando il programma (perché lo state provando vero?) avrete notato che richiede l'inserimento del vostro nome e poi la pressione di Enter per continuare l'esecuzione; a quel punto viene visualizzato un messaggio seguito dal vostro nome. Questo è un esempio di input: il programma viene eseguito fino ad un certo punto, dopodiché attende un input di dati dall'utente.

Naturalmente un input sarebbe inutile se non avessimo nessun posto dove mettere l'informazione ottenuta, ecco quindi che entrano in gioco le variabili. Nel programma precedente s è, appunto, una variabile. Le variabili sono come delle scatole in cui si possono immagazzinare dati. Ecco un programma che ne spiega l'utilizzo:

a = 123.4
b23 = 'Spam'
first_name = "Bill"
b = 432
c = a + b
print "a + b is", c
print "first_name is", first_name
print "Sorted Parts, After Midnight or",b23

E questo è l'output:

a + b is 555.4
first_name is Bill
Sorted Parts, After Midnight or Spam

Come ho detto: le variabili immagazzinano dati. Nel programma qui sopra ad esempio sono a, b23, first_name, b e c. Le due tipologie base di variabili sono stringhe e numeri. Le stringhe sono sequenze di lettere, numeri e altri caratteri: nell'esempio b23 e first_name sono variabili contenenti stringhe. Spam, Bill, a + b is, e first_name is sono stringhe, come potete notare sono sempre racchiuse da " o '. Gli altri tipi di variabili presenti sono numeri.

Ora, abbiamo queste scatole chiamate variabili ed anche dati da metterci dentro. Il computer vedrà una linea come first_name = "Bill" che leggerà come ``Metti la stringa Bill nella scatola (o variabile) first_name''. Più tardi vedrà l'espressione c = a + b che leggerà come ``Metti a + b o 123.4 + 432 o 555.4 all'interno della variabile c''.

Ecco un'altro esempio sull'utilizzo delle variabili:

a = 1
print a
a = a + 1
print a
a = a * 2
print a

E naturalmente ecco l'output:

1
2
4

Anche se in tutti i casi elencati la variabile ha lo stesso nome, il computer la rilegge ogni volta: prima trova i dati da immagazzinare e poi decide dove immagazzinarli.

Un'ultimo esempio prima di chiudere il capitolo:

num = input("Type in a Number: ")
str = raw_input("Type in a String: ")
print "num =", num
print "num is a ",type(num)
print "num * 2 =",num*2
print "str =", str
print "str is a ",type(str)
print "str * 2 =",str*2

Ecco l'output ottenuto:

Type in a Number: 12.34
Type in a String: Hello
num = 12.34
num is a  <type 'float'>
num * 2 = 24.68
str = Hello
str is a  <type 'string'>
str * 2 = HelloHello

Osserva il modo in cui ho ottenuto dall'utente le due variabili: input per la variabile numerica e raw_input per la variabile stringa. Quando volete che l'utente inserisca un numero o una stringa utilizzate, rispettivamente, input o raw_input.

La seconda parte del programma utilizza la funzione type che vi informa sul tipo di variabile: le varibili numeriche sono di tipo 'int' (numero 'intero') o 'float' (numero 'decimale'), le stringhe sono di tipo string. Interi e decimali possono essere utilizzati per operazioni matematiche, le stringhe no. Tuttavia quando una stringa viene moltiplicata per un intero vengono aggiunte alla stringa copie di se stessa: ad es. str * 2 = HelloHello.

Le operazioni con le stringhe differiscono leggermente da quelle con i numeri. I seguenti, sono alcuni esempi che mostrano tali differenze.

>>> "This"+" "+"is"+" joined."
'This is joined.'
>>> "Ha, "*5
'Ha, Ha, Ha, Ha, Ha, '
>>> "Ha, "*5+"ha!"
'Ha, Ha, Ha, Ha, Ha, ha!'
>>>

Questa è una lista di alcune operazioni con le stringhe:

Operazione Simbolo Esempio
Ripetizione * "i"*5 == "iiiii"
Concatenazione + "Hello, "+"World!" == "Hello, World!"

3.2 Esempi

Velocita_tempo.py

# Questo programma calcola lo spazio, data velocità e tempo.
print "Input a rate and a distance"
rate = input("Rate:")
distance = input("Distance:")
print "Time:",distance/rate

Esecuzione:

> python velocita_tempo.py
Input a rate and a distance
Rate:5
Distance:10
Time: 2
> python velocita_tempo.py 
Input a rate and a distance
Rate:3.52
Distance:45.6
Time: 12.9545454545

Area.py

# Questo programma calcola perimetro ed area del rettangolo.
print "Calculate information about a rectangle"
length = input("Length:")
width = input("Width:")
print "Area",length*width
print "Perimeter",2*length+2*width

Esecuzione:

> python area.py
Calculate information about a rectangle
Length:4
Width:3
Area 12
Perimeter 14
> python area.py
Calculate information about a rectangle
Length:2.53
Width:5.2
Area 13.156
Perimeter 15.46

temperature.py

# Converte Fahrenheit in Celsius.
temp = input("Farenheit temperature:")
print (temp-32.0)*5.0/9.0

Esecuzione:

> python temperature.py
Farenheit temperature:32
0.0
> python temperature.py
Farenheit temperature:-40
-40.0
> python temperature.py
Farenheit temperature:212
100.0
> python temperature.py
Farenheit temperature:98.6
37.0

3.3 Esercizi

Scrivete un programma che prenda due variabili stringa e due numeriche intere dall'utente, le concateni (unisca le due stringhe senza spazi) e le visualizzi sullo schermo, infine moltiplichi i due numeri interi su una nuova linea.