3.4 Ελεγχόμενη επανάληψη ακολουθίας και μορφοποιημένες συμβολοσειρές

Ας εξετάσουμε ένα πρόβλημα μέσου όρου βαθμολογιών μιας τάξης, όπου οι βαθμολογίες είναι ακέραιοι αριθμοί μεταξύ 0 και 100. Για παράδειγμα, αν μια τάξη αποτελείται από δέκα μαθητές με βαθμολογίες 98, 76, 71, 87, 83, 90, 57, 79, 82, και 94, θα πρέπει να υπολογίσουμε τον μέσο όρο της τάξης.

Λύση με Σενάριο (Script)

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

# Οι βαθμολογίες των μαθητών
grades = [98, 76, 71, 87, 83, 90, 57, 79, 82, 94]

# Υπολογισμός του συνόλου των βαθμολογιών
total = sum(grades)

# Υπολογισμός του μέσου όρου
average = total / len(grades)

# Εμφάνιση του μέσου όρου
print(f"Ο μέσος όρος της τάξης είναι: {average:.2f}")

Στο παράδειγμα αυτό, χρησιμοποιούμε τη συνάρτηση sum() για να πάρουμε το σύνολο των βαθμολογιών και την len() για να πάρουμε τον αριθμό των βαθμολογιών. Το αποτέλεσμα του μέσου όρου εμφανίζεται με δύο δεκαδικά ψηφία μετά την υποδιαστολή, χρησιμοποιώντας μορφοποιημένη συμβολοσειρά (formatted string).

Εισαγωγή στις Μορφοποιημένες Συμβολοσειρές (Formatted Strings) στην Python

Στην Python, οι μορφοποιημένες συμβολοσειρές (formatted strings) είναι ένας πολύ χρήσιμος τρόπος για να ενσωματώσετε μεταβλητές και λογικές εκφράσεις μέσα σε συμβολοσειρές, επιτρέποντας πιο ευέλικτη και ευανάγνωστη εμφάνιση των δεδομένων. Υπάρχουν διάφοροι τρόποι για να μορφοποιήσετε μια συμβολοσειρά στην Python, αλλά ένας από τους πιο δημοφιλείς και σύγχρονους είναι η χρήση των f-strings (από την έκδοση Python 3.6 και μετά).

Χρήση των f-strings

Μια f-string δημιουργείται προσθέτοντας το γράμμα f ή F αμέσως πριν από τα ανοιχτήρια εισαγωγικά. Μέσα στην f-string, μπορείτε να βάλετε εκφράσεις μέσα σε αγκύλες {} και αυτές θα αξιολογηθούν και θα αντικατασταθούν με τις τιμές τους.

Παράδειγμα:

name = "Αλέξης"
age = 30

greeting = f"Γεια σου, το όνομά μου είναι {name} και είμαι {age} ετών."
print(greeting)  # Εκτυπώνει: Γεια σου, το όνομά μου είναι Αλέξης και είμαι 30 ετών.

Μορφοποίηση με f-strings

Οι f-strings επιτρέπουν επίσης τη μορφοποίηση των τιμών. Για παράδειγμα, μπορείτε να καθορίσετε τον αριθμό των δεκαδικών ψηφίων για αριθμούς κινητής υποδιαστολής:

π = 3.14159265
formatted_π = f"Τιμή του π: {π:.2f}"  # Κρατά μόνο δύο δεκαδικά ψηφία
print(formatted_π)  # Εκτυπώνει: Τιμή του π: 3.14

Οι f-strings προσφέρουν μια συνοπτική και άμεση μέθοδο για την ενσωμάτωση και μορφοποίηση δεδομένων μέσα σε συμβολοσειρές, κάνοντας τον κώδικα πιο καθαρό και ευανάγνωστο.

Επανάληψη Ελεγχόμενη από Φρουρό (Sentinel-Controlled Iteration) στην Python

Η επανάληψη ελεγχόμενη από φρουρό είναι μια τεχνική προγραμματισμού όπου η επανάληψη συνεχίζεται μέχρι να ληφθεί μια συγκεκριμένη τιμή, γνωστή ως τιμή φρουρού ή σημαία. Αυτή η τεχνική χρησιμοποιείται συχνά όταν δεν είναι γνωστός εκ των προτέρων ο αριθμός των επαναλήψεων.

Παράδειγμα Επίλυσης του Προβλήματος Μέσου Όρου Τάξης με Επανάληψη Ελεγχόμενη από Φρουρό

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

# Αρχικοποίηση μεταβλητών
total = 0
count = 0
grade = 0

print("Εισάγετε τους βαθμούς της τάξης (ή -1 για να σταματήσετε):")

# Επανάληψη μέχρι ο χρήστης να εισάγει την τιμή φρουρού (-1)
while grade != -1:
    grade = int(input("Βαθμός: "))

    if grade != -1:
        total += grade
        count += 1

# Έλεγχος για διαίρεση με το μηδέν
if count > 0:
    average = total / count
    print(f"Ο μέσος όρος της τάξης είναι: {average}")
else:
    print("Δεν εισήχθησαν βαθμοί.")

Στο παράδειγμα αυτό, ο χρήστης καλείται να εισάγει τους βαθμούς έναν προς έναν. Η επανάληψη συνεχίζεται μέχρι ο χρήστης να εισάγει την τιμή φρουρού (-1). Στη συνέχεια, υπολογίζεται ο μέσος όρος των εισαγόμενων βαθμών. Επιπλέον, πραγματοποιείται έλεγχος για να αποφευχθεί διαίρεση με το μηδέν, η οποία θα προκαλούσε λογικό σφάλμα.

Η τεχνική της επανάληψης ελεγχόμενης από φρουρό είναι χρήσιμη σε περιπτώσεις όπου η εισαγωγή δεδομένων είναι δυναμική και δεν προκαθορίζεται από σταθερά παραμέτρους.

Μορφοποίηση του Μέσου Όρου της Τάξης με Δύο Δεκαδικά Ψηφία

Στην Python, μπορείτε να μορφοποιήσετε τον μέσο όρο μιας τάξης ώστε να εμφανίζει δύο δεκαδικά ψηφία, χρησιμοποιώντας είτε τη συνάρτηση format() είτε τις f-strings.

Χρήση της συνάρτησης format()

average = 82.56789  # Έστω ότι αυτός είναι ο μέσος όρος
formatted_average = format(average, '.2f')
print("Ο μέσος όρος της τάξης είναι:", formatted_average)

Εδώ, η συνάρτηση format() μορφοποιεί τον μέσο όρο (average) σε μια συμβολοσειρά με δύο δεκαδικά ψηφία.

Χρήση των f-strings

Οι f-strings είναι ένας άλλος τρόπος για τη μορφοποίηση τιμών στην Python. Για τον μέσο όρο με δύο δεκαδικά ψηφία, μπορείτε να γράψετε:

average = 82.56789  # Έστω ότι αυτός είναι ο μέσος όρος
print(f"Ο μέσος όρος της τάξης είναι: {average:.2f}")

Η f-string {average:.2f} μορφοποιεί την τιμή του average σε μια συμβολοσειρά με δύο δεκαδικά ψηφία.

Και οι δύο μέθοδοι είναι αποτελεσματικές και σας επιτρέπουν να εμφανίσετε τις τιμές με μια συγκεκριμένη μορφή δεκαδικών ψηφίων, κάνοντας τα δεδομένα πιο κατανοητά και επαγγελματικά.

10 Ιανουαρίου, 2024
top
error: Content is protected !!
Μετάβαση σε γραμμή εργαλείων