Εργασία με σημαίες στην Python

Σημαία - είναι μια ειδική μεταβλητή, που μπορεί να πάρει μόνο δύο τιμές: True ή False. Με τη βοήθεια σημαίων μπορούμε να λύσουμε προβλήματα που ελέγχουν την απουσία κάτι: για παράδειγμα, μπορούμε να ελέγξουμε ότι σε μια λίστα δεν υπάρχει στοιχείο με μια συγκεκριμένη τιμή.

Ας λύσουμε το ακόλουθο πρόβλημα: δίνεται μια λίστα με αριθμούς, πρέπει να ελέγξουμε εάν όλα τα στοιχεία σε αυτήν είναι θετικά. Για αυτό θα ορίσουμε μια ειδική μεταβλητή flag, που πριν από την έναρξη του βρόχου θα είναι αληθής. Και όταν βρεθεί στον βρόχο ένας αρνητικός αριθμός, θα αλλάξουμε την τιμή της σε False. Για να μάθουμε το αποτέλεσμα του ελέγχου, θα εκτυπώσουμε τη μεταβλητή flag μετά τον βρόχο στην κονσόλα:

pythonlst = [1, 2, 3, 4, 5]
flag = True

for el in lst:
  if el < 0:
    flag = False
    
print(flag) # θα εκτυπώσει True, αφού όλοι οι αριθμοί είναι θετικοί

Μια καλή πρακτική είναι η ανάθεση για τη μεταβλητή με τη σημαία ενός ονόματος που αντικατοπτρίζει τη δεδομένη συνθήκη. Ας μετονομάσουμε το flag σε isAllPositive. Και για περισσότερη σαφήνεια ας αλλάξουμε έναν αριθμό από τη λίστα σε αρνητικό:

pythonlst = [1, 2, 3, -4, 5]
isAllPositive = True

for el in lst:
  if el < 0:
    isAllPositive = False
    
print(isAllPositive) # θα εκτυπώσει False, αφού υπάρχει αρνητικός αριθμός

Εάν στη λίστα που εξετάζουμε υπάρχουν πολλές τιμές και χρειάζεται να σταματήσουμε τον βρόχο μετά από την ανίχνευση του πρώτου αρνητικού αριθμού, τότε πρέπει να εφαρμόσουμε την εντολή break:

pythonfor el in lst:
  if el < 0:
    isAllPositive = False
    break

Όταν εργαζόμαστε με σημαίες, για να μάθουμε το αποτέλεσμα της εκτέλεσης του βρόχου, μπορούμε να εκτυπώσουμε όχι την τιμή της σημαίας, αλλά ένα αυθαίρετο μήνυμα με τη βοήθεια ενός πρόσθετου if.

Ας ξαναγράψουμε το προηγούμενο παράδειγμα. Εάν όλα τα στοιχεία είναι θετικά, ας εκτυπωθεί το '+++', εάν όχι - '---':

pythonfor el in lst:
  if el < 0:
    isAllPositive = False
    break

if isAllPositive:
  print('+++')
else:
  print('---') # θα εκτυπώσει '---'
Задание 1

Δίνεται μια λίστα. Ελέγξτε ότι όλα τα στοιχεία της είναι θετικοί αριθμοί.

Задание 2

Δίνεται ένας ακέραιος αριθμός. Ελέγξτε εάν είναι πρώτος, δηλαδή διαιρείται μόνο με το ένα και τον εαυτό του.