Lavorare con i flag in Python
Flag - è una variabile speciale,
che può assumere solo due valori:
True o False. Con l'aiuto
dei flag è possibile risolvere problemi che verificano
l'assenza di qualcosa: ad esempio, è possibile
verificare che in una lista non ci sia un elemento con
un determinato valore.
Risolviamo il seguente problema: data una lista
di numeri, verificare se tutti gli elementi
in essa sono positivi. Per fare questo
impostiamo una variabile speciale flag,
che sarà vera prima dell'inizio del ciclo. E
quando nel ciclo incontriamo un numero negativo,
cambiamo il suo valore in False. Per
conoscere il risultato del controllo,
visualizziamo la variabile flag dopo il ciclo
in console:
lst = [1, 2, 3, 4, 5]
flag = True
for el in lst:
if el < 0:
flag = False
print(flag) # visualizzerà True, poiché tutti i numeri sono positivi
Una buona pratica è assegnare alla
variabile flag un nome che rifletta
la condizione impostata. Rinominiamo flag
in isAllPositive. E per chiarezza
cambiamo un numero nella lista in negativo:
lst = [1, 2, 3, -4, 5]
isAllPositive = True
for el in lst:
if el < 0:
isAllPositive = False
print(isAllPositive) # visualizzerà False, poiché c'è un numero negativo
Se nella lista che stiamo scorrendo ci sono molti valori
e è necessario interrompere il ciclo dopo il rilevamento
del primo numero negativo, allora si dovrebbe
usare l'istruzione break:
for el in lst:
if el < 0:
isAllPositive = False
break
Quando si lavora con i flag, per conoscere il risultato
dell'esecuzione del ciclo, è possibile visualizzare non il valore
del flag, ma un messaggio arbitrario con l'aiuto
di un ulteriore if.
Riscriviamo l'esempio precedente. Se
tutti gli elementi sono positivi, allora
che venga visualizzato '+++', altrimenti -
'---':
for el in lst:
if el < 0:
isAllPositive = False
break
if isAllPositive:
print('+++')
else:
print('---') # visualizzerà '---'
Data una lista. Verifica che tutti i suoi elementi siano numeri positivi.
Dato un numero intero. Verifica se è un numero primo, cioè divisibile solo per uno e per se stesso.