Primi esempi con cose di base

Introduzione

Il codice seguente va copiato ed incollato in una finestra di IDLE - l'editor di base di Python, per poter essere eseguito e compreso, tramite il confronto fra le istruzioni eseguite e l'output ottenuto.

Commenti

"""Un primo esempio di programma Python
In questo esempio vedremo:
- come si scrivono i commenti
- come si formatta l'output
- come si usa la capacità introspettiva del linguaggio
- come si ottiene un input
- come si gestiscono selezioni e cicli
"""

"""I commenti possono essere scritti su una riga a partire dal punto in
cui è presente un #, oppure su più righe (come queste)
"""

Output e stringhe di formattazione

print("--------")

amount=50 # assegna il valore 50 alla variabile importo

print(amount)
# visualizza il valore di importo

print("L'importo è ", amount, ".")
# visualizza la costante tra virgolette e poi il valore
# questo tipo di output è sconveniente perché spezza la frase 
# (ad esempio, sono difficili le traduzioni)

print("L'importo è %d." % amount)
# visualizza il valore usando una stringa di formattazione
# (%d è un segnaposto per i numeri interi)
# questo tipo di output, simile a quello delle funzioni printf e sprintf del C,
# è deprecato e non sarà più valido in futuro

rate=.073

print("Il tasso è %4.2f%%." % (rate*100))
# la stringa di formattazione è un po' più complicata, perché stiamo
# rappresentando un valore in virgola mobile (segnaposto %f) per il quale
# diciamo quante cifre destinare alla parte dopo la virgola    

print("L'importo è %d e il tasso è %4.2f%%." % (amount, rate*100))
# stringa di formattazione con due segnaposto: i valori 
# vanno inseriti in una tupla

print("L'importo è %(amount)s e il tasso è %(rate)s%%." % {"amount": amount, "rate": rate*100})
# stringa di formattazione con uso di segnaposto aventi un nome
# e un dizionario di associazioni per i valori

print("L'importo è {amount} e il tasso è {rate}%.".format(amount=amount, rate=rate*100))
# usando il metodo format della classe str, si possono usare parametri con nome

Questi ultimi due esempi producono il seguente output:

L'importo è 50 e il tasso è 7.3%.

print(id(amount))
# visualizza il codice univoco associato all'oggetto amount
print(type(amount))
# visualizza il tipo dell'oggetto

<class 'int'>

name=input("Come ti chiami? ")
print("Ciao, %s." % name)
# per un input da parte dell'utente, è sufficiente usare la funzione input
print(len(name))
# visualizza la lunghezza del nome

Test

age=input("Quanti anni hai? ")
if age.isdigit():
    print("Hai inserito un numero.")
    to100 = 100 - int(age)
    if to100>0:
        print("Ti mancano %d anni per arrivare a 100!" % to100)
else:
    print("Hai inserito qualcosa che non è un numero.")

Cicli "while"

print("vediamo un ciclo while...")
n=2
while(n<5):
    print(n)
    n+=1 # incremento della variabile n di una unità
print("ciclo while finito...")

# se vogliamo un test in coda (come nel repeat... until del pascal)
# possiamo usare la parola chiave break
n=2
print("ciclo con break condizionato")
while(True):
    print(n)
    n+=1
    if(n>=5):
        break
print("fine ciclo con break condizionato")

Cicli "for"

# I cicli for si basano su oggetti che possono essere iterati:
print("ciclo for")
for fruit in ["arancia", "mela", "pera", "ananas"]:
    print(fruit)

arancia mela pera ananas

fruits=["arancia", "mela", "pera", "ananas"]
for fruit in fruits:
    print(fruit)

arancia
mela
pera
ananas

Se si deve iterare su più liste in parallelo si può usare la funzione zip (il ciclo termina con l'esaurimento della lista di lunghezza inferiore).

print("*** Ciclo for basato su diversi oggetti iterabili percorsi in parallelo")
colors=["arancio", "bianco", "bianco", "giallo"]
for fruit, color in zip(fruits, colors):
    print('Il frutto %s ha la polpa color %s.' % (fruit, color))

*** Ciclo for basato su diversi oggetti iterabili percorsi in parallelo Il frutto arancia ha la polpa color arancio. Il frutto mela ha la polpa color bianco. Il frutto pera ha la polpa color bianco. Il frutto ananas ha la polpa color giallo.

sentence="ma che bel castello marcondirodirondello..."
for letter in sentence:
    if letter in "aeiou":
        print(letter.upper(), end="") # mettiamo in maiuscolo le vocali...
    else:
        print(letter, end="")
print()

Cicli con indici numerici

print("*** Ciclo for su range(5)")
for i in range(5):
    print(i)

*** Ciclo for su range(5)
0
1
2
3
4

print("*** Ciclo for su range(5, 10)")
for i in range(5,10):
    print(i)

*** Ciclo for su range(5, 10)
5
6
7
8
9

Come si può notare, non si raggiunge l'estremo superiore.

print("*** Ciclo for su range(10, 20, 2)")
for i in range(10, 20, 2):
    print(i)

*** Ciclo for su range(10, 20, 2)
10
12
14
16
18

Cicli alla rovescia

Per fare un ciclo alla rovescia basta usare range con un incremento negativo:

print("*** Ciclo for su range(5, 0, -1)")
for i in range(5,0,-1):
  print(i)

*** Ciclo for su range(5, 0, -1)
5
4
3
2
1

In questo caso, non si raggiunge il limite inferiore.

Nel caso si abbia la necessità di visualizzare i caratteri (che vengono indicizzati a partire da 0) della stringa s partendo dall'ultimo, dovremo fare un ciclo strutturato in questo modo:

print("*** Ciclo for per i caratteri di una stringa alla rovescia")
name="Mario"
for i in range(len(name)-1,-1,-1):
  print(name[i])

*** Ciclo for per i caratteri di una stringa alla rovescia
o
i
r
a
M

Si tenga presente che, comunque, gli elementi di una sequenza possono essere gestiti anche ricorrendo ad un indice negativo: -1 corrisponde all'ultimo elemento, -2 al penultimo, ecc. Avremmo quindi potuto scrivere anche:

name="Mario"
for i in range(1,len(name)+1): # ciclo da 1 alla lunghezza della stringa +1
  print(-i, name[-i]) # uso l'opposto di i

-1 o
-2 i
-3 r
-4 a
-5 M

results matching ""

    No results matching ""