PYTHON ΜΑΘΗΜΑ 4 – ΤΑ ΜΥΣΤΙΚΑ ΤΩΝ STRINGS (ΣΥΜΒΟΛΟΣΕΙΡΕΣ)

 

Δωρεάν Μαθήματα Python


ΕΙΣΑΓΩΓΗ

Καλώς ήρθατε στο 4ο μάθημα! Μέχρι τώρα έχουμε μάθει πώς να αποθηκεύουμε αριθμούς και απλά μηνύματα.

Όμως, η πραγματική επικοινωνία με τον χρήστη γίνεται μέσω κειμένου. Είτε φτιάχνετε ένα chatbot, είτε ένα e-shop, είτε μια εφαρμογή ανάλυσης δεδομένων, το 90% της δουλειάς σας θα είναι η διαχείριση κειμένου. 

Στην Python, το κείμενο ονομάζεται String (Συμβολοσειρά). Σήμερα θα μάθουμε πώς να το "δαμάσουμε".

ΤΙ ΕΙΝΑΙ ΤΕΛΙΚΑ ΕΝΑ STRING

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

Υπάρχει μια σημαντική λεπτομέρεια στην Python: Τα Strings είναι αμετάβλητα (immutable).

Τι σημαίνει αυτό; Ότι μόλις δημιουργήσετε ένα String, δεν μπορείτε να αλλάξετε τα περιεχόμενά του. Αν προσπαθήσετε να το αλλάξετε (π.χ. να διορθώσετε ένα ορθογραφικό), η Python δεν πειράζει το αρχικό String. Αντ' αυτού, δημιουργεί ένα ολοκαίνουργιο String με τη διόρθωση και πετάει το παλιό.

ΟΙ ΤΡΟΠΟΙ ΟΡΙΣΜΟΥ

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

Μπορούμε να χρησιμοποιήσουμε είτε ' ' είτε " ". Γιατί; Σκεφτείτε ότι θέλετε να τυπώσετε ένα μήνυμα που περιέχει απόστροφο ή κάποιο quote.

app.py
# Περίπτωση 1: Χρήση διπλών εισαγωγικών αν έχουμε απόστροφο μέσα
status = "User's profile updated"

# Περίπτωση 2: Χρήση μονών εισαγωγικών αν έχουμε quote μέσα
review = 'The customer said: "Excellent Service!"'

print(status)
print(review)

Output

Αποτέλεσμα εκτέλεσης κώδικα Python


Αν θέλετε να γράψετε ένα μεγάλο κείμενο που πιάνει πολλές γραμμές (π.χ. το μενού μιας εφαρμογής ή ένα email), χρησιμοποιείτε τριπλά εισαγωγικά """ """.

app.py

menu = """
=== GAME MENU ===
1. Start New Game
2. Load Game
3. Settings
4. Exit
"""
print(menu)

Output

Αποτέλεσμα εκτέλεσης κώδικα Python



Βασικές Λειτουργίες Strings

Η Python έχει δεκάδες εργαλεία για τα Strings. Ας δούμε τα πιο απαραίτητα που θα χρησιμοποιείτε καθημερινά.

Ένωση Κειμένων (Concatenation)

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

app.py

first_name = "Michail"
last_name = "Kassapoglou"

# Ενώνουμε τα ονόματα με ένα κενό ανάμεσα
full_name = first_name + " " + last_name
print(full_name) # Michail Kassapoglou

Output

Αποτέλεσμα εκτέλεσης κώδικα Python


Πόσο μεγάλο είναι το String; (Length)

Η συνάρτηση len() μας επιστρέφει το μήκος του κειμένου. Πολύ χρήσιμο αν θέλετε π.χ. να ελέγξετε αν ένας κωδικός πρόσβασης είναι αρκετά μεγάλος.

app.py

password = "supersecret123"
print(len(password)) # Θα τυπώσει: 14

Output
Αποτέλεσμα εκτέλεσης κώδικα Python



Πώς "αρπάζουμε" χαρακτήρες (Indexing)

Ένα άλλο σημαντικό στοιχείο που έχουν τα strings, αν και δεν ορατό άμεσα, είναι ο αριθμός index. Για κάθε χαρακτήρα ενός string, η Python αναθέτει έναν αριθμό ξεκινώντας την αρίθμηση από το 0. Για παράδειγμα:

Array indexing

Για να διαβάσουμε τον χαρακτήρα που αντιστοιχεί σε μια συγκεκριμένη index θέση, γράφουμε το όνομα της string μεταβλητής και αμέσως μετά μέσα σε square brackets ( [ ] ) τον αριθμό του index. Αν γράψουμε αρνητικό αριθμό τότε διαβάζουμε το string από το τέλος. Προσέξτε όταν δηλώνετε τον index αριθμό. Αν ζητήσετε έναν αριθμό index που δεν ανήκει στο string (ίσως γιατί ο αριθμός που ζητάτε είναι μεγαλύτερος) τότε η Python θα παραπονεθεί και δεν θα εκτελεστεί το πρόγραμμα σας.

app.py
product_code = "ABC-12345"

# Θέλω να δω το πρώτο γράμμα του κωδικού
print(product_code[0])  # Τυπώνει: A

# Θέλω να δω τον 5ο χαρακτήρα
print(product_code[4])  # Τυπώνει: 1

Output

Αποτέλεσμα εκτέλσης κώδικα Python


Κόβοντας φέτες (Slicing)

Αν και η ιδιότητα του index είναι πολύ χρήσιμη, συνήθως δεν ζητάμε ένα μεμονωμένο χαρακτήρα αλλά ένα υποσύνολο του string. Για να καταφέρουμε να διαβάσουμε ένα υποσύνολο του string χρησιμοποιούμε slicing.

app.py

first = "Michail"
print(first[0:3])

Output

Αποτέλεσμα εκτέλεσης κώδικα Python


Ο πρώτος αριθμός δηλώνει το index από το οποίο θα αρχίζουμε να διαβάζουμε το string, ενώ ο δεύτερος αριθμός δηλώνει σε ποιο index θα σταματήσουμε. Τον χαρακτήρα στο index στο οποίο σταματάμε δεν το λαμβάνουμε υπόψη στο τελικό αποτέλεσμα. Άρα η εξήγηση στο παραπάνω παράδειγμα είναι: ξεκίνησε να διαβάζεις από το index 0 και σταμάτησε στο index 3 χωρίς όμως να διαβάσεις το στοιχείο στο index 3.

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

app.py

first = "Michail"
print(first[0:6:2])

Output
Αποτέλεσμα εκτέλεσης κώδικα Python


Αλλαγή Πεζών-Κεφαλαίων

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

app.py

email = "User@Example.com"

print(email.lower()) # user@example.com (Όλα μικρά)
print(email.upper()) # USER@EXAMPLE.COM (Όλα κεφαλαία)

Output

Αποτέλεσμα εκτέλεσης κώδικα Python


Αντικατάσταση (Replace)

Η replace( ) function αντικαθιστά χαρακτήρες μέσα σε ένα string. Δέχεται δύο παραμέτρους – η πρώτη παράμετρος είναι ο χαρακτήρας (ή οι χαρακτήρες) που ψάχνουμε να αντικαταστήσουμε και η δεύτερη παράμετρος είναι ο καινούργιος χαρακτήρας που επιθυμούμε να εισάγουμε στο string ως αντικατάσταση.

app.py

description = "iPhone 12 - Price: $799"

# Αλλάζουμε το δολάριο με ευρώ
greek_desc = description.replace("$", "")
print(greek_desc)

Output

Αποτέλεσμα εκτέλεσης κώδικα Python


Διαχωρισμός (Split)

Ίσως η πιο χρήσιμη εντολή. Σπάει ένα κείμενο σε λίστα, με βάση κάποιον χαρακτήρα (π.χ. κόμμα ή κενό).

app.py

tags = "python,coding,tutorial,beginners"

# Δημιουργούμε μια λίστα με τα tags
tag_list = tags.split(",")
print(tag_list)
# Αποτέλεσμα: ['python', 'coding', 'tutorial', 'beginners']

Output

Αποτέλεσμα εκτέλεσης κώδικα Python


F - Strings

Ο πιο εύκολος τρόπος να εισάγουμε μια μεταβλητή μέσα σε ένα string είναι να χρησιμοποιήσουμε f strings. Ο τρόπος αυτός είναι πιο εύκολος από ότι η τεχνική του concatenation που πρέπει να προσθέτουμε το + σύμβολο μετά από κάθε όρο.

app.py

first_name = "Michail"
last_name = "Kassapoglou"
print(f"Your first name {first_name}")
print(f"Your last name is {last_name}")
print(f"Your complete name is {first_name} {last_name}")

Output

Αποτέλεσμα εκτέλεσης κώδικα Python


Ορίζουμε το μεταβλητό μέρος του string με brackets ( { } ) και προσθέτουμε στην αρχή του string το γράμμα f. Μέσα στα brackets { } γράφουμε το όνομα της μεταβλητής που περιέχει την τιμή. Είναι πολύ απλό από ότι βλέπετε και εσείς.

Αυτός είναι ο μοντέρνος τρόπος που μας προσφέρει η Python από την έκδοση 3.6 και μετά. Υπάρχει όμως και ο παλαιός κλασικός τρόπος που ακόμα μπορούμε να χρησιμοποιήσουμε και έχει τις ρίζες του στην C γλώσσα.

app.py

first_name = "Michail"
last_name = "Kassapoglou"
print("Your first name is %s" % first_name)
print("Your last name is %s" % last_name)
print("Your complete name is %s %s" % (first_name, last_name))

Output

Αποτέλεσμα εκτέλεσης κώδικα Python

Εκεί όπου εισάγουμε την μεταβλητή γράφουμε το %s. Το γράμμα s μετά το σύμβολο % ενημερώνει την Python ότι θα δηλώσουμε ένα string. Εάν αντί για string είχαμε έναν αριθμό τότε θα γράφαμε %d. Στο τέλος της δήλωσης γράφουμε το % με το όνομα της μεταβλητής. Στην τελευταία γραμμή του παραδείγματος έχουμε εισαγωγή πολλαπλών μεταβλητών και λόγω κανόνα που απαιτεί η Python πρέπει να τις βάλουμε μέσα σε παρένθεση.

Πότε τα Strings δεν είναι ίσα;

Προσοχή στις συγκρίσεις! Η Python είναι Case Sensitive. Το "admin" είναι διαφορετικό από το "Admin".

app.py

user_input = "Admin"
correct_pass = "admin"

print(user_input == correct_pass) # Θα βγάλει False!

Output

Αποτέλεσμα εκτέλεσης κώδικα Python


Η Λύση: Πριν συγκρίνετε, μετατρέψτε τα πάντα σε μικρά με την .lower().


Title( ) Function

Το title( ) είναι ένα function που μετατρέπει το πρώτο γράμμα από κάθε λέξη σε κεφαλαίο.

app.py

name = "michail kassapoglou"
print(name.title())

Output


Αποτέλεσμα εκτέλεσης κώδικα Python


Find( ) Function

Με την find( ) function μπορούμε να ψάξουμε για έναν ή περισσότερους χαρακτήρες σε ένα string. Το αποτέλεσμα είναι ένας αριθμός ο οποίος αντιπροσωπεύει το index από τον οποίο αρχίζει ο χαρακτήρας ή η λέξη την οποία ψάχνουμε μέσα σε ένα string.

app.py

name = "michail kassapoglou"
print(name.find("kassapoglou"))

Output

Αποτέλεσμα εκτέλεσης κώδικα Python



Strip( ) Function

Με την strip( ) function μπορούμε να αφαιρέσουμε τα κενά από την αρχή και το τέλος ενός string.

app.py

name = "  Michail Kassapoglou  "
print(name.strip())

Output


Αποτέλεσμα εκτέλεσης κώδικα Python


ΣΥΜΒΟΥΛΗ

Νομίζω, πριν κλείσουμε το σημερινό δωρεάν μάθημα Python, ότι θα ήταν χρήσιμο να αναφερθούμε στο πως μπορείτε να βρείτε από μόνοι σας όλες αυτές τις μεθόδους και ακόμα περισσότερες που δεν έχουμε αναφέρει στην ενότητα μας. Αυτό που έχετε να κάνετε είναι να γράψετε το όνομα της μεταβλητής που περιέχει μια string τιμή και να γράψετε την τελεία ( . ). Αμέσως θα εμφανιστεί μια λίστα με όλα τα functions που μπορείτε να εφαρμόσετε στο συγκεκριμένο string. Αν η λίστα δεν εμφανιστεί μπορείτε να πατήσετε Ctrl + Space Bar για να την εμφανίσετε.



Επίσης για κάθε ένα από τα functions υπάρχει μια γρήγορη επεξήγηση της λειτουργίας τους όπως και για τις παραμέτρους που πρέπει να χρησιμοποιήσουμε για να εκτελεστούν σωστά.

❤️ Στήριξη του Ground of Code

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

full-width





Post a Comment

0 Comments