Εισαγωγή
Python είναι μια γλώσσα προγραμματισμού που χρησιμοποιείται συχνά για σκοπούς ενοποίησης συστημάτων. Αυτή η γλώσσα χρησιμοποιεί κάτι που ονομάζεται ‘τύποι δεδομένων’. Αυτοί οι τύποι δεδομένων βοηθούν στην κατηγοριοποίηση ή τον ορισμό ενός δεδομένου τύπου δεδομένων. Αυτό σημαίνει ότι ένας συγκεκριμένος τύπος δεδομένων αφορά συγκεκριμένες τιμές και λειτουργίες που μπορείτε να εφαρμόσετε σε αυτόν. Κάθε τύπος δεδομένων προγραμματίζεται και επεξεργάζεται με διαφορετικό τρόπο. Αυτό συμβαίνει επειδή κάθε τύπος δεδομένων έχει διαφορετική φύση. Για παράδειγμα, μπορεί να έχετε να κάνετε με συμβολοσειρές ή ακέραιους αριθμούς.
Ο στόχος αυτού του οδηγού είναι να σας βοηθήσει να εξοικειωθείτε με τους διάφορους τύπους δεδομένων στην Python. Όχι μόνο αυτό, αλλά θα κάνουμε επίσης μια εις βάθος συζήτηση σχετικά με τον τρόπο μετατροπής των τύπων δεδομένων μεταξύ τους. Μέχρι το τέλος αυτού του οδηγού, θα πρέπει να γνωρίζετε τύπους δεδομένων όπως αριθμούς, συμβολοσειρές, πλειάδες και λίστες, καθώς και πώς να τους μετατρέπετε.
Μετατροπή Αριθμών
Όταν μιλάμε για αριθμούς στην Python, μπορεί να αναφερόμαστε σε μία από δύο επιλογές. Μπορεί να έχουμε να κάνουμε είτε με ακέραιους ή αριθμούς κινητής υποδιαστολής (floats). Μπορεί να υπάρχουν φορές που θα χρειαστεί να μετατρέψετε το ένα στο άλλο. Είναι δυνατόν να μετατρέψετε εύκολα ακέραιους σε αριθμούς κινητής υποδιαστολής και αριθμούς κινητής υποδιαστολής σε ακέραιους.
-
Μετατροπή: Ακέραιοι σε Αριθμούς Κινητής Υποδιαστολής
Αρχικά, θα ξεκινήσουμε εξερευνώντας πώς μπορείτε να μετατρέψετε ακέραιους σε αριθμούς κινητής υποδιαστολής. Ο τρόπος για να γίνει αυτό είναι με μια εντολή που ονομάζεται float(). Αυτή η συνάρτηση θα μετατρέψει οποιονδήποτε δεδομένο ακέραιο σε αριθμό κινητής υποδιαστολής με δεκαδικά ψηφία. Το μόνο που έχετε να κάνετε είναι να τοποθετήσετε τον ακέραιο μέσα στις παρενθέσεις. Για παράδειγμα, ας υποθέσουμε ότι θέλετε να μετατρέψετε τον ακέραιο 57 σε τύπο δεδομένων float. Δείτε πώς θα προχωρήσετε στη μετατροπή του:
|
1 |
float(57) |
Ως αποτέλεσμα της εκτέλεσης αυτής της εντολής, ο ακέραιος 57 θα αλλάξει στον αριθμό κινητής υποδιαστολής 57.0.
Ένας άλλος τρόπος για να γίνει αυτό θα ήταν η χρήση μιας μεταβλητής. Μπορείτε να δηλώσετε τον ακέραιό σας μέσω μιας μεταβλητής και στη συνέχεια να εκτυπώσετε τον αριθμό κινητής υποδιαστολής με την παραπάνω εντολή. Ας υποθέσουμε ότι δηλώνετε τη μεταβλητή f να είναι ίση με 57. Δείτε πώς θα γινόταν η μετατροπή σε αυτήν την περίπτωση:
|
1 2 3 |
f = 57 print(float(f)) |
|
1 2 3 |
Έξοδος 57.0 |
-
Μετατροπή: Αριθμοί Κινητής Υποδιαστολής σε Ακέραιους
Είναι επίσης δυνατό να μετατρέψετε αριθμούς κινητής υποδιαστολής σε ακέραιους. Παρόμοια με την προηγούμενη εντολή, αυτή η μετατροπή μπορεί να γίνει χρησιμοποιώντας τη συνάρτηση int(). Όπως και την προηγούμενη φορά, το μόνο που έχετε να κάνετε είναι να προσθέσετε τον αριθμό κινητής υποδιαστολής μέσα στις παρενθέσεις μετά τη συνάρτηση.
Στο παράδειγμά μας, θα μετατρέψουμε τον αριθμό κινητής υποδιαστολής 390 σε ακέραιο. Για να κάνουμε τη μετατροπή, θα εκτελούσαμε την ακόλουθη εντολή:
|
1 |
int(390.8) |
Ως αποτέλεσμα της εκτέλεσης αυτής της συνάρτησης, το 390 θα αλλάξει στη μορφή κινητής υποδιαστολής του: 390.8.
Παρομοίως, μπορείτε να πραγματοποιήσετε τη μετατροπή με τη βοήθεια μεταβλητών. Όχι μόνο αυτό, αλλά μπορείτε να πραγματοποιήσετε πολλαπλές μετατροπές ταυτόχρονα. Ας υποθέσουμε ότι η μεταβλητή b είναι ίση με 125.0 και η c είναι ίση με 390.8. Δείτε πώς θα εκτυπώνατε αυτές τις τιμές κινητής υποδιαστολής:
|
1 2 3 4 5 |
b = 125.0 c = 390.8 print(int(b)) print(int(c)) |
|
1 2 3 4 |
Έξοδος 125 390 |
Όπως μπορείτε να δείτε, οι ακέραιοι μετατράπηκαν με επιτυχία σε αριθμούς κινητής υποδιαστολής.
Ένα σημαντικό πράγμα που πρέπει να θυμάστε κατά τη μετατροπή από float σε ακέραιο είναι ότι η συνάρτηση δεν στρογγυλοποιεί τις τιμές προς τα πάνω. Αυτό σημαίνει ότι το δεκαδικό μέρος του float απλώς αφαιρείται. Η συνάρτηση δεν θα στρογγυλοποιήσει μια τιμή όπως το 390.8 σε 390 - απλώς θα αφαιρέσει τις 0.8 μονάδες για να σας δώσει έναν ακέραιο.
-
Μετατροπή: Μέσω Διαίρεσης
Είναι επίσης δυνατό να μετατρέψετε ακέραιους σε αριθμούς κινητής υποδιαστολής μέσω διαίρεσης. Η διαίρεση ακεραίων μεταξύ τους μπορεί να σας δώσει ένα πηλίκο που είναι αριθμός κινητής υποδιαστολής. Για παράδειγμα, κατά τη διαίρεση του 5 με το 2, η απάντηση που λαμβάνετε θα είναι 2.5, η οποία είναι float. Ρίξτε μια ματιά:
|
1 2 |
a = 5 / 2 print(a) |
|
1 2 3 |
Έξοδος 2.5 |
Αυτό είναι ένα ιδιαίτερο χαρακτηριστικό της Python 3. Στην Python 2, η εκτέλεση μιας τέτοιας διαίρεσης θα σας έδινε μόνο έναν ακέραιο ως απάντηση, κάπως έτσι: 5 / 2 = 2.
Μετατροπή με Συμβολοσειρές
Προτού αρχίσουμε να μιλάμε για το πώς να πραγματοποιήσετε μετατροπή με συμβολοσειρές, πρέπει να γνωρίζετε τι είναι στην πραγματικότητα οι συμβολοσειρές. Αν δεν το γνωρίζετε ήδη, οι συμβολοσειρές είναι ακολουθίες χαρακτήρων. Αυτό μπορεί να είναι μια σειρά από γράμματα, αριθμούς, σύμβολα ή οποιουσδήποτε άλλους χαρακτήρες. Ίσως γνωρίζετε τις συμβολοσειρές σε σχέση με τα δεδομένα υπολογιστών. Αυτό συμβαίνει επειδή οι υπολογιστές χρησιμοποιούν συχνά αυτόν τον τύπο δεδομένων για να εκτελέσουν τις λειτουργίες τους.
Αν αντιμετωπίζετε δεδομένα που δημιουργούνται από χρήστες, τότε θα πρέπει να εκτελείτε συχνά αυτές τις μετατροπές. Γι' αυτό είναι χρήσιμο να γνωρίζετε πώς να μετατρέπετε αριθμούς σε συμβολοσειρές και συμβολοσειρές σε αριθμούς.
-
Μετατροπή: Αριθμοί σε Συμβολοσειρές
Μπορείτε να χρησιμοποιήσετε τη str() συνάρτηση για να μετατρέψετε αριθμούς σε συμβολοσειρές. Όπως και πριν, θα τοποθετήσετε την τιμή που θέλετε να μετατρέψετε μέσα στην παρένθεση. Αυτή η τιμή μπορεί να είναι είτε αριθμός είτε μεταβλητή. Για αρχή, ας δούμε πώς θα μετατρέπατε έναν ακέραιο, όπως ο 12, σε μια τιμή συμβολοσειράς:
|
1 |
str(12) |
|
1 2 3 |
Output '12' |
Όπως μπορείτε να δείτε, η έξοδος δείχνει μια τιμή συμβολοσειράς. Η τιμή της συμβολοσειράς υποδηλώνεται από τα εισαγωγικά.
Από την άλλη πλευρά, μπορείτε επίσης να τοποθετήσετε μεταβλητές μέσα στη συνάρτηση αντί για ακεραίους. Εδώ είναι που η συνάρτηση γίνεται πραγματικά χρήσιμη. Για παράδειγμα, σκεφτείτε ότι θέλετε να παρακολουθείτε και να αναφέρετε πόσες γραμμές κώδικα γράφει ένας χρήστης σε ένα δεδομένο χρονικό πλαίσιο. Για να εμφανίσετε αυτές τις πληροφορίες στον χρήστη, πρέπει να εκτυπώσετε τόσο τη συμβολοσειρά όσο και τις ακέραιες τιμές, κάπως έτσι:
|
1 2 3 4 |
user = "Sammy" lines = 50 print("Συγχαρητήρια, " + user + "! Μόλις γράψατε " + lines + " γραμμές κώδικα.") |
Δυστυχώς, αν προσπαθήσετε να εκτελέσετε τον παραπάνω κώδικα, θα λάβετε ένα σφάλμα όπως αυτό:

Αυτό σημαίνει ότι πρέπει να μετατρέψετε τη μεταβλητή lines σε τιμή συμβολοσειράς για να μπορέσετε να εκτελέσετε τον κώδικα.
|
1 2 3 4 |
user = "Sammy" lines = 50 print("Συγχαρητήρια, " + user + "! Μόλις γράψατε " + str(lines) + " γραμμές κώδικα.") |
Τώρα που τοποθετήσατε τη συνάρτηση μετατροπής, θα μπορείτε να εκτελέσετε την εντολή με επιτυχία. Θα δείτε κάτι σαν το παρακάτω ως έξοδο:
|
1 2 3 |
Output Συγχαρητήρια, Sammy! Εσείς μόλις γράψατε 50 γραμμές of κώδικα. |
Παρομοίως, αν θέλετε να προσθέσετε έναν αριθμό κινητής υποδιαστολής (float) αντί για έναν ακέραιο σε μια συμβολοσειρά, πρέπει να κάνετε το ίδιο πράγμα. Όπως και πριν, μπορείτε είτε να προσθέσετε την τιμή απευθείας είτε να χρησιμοποιήσετε μια μεταβλητή. Για παράδειγμα:
|
1 2 3 |
print(str(421.034)) f = 5524.53 print(str(f)) |
|
1 2 3 4 |
Output 421.034 5524.53 |
Αν θέλετε να βεβαιωθείτε ότι η τιμή είναι σωστή, μπορείτε να τη συνενώσετε με μια συμβολοσειρά όπως αυτή:
|
1 2 |
f = 5524.53 print("Ο Sammy έχει " + str(f) + " πόντους.") |
|
1 2 3 |
Output Ο Sammy έχει 5524.53 πόντους. |
Εφόσον δεν λάβατε σφάλμα, αυτό σημαίνει ότι η μετατροπή ήταν επιτυχής.
-
Μετατροπή: Συμβολοσειρές σε Αριθμούς
Παρομοίως, μπορείτε επίσης να μετατρέψετε συμβολοσειρές σε αριθμούς. Αν η συμβολοσειρά σας δεν έχει δεκαδικά ψηφία, τότε είναι προτιμότερο να τη μετατρέψετε σε ακέραιο. Μπορείτε να τη μετατρέψετε σε ακέραιο χρησιμοποιώντας τη int() συνάρτηση.
Θα συνεχίσουμε να χρησιμοποιούμε το προηγούμενο παράδειγμά μας από τη μετατροπή ακεραίων. Έτσι, σκεφτείτε ότι ένας χρήστης με το όνομα Sammy θέλει να παρακολουθεί την πρόοδο συγγραφής του κώδικά του σε καθημερινή βάση. Ως προγραμματιστής, θέλετε να παρουσιάσετε αυτές τις πληροφορίες στον χρήστη με δημιουργικό τρόπο. Αλλά επειδή αυτές οι τιμές αποθηκεύονται ως συμβολοσειρές, δεν μπορείτε να εφαρμόσετε ορισμένους βασικούς τελεστές σε αυτές, όπως ο – (αφαίρεση). Μπορείτε να το παρατηρήσετε αυτό στο ακόλουθο:
|
1 2 3 4 5 6 |
lines_yesterday = "50" lines_today = "108" lines_more = lines_today - lines_yesterday print(lines_more) |

Όπως μπορείτε να δείτε, ο τελεστής δεν λειτουργεί στις τιμές συμβολοσειράς. Αντίθετα, λαμβάνετε ένα σφάλμα. Για να μπορέσετε να εργαστείτε με τις τιμές, πρέπει να μετατρέψετε τις συμβολοσειρές σε ακεραίους χρησιμοποιώντας τη int() συνάρτηση.
|
1 2 3 4 5 6 |
lines_yesterday = "50" lines_today = "108" lines_more = int(lines_today) - int(lines_yesterday) print(lines_more) |
|
1 2 3 |
Output 58 |
Εδώ, lines_more είναι μια μεταβλητή. Αυτή η μεταβλητή είναι ακέραιος αριθμός και ισούται με την τελική τιμή η οποία, στο παράδειγμά μας, είναι 58.
Από την άλλη πλευρά, μπορείτε να μετατρέψετε τις συμβολοσειρές σε αριθμούς κινητής υποδιαστολής (floats) χρησιμοποιώντας τη float() συνάρτηση εάν υπάρχουν δεκαδικά ψηφία. Σε αυτό το παράδειγμα, θα χρησιμοποιήσουμε τους πόντους που κερδίζει ο χρήστης Sammy σε αντίθεση με τον αριθμό των γραμμών που γράφει. Οι πόντοι καταγράφονται με δεκαδικά ψηφία:
|
1 2 3 4 5 6 |
total_points = "5524.53" new_points = "45.30" new_total_points = total_points + new_points print(new_total_points) |
|
1 2 3 |
Output 5524.5345.30 |
Αν και το αποτέλεσμα δεν εμφανίζεται ως σφάλμα, εξακολουθεί να μην είναι σωστό. Ο τελεστής + ή η πρόσθεση λειτούργησε σε αυτήν την περίπτωση. Αλλά αντί να προσθέσει τους δύο αριθμούς, απλώς τοποθέτησε τις δύο τιμές συμβολοσειράς τη μία δίπλα στην άλλη.
Γι' αυτό πρέπει πρώτα να μετατρέψετε αυτές τις συμβολοσειρές σε τιμές κινητής υποδιαστολής χρησιμοποιώντας τη float() συνάρτηση:
|
1 2 3 4 5 6 |
total_points = "5524.53" new_points = "45.30" new_total_points = float(total_points) + float(new_points) print(new_total_points) |
|
1 2 3 |
Output 5569.83 |
Όπως μπορείτε να παρατηρήσετε παραπάνω, οι δύο τιμές προστίθενται μαζί. Θυμηθείτε: εάν προσπαθήσετε να μετατρέψετε μια τιμή συμβολοσειράς με δεκαδικά ψηφία σε ακέραιο, θα λάβετε ένα σφάλμα όπως αυτό:
|
1 2 |
f = "54.23" print(int(f)) |

Επομένως, πρέπει πρώτα να μετατρέψετε τον τύπο δεδομένων συμβολοσειράς σε αριθμούς. Στη συνέχεια, μπορείτε να εκτελέσετε άλλες πράξεις και να μετατρέψετε την αριθμητική τιμή με ευκολία.
Μετατροπή σε Πλειάδες και Λίστες
Οι λίστες και οι tuples είναι μερικοί άλλοι τύποι δεδομένων που μπορείτε να χρησιμοποιήσετε στην Python 3. Και οι δύο αποτελούνται από μια ακολουθία στοιχείων. Η διαφορά μεταξύ των δύο είναι ότι ενώ μια λίστα είναι μεταβλητή, μια πλειάδα είναι αμετάβλητη. Επιπλέον, ενώ τα στοιχεία μιας λίστας τοποθετούνται μέσα σε αγκύλες [ ], εκείνα μιας πλειάδας τοποθετούνται μέσα σε παρενθέσεις ( ).
-
Μετατροπή: Λίστες σε Πλειάδες
Πρώτα απ' όλα, ας δούμε πώς μπορείτε να μετατρέψετε μια λίστα σε πλειάδα. Ίσως χρειαστεί να πραγματοποιήσετε αυτήν τη μετατροπή εάν χρειάζεστε έναν αμετάβλητο τύπο δεδομένων. Για τον σκοπό αυτό, θα πρέπει να χρησιμοποιήσετε τη συνάρτηση tuple():
|
1 |
print(tuple(['pull request', 'open source', 'repository', 'branch'])) |
|
1 2 3 |
Output ('pull request', 'open source', 'repository', 'branch') |
Όπως μπορείτε να δείτε, τα στοιχεία της λίστας βρίσκονται τώρα σε μια πλειάδα. Αυτό φαίνεται από τις παρενθέσεις που περιβάλλουν τα στοιχεία.
Μπορείτε επίσης να χρησιμοποιήσετε τη tuple() συνάρτηση με μια μεταβλητή που ισούται με τη λίστα των στοιχείων:
|
1 2 3 |
sea_creatures = ['shark', 'cuttlefish', 'squid', 'mantis shrimp'] print(tuple(sea_creatures)) |
|
1 2 3 |
Output ('shark', 'cuttlefish', 'squid', 'mantis shrimp') |
Βολικά, μπορείτε να μετατρέψετε οποιονδήποτε τύπο δεδομένων σε πλειάδα. Για παράδειγμα, δείτε πώς θα μετατρέπατε μια συμβολοσειρά σε πλειάδα:
|
1 |
print(tuple('Sammy')) |
|
1 2 3 |
Output ('S', 'a', 'm', 'm', 'y') |
Οι συμβολοσειρές μπορούν να μετατραπούν σε πλειάδες επειδή είναι επαναλήψιμες. Είναι ευνόητο ότι οι μη επαναλήψιμοι τύποι δεδομένων δεν μπορούν να μετατραπούν σε πλειάδες. Ας υποθέσουμε ότι θέλετε να μετατρέψετε μερικούς ακέραιους ή έναν αριθμό κινητής υποδιαστολής σε πλειάδα. Εάν εκτελούσατε τη tuple() συνάρτηση, θα λαμβάνατε ένα σφάλμα όπως αυτό:
|
1 |
print(tuple(5000)) |
|
1 2 3 |
Output TypeError: 'int' αντικείμενο είναι δεν επαναλήψιμο |
Το σφάλμα τύπου δείχνει ότι ο ακέραιος δεν είναι επαναλήψιμος (iterable). Γι' αυτό δεν μπορεί να γίνει η μετατροπή. Ένας περίπλοκος τρόπος θα ήταν να μετατρέψετε πρώτα τον ακέραιο σε συμβολοσειρά και μετά σε πλειάδα. Θα μπορούσατε να το κάνετε αυτό με την ακόλουθη συνάρτηση: tuple(str(5000)). Αλλά συνιστούμε να αποφεύγετε τέτοιες περιπλοκές.
-
Μετατροπή: Πλειάδες σε Λίστες
Αντίθετα, ίσως χρειαστεί να μετατρέψετε μια πλειάδα σε λίστα εάν απαιτείτε μεταβαλλόμενα δεδομένα. Για τον σκοπό αυτό, θα χρησιμοποιήσετε τη list() συνάρτηση ως εξής:
|
1 |
print(list(('blue coral', 'staghorn coral', 'pillar coral'))) |
|
1 2 3 |
Output ['blue coral', 'staghorn coral', 'pillar coral'] |
Η παρουσία των αγκυλών υποδεικνύει ότι το προκύπτον αποτέλεσμα είναι μια πλειάδα. Όταν γράφετε τον κώδικα για να μετατρέψετε μια πλειάδα σε λίστα χρησιμοποιώντας list(), πρέπει να βεβαιωθείτε ότι συμπεριλαμβάνετε παρενθέσεις για τη list() μέθοδο καθώς και για τη print() μέθοδο. Ωστόσο, αυτό καθιστά τον κώδικα κάπως δυσανάγνωστο. Για να τον κάνετε λιγότερο περίπλοκο, μπορείτε να αφαιρέσετε ένα ζευγάρι παρενθέσεων χρησιμοποιώντας μια μεταβλητή στη θέση τους:
|
1 2 3 |
coral = ('blue coral', 'staghorn coral', 'pillar coral') list(coral) |
Παρόμοια με τις πλειάδες, μπορείτε επίσης να μετατρέψετε συμβολοσειρές απευθείας σε λίστες:
|
1 |
print(list('shark')) |
|
1 2 3 |
Output ['s', 'h', 'a', 'r', 'k'] |
Συμπέρασμα
Αυτός ο οδηγός θα σας βοηθήσει αν αναζητάτε τρόπους μετατροπής τύπων δεδομένων στην Python 3. Συζητήσαμε με μεγάλη λεπτομέρεια τους διαφορετικούς τύπους δεδομένων και πώς μπορούν να μετατραπούν ο ένας στον άλλον χρησιμοποιώντας ενσωματωμένες συναρτήσεις της Python. Η γνώση αυτών των μετατροπών θα βοηθήσει να γίνει η προγραμματιστική σας εμπειρία πολύ πιο εύκολη και ολοκληρωμένη.
Για να εξερευνήσετε περαιτέρω τι μπορείτε να κάνετε με την Python, ακολουθήστε τους άλλους οδηγούς μας:
- Δείτε πώς να εγκαταστήσετε την Python 3 και να ρυθμίσετε ένα τοπικό περιβάλλον προγραμματισμού στο Ubuntu 16.04.
- Ακολουθήστε για να μάθετε πώς να εξαγάγετε δεδομένα από το Twitter χρησιμοποιώντας Python.
- Μάθετε πώς να ανακτήσετε δεδομένα ανά λεπτό για τον NASDAQ χρησιμοποιώντας Python.
- Μπορείτε επίσης να δείτε πώς να χρησιμοποιήσετε το σενάριο Python της CloudSigma για να αυτοματοποιήσετε τη μετατροπή ενός στιγμιότυπου δίσκου σε πλήρη δίσκο στην πλατφόρμα μας.
Καλό προγραμματισμό!
Σχόλια
Δεν υπάρχουν σχόλια ακόμα. Γράψτε το πρώτο.