n = input("Number? ") if n < 0: print "The absolute value of",n,"is",-n else: print "The absolute value of",n,"is",n
Output di due esecuzioni:
Number? -34 The absolute value of -34 is 34 Number? 1 The absolute value of 1 is 1
Quindi cosa fa il computer quando esegue questo codice? Prima di tutto chiede all'utente un numero grazie alla linea n = input("Number? ") dopodiché legge la linea if n < 0:, se n è minore di zero, Python esegue la linea print "The absolute value of",n,"is",-n, altrimenti (cioè se il numero è maggiore di zero) esegue la linea print "The absolute value of",n,"is",n.
Più semplicemente, Python decide se l'affermazione n < 0 è vera o falsa. Un'istruzione if è sempre seguita da un blocco di altre istruzioni indentate che vengono eseguite nel caso l'affermazione sia vera. In caso contrario vengono eseguiti i comandi indentati sotto l'istruzione else, ovvero quando l'affermazione if risulta falsa.
Python presenta svariati operatori associabili al confronto di una variabile, eccone una lista completa:
Operatore | Funzione |
< |
minore di |
<= |
minore o uguale a |
> |
maggiore di |
>= |
maggiore o uguale a |
== |
uguale |
!= |
diverso da |
<> |
variante di diverso da |
Un'altra proprietà dell'istruzione if è la funzione elif . È un'abbreviazione di else if e significa: esegui il blocco di istruzioni tabulato sotto elif se la condizione necessaria al primo if è falsa e la condizione elif è vera. Ecco un esempio:
a = 0 while a < 10: a = a + 1 if a > 5: print a," > ",5 elif a <= 7: print a," <= ",7 else: print "Neither test was true"
Questo è l'output:
1 <= 7 2 <= 7 3 <= 7 4 <= 7 5 <= 7 6 > 5 7 > 5 8 > 5 9 > 5 10 > 5
Osservate come la linea elif a <= 7 entri in azione solamente quando la prima istruzione if risulta falsa. Come potete vedere, l'istruzione elif consente di effettuare test multipli all'interno di una singola istruzione if.
High_low.py
# Giocate ad indovinare il numero alto-basso # (originariamente scritto da Josh Cogliati, migliorato da Quique) # Questo dovrebbe attualmente essere qualcosa che è semi casuale, come # l'ultimo carattere del tempo o qualcos'altro, ma dovrete aspettare # i prossimi capitoli (Esercizio supplementare, modificate con random, # come richiesto nel capitolo sull'uso dei moduli). number = 78 guess = 0 while guess != number : guess = input ("Guess a number: ") if guess > number : print "Too high" elif guess < number : print "Too low" print "Just right"
Esecuzione:
Guess a number:100 Too high Guess a number:50 Too low Guess a number:75 Too low Guess a number:87 Too high Guess a number:81 Too high Guess a number:78 Just right
even.py
# Chiedi un numero. # Stampa se è pari o dispari. number = input("Tell me a number: ") if number % 2 == 0: print number,"is even." elif number % 2 == 1: print number,"is odd." else: print number,"is very strange."
Esecuzione:
Tell me a number: 3 3 is odd. Tell me a number: 2 2 is even. Tell me a number: 3.14159 3.14159 is very strange.
average1.py
# Continua a chiedere numeri finché non viene immesso 0. # Stampa la media dei valori. count = 0 sum = 0.0 number = 1 # imposta un valore, altrimenti il ciclo # while terminerebbe immediatamente. print "Enter 0 to exit the loop" while number != 0: number = input("Enter a number:") count = count + 1 sum = sum + number count = count - 1 # Togli un'unità all'ultimo numero. print "The average was:",sum/count
Esecuzione:
Enter 0 to exit the loop Enter a number:3 Enter a number:5 Enter a number:0 The average was: 4.0 Enter 0 to exit the loop Enter a number:1 Enter a number:4 Enter a number:3 Enter a number:0 The average was: 2.66666666667
average2.py
# Continua a chiedere numeri finché count li richiede. # Stampa la media dei valori. sum = 0.0 print "This program will take several numbers than average them" count = input("How many numbers would you like to sum:") current_count = 0 while current_count < count: current_count = current_count + 1 print "Number ",current_count number = input("Enter a number:") sum = sum + number print "The average was:",sum/count
Esecuzione:
This program will take several numbers than average them How many numbers would you like to sum:2 Number 1 Enter a number:3 Number 2 Enter a number:5 The average was: 4.0 This program will take several numbers than average them How many numbers would you like to sum:3 Number 1 Enter a number:1 Number 2 Enter a number:4 Number 3 Enter a number:3 The average was: 2.66666666667
Scrivete un programma che chieda all'utente di indovinare una password, ma che dia al giocatore solamente 3 possibilità, fallite le quali il programma terminerà, stampando ``È troppo complicato per voi''.
Scrivete un programma che chieda due numeri. Se la somma dei due numeri supera 100, stampate ``Numero troppo grande''.
Scrivete un programma che chieda all'utente il nome. Se viene inserito il vostro nome, il programma dovrà rispondere con un ``Questo è un bel nome'', se il nome inserito è "John Cleese" o "Michel Palin" il programma dovrà rispondere con una battuta ;) mentre in tutti gli altri casi l'output del programma sarà un semplice ``Tu hai un bel nome!''.