CodeGym /Corso Java /Python SELF IT /Ancora un po' sui cicli e gli if

Ancora un po' sui cicli e gli if

Python SELF IT
Livello 4 , Lezione 5
Disponibile

11.1 Operatore ternario

In Python esiste il cosiddetto operatore ternario, che di fatto rappresenta una forma modificata dell'operatore if else.

Supponiamo che tu abbia il seguente codice:


if a < b:
   min = a
else:
   min = b

Per non far occupare troppo spazio a un codice così semplice, è stata inventata una scrittura compatta. Avrà questo aspetto:


min = a if a < b else b

La forma generale dell'operatore ternario può essere descritta così:


variabile = valore1 if condizione else valore2

Se la condizione è vera, alla variabile viene assegnato il valore1, se è falsa — il valore2.

Nota che i due punti dopo la condizione qui non si mettono.

11.2 Operatore else nei cicli

In Python, l'operatore else è spesso associato agli operatori condizionali if. Tuttavia, il suo utilizzo non è limitato a questo, e else può essere applicato anche nei cicli for e while.

Questo aspetto non ovvio di else nel contesto dei cicli può confondere i principianti, ma apre interessanti possibilità per la gestione del flusso di esecuzione del programma.

Come funziona else nei cicli

Nei cicli, else viene eseguito dopo la conclusione del ciclo, ma solo se il ciclo si è concluso normalmente (cioè non è stato interrotto dall'operatore break). Questa caratteristica rende else utile per scenari in cui occorre verificare se il ciclo sia stato interrotto prematuramente.

Esempio di utilizzo nel ciclo for:


for i in range(3):
    password = input('Inserisci la password: ')
    if password == 'segreto':
        print('Password accettata.')
        break
else:
    print('Nessun tentativo di inserimento o tutte le password inserite sono errate.')               

Qui else scatta se l'utente ha inserito tre volte una password errata. Se l'utente inserisce la password corretta, il ciclo viene interrotto da break, e il blocco else non viene eseguito.

Esempio di utilizzo nel ciclo while:


n = 5
while n > 0:
    print(n)
    n -= 1
else:
    print('Il ciclo si è concluso normalmente.')               

In questo caso, else viene eseguito dopo che il ciclo si è concluso in modo naturale, poiché la condizione è diventata falsa.

Significato pratico

L'utilizzo di else nei cicli può essere particolarmente utile negli algoritmi di ricerca, dove è necessario stabilire se la ricerca sia stata coronata da successo. Ad esempio, nella ricerca di un elemento in una lista che non esiste, si può utilizzare else per visualizzare un messaggio di fallimento dopo il termine del ciclo.

Utilizza else nei cicli in modo chiaro e consistente, per non confondere chi leggerà il tuo codice. Ricorda che else nei cicli non è sempre intuitivo, quindi è meglio aggiungere commenti o scegliere altri modi di implementare la logica, se questo rende il codice più comprensibile.

11.3 Cicli annidati

In Python è possibile scrivere logiche molto complesse in modo molto compatto. In alcuni casi avrai bisogno di if annidati, in altri — di cicli annidati. Ecco alcuni dettagli su come funzionano:

Un ciclo annidato significa avere un ciclo dentro un altro. Questo permette, ad esempio, di gestire array multidimensionali, liste di liste o altre strutture dati annidate.

I cicli annidati consistono in un ciclo esterno e uno o più cicli interni. Ogni volta che il ciclo esterno esegue un'iterazione, il ciclo interno è eseguito completamente:


for i in range(3):  # Ciclo esterno
    for j in range(3):  # Ciclo interno
        print(f"({i}, {j})")               

Dal punto di vista del ciclo esterno, il ciclo interno e il suo contenuto sono solo un blocco di comandi che vengono eseguiti per ciascuna iterazione del ciclo esterno. Al ciclo esterno non importa cosa ci sia dentro, quanti cicli ci siano e così via. Esegue semplicemente il suo blocco interno di comandi ogni volta per la variabile dalla sua lista.

Diamo un'occhiata a come stampare una tabella di moltiplicazione — i cicli annidati sono perfetti per questo compito. Creare una tabella di moltiplicazione usando cicli annidati, dove un ciclo è responsabile del moltiplicatore e l'altro del moltiplicando:


n = 5
for i in range(1, n + 1):
    for j in range(1, n + 1):
        print(f"{i} * {j} = {i * j}", end='\t')
    print()  # Passaggio a una nuova riga per il prossimo moltiplicatore               

Questo esempio stamperà la seguente tabella:


1 * 1 = 1	1 * 2 = 2	1 * 3 = 3	1 * 4 = 4	1 * 5 = 5	
2 * 1 = 2	2 * 2 = 4	2 * 3 = 6	2 * 4 = 8	2 * 5 = 10	
3 * 1 = 3	3 * 2 = 6	3 * 3 = 9	3 * 4 = 12	3 * 5 = 15	
4 * 1 = 4	4 * 2 = 8	4 * 3 = 12	4 * 4 = 16	4 * 5 = 20	
5 * 1 = 5	5 * 2 = 10	5 * 3 = 15	5 * 4 = 20	5 * 5 = 25

Per comprendere meglio i cicli annidati, devi semplicemente praticare di più — questo è il modo più rapido per padroneggiare praticamente qualsiasi cosa non ovvia nella programmazione.

1
Опрос
Cicli e ramificazioni,  4 уровень,  5 лекция
недоступен
Cicli e ramificazioni
Cicli e ramificazioni
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION