Μπορούμε να γράψουμε ακολουθίες χαρακτήρων, τα όρια των οποίων καθορίζονται από απλές (') ή διπλές (") αποστρόφους. Αυτές θα τις ονομάζουμε συμβολοσειρές (strings).
>>> a = 'Nick'
>>> b = 'Papadakis'
>>> c = "Papadopoulos"
Mπορούμε να εφαρμόσουμε σε συμβολοσειρές τους τελεστές πρόσθεσης (+) και πολλπλασιασμού (*).
>>> onoma = a + b
>>> print(onoma)
NickPapadakis
>>> onoma = a + " " + b
>>> print(onoma)
Nick Papadakis
>>> 2*a
'NickNick'
>>> year_in = 2018
>>> print(onoma,"came to Crete in",year_in)
Nick Papadakis came to Crete in 2018
Mπορούμε να βρούμε το μήκος μίας συμβολοσειράς, δηλαδή, τον αριθμό των χαρακτήρων από τις οποίες αποτελείται.
>>> len(onoma)
14
Κάθε χαρακτήρας σε μία συμβολοσειρά έχει αριθμό θέσης (δείκτη, index). Η αρίθμηση ξεκινάει από το 0 και ο τελευταίος χαρακτήρας μιας συμβολοσειράς με μήκος n έχει δείκτη n-1.
>>> len(onoma)
14
>>> onoma[0]
'N'
>>> onoma[13]
's'
>>> onoma[1]
'i'
>>> onoma[0:4]
'Nick'
>>> onoma[1:4]
'ick'
Η θέση κάθε χαρακτήρα θέσης μπορεί επίσης να καθορισθεί μετρώντας από το τέλος της συμβολοσειράς (string).
>>> s = 'Nick'
>>> s[-1]
'k'
>>> s[-2:]
'ck'
Όπως βλέπουμε στο τελευταίο παράδειμα, όταν παραλείπεται ο δεύτερος δείκτης τότε εννοιείται το τέλος της συμβολοσειράς.
s[-n:]
.
>>> s = 'Nick'
>>> s[-4:]
'Nick'
>>> s[-4:-1]
'Nic'
Μπορούμε να γράψουμε [start:end:step] για να αναφερθούμε στις θέσεις μεταξύ start και end-1 με βήμα step.
>>> s1 = 'Take'
>>> s2 = 'Make'
>>> s3 = 'Fake'
>>> s = s1 + s2 + s3
>>> s
'TakeMakeFake'
>>> len(s)
12
>>> s[0:12:4]
'TMF'
Στις μεταβλητές τύπου str
, δηλαδή, στις μεταβλητές που περιέχουν συμβολοσειρές, δεν μπορούμε να επέμβουμε και να κάνουμε αλλαγές μέρους αυτών.
Για παράδειγμα, αν s='nikos'
δεν υπάρχει δυνατότητα να γίνει αλλαγή του πρώτου γράμματος από 'n'
σε 'N'
.
Λέμε ότι οι μεταβλητές τύπου str
είναι μη μεταλλάξιμες, ή ότι ο τύπους str
είναι μη-μεταλλάξιμος τύπος.
>>> s = 'nikos'
>>> a = s[0]
>>> print(a)
n
>>> s[0] = 'N'
Traceback (most recent call last):
File "", line 1, in
TypeError: 'str' object does not support item assignment
str
και να αναθέσουμε σε αυτή μία άλλη τιμή.
>>> s = 'Nikos'
>>> print(s)
Nikos
>>> s = 'Nikolaos'
>>> print(s)
Nikolaos
>>> onoma = 'Papadopoulos'
>>> onoma = onoma[:-7] + 'akis'
>>> print(onoma)
Papadakis
Μπορούμε να εισάγουμε δεδομένα (από το πληκτρολόγιο) κατά την διάρκεια της εκτέλεσης του προγράμματός μας.
Αυτό γίνεται με τη συνάρτηση input
.
Η input
δέχεται ένα όρισμα (προαιρετικό) και αυτό τυπώνεται στην οθόνη κατά την εκτέλεση του προγράμματος ως μια προτροπή (prompt) στο χρήστη να εισαγάγει δεδομένα.
Οτιδήποτε εισάγει ο χρήστης αποθηκεύεται ως ακολουθία χαρακτήρων και εκχωρείται στη μεταβλητή αριστερά του ίσον (=).
>>> name = input('What is your name? ')
What is your name? Barack Obama
>>> print('Hello,', name)
Hello, Barack Obama
>>> age = input('How old are you? ')
How old are you? 42
>>> print(age)
42
>>> type(age)
<class 'str'>
Παρατηρήστε ότι ο τύπος της μεταβλητής name αλλά και της age είναι str, δηλαδή ακολουθία χαρακτήρων (και όχι int
που ίσως να περίμενε κάποιος). Μπορούμε όμως να μετατρέψουμε τη μεταβλητή age σε ακέραιο γράφοντας int(age)
και με αυτό τον τρόπο αυτή μπορεί να χρησιμοποιηθεί σε αριθμητικές εκφράσεις.
>>> age = input('How old are you? ')
How old are you? 42
>>> my_age = 25
>>> print('You are', int(age)-my_age, 'years older than I am!')
You are 17 years older than I am!
input
απ' ευθείας σε μία άλλη συνάρτηση, π.χ., στην float
.
>>> price = float(input('How much for the apples? '))
How much for the apples? 1.79
>>> type(price)
<class 'float'>
>>> kilos = int(input('How many kilos of apples? '))
How many kilos of apples? 4
>>> type(kilos)
<class 'int'>
>>> cost = price*kilos
>>> print('Total cost',cost)
Total cost 7.16
\'
και \"
για να μετατρέψουμε τις αποστρόφους σε απλούς χαρακτήρες (χωρίς την ειδική τους σημασία).
Η πλάγια κάθετος \
(backslash) λέγεται escape χαρακτήρας ενώ η ακολουθία χαρακτήρων \'
ή \"
λέγεται escape ακολουθία.
Για την πλάγια κάθετο έχουμε την escape ακολουθία \\
.
>>> print('That\'s do nice!')
That's do nice!
>>> print('\\ That\'s do nice! \\')
\ That's do nice! \
Υπάρχουν αρκετές ακόμα χρήσιμες escape ακολουθίες.
\n
Αλλαγής γραμμής.\t
Προσθήκη tab.\b
Επιστροφή μίας θέσης πίσω.\a
Παραγωγή ήχου.
>>> print('Nikos\nManolis\nMihalis')
Nikos
Manolis
Mihalis
Η λειτουργικότητα του escape χαρακτήρα \
αυξάνεται εάν θέσουμε το r
μπροστά στην συμβολοσειρά (π.χ., γράφουμε r'Ma\nolis'
) οπότε λέμε ότι έχουμε ένα raw string.
Στα raw strings το \
είναι μέρος της συμβολοσειράς ενώ επιπλέον οι χαρακτήρες που το ακολουθούν ερμηνεύονται ως απλοί χαρακτήρες.
>>> print(r'Ma\nolis')
Ma\nolis
>>> print(r'C:\a\long\path\name')
C:\a\long\path\name
>>> print(r'\'')
\'
>>> print(r'\n')
\n
>>>
Μπορούμε να γράψουμε συμβολοσειρές οι οποίες να εκτείνονται σε περισσότερες από μία γραμμή.
Αυτές πρέπει να περιέχονται σε τριπλές αποστρόφους """..."""
ή '''...'''
>>> s = '''This then is I,
... born for small Korai and the islands of the Aegean;
... lover of the deer\'s leaping
... and priest of the olive leaves;
drinker of sun and killer of grasshoppers.'''
>>> print(s)
This then is I,
born for small Korai and the islands of the Aegean;
lover of the deer's leaping
and priest of the olive leaves;
drinker of sun and killer of grasshoppers.