Professional Documents
Culture Documents
8. Δομές δεδομένων ΙΙ (Συμβολοσειρές)
8. Δομές δεδομένων ΙΙ (Συμβολοσειρές)
(Συμβολοσειρές)
Κέρος Α. Ιωάννης
Καθηγητής Πληροφορικής ΠΕ19
1ο ΕΠΑΛ Κιλκίς
Εισαγωγή
Με τον όρο δομή δεδομένων μπορεί να οριστεί ένα σχήμα οργάνωσης σχετικών μεταξύ
τους δεδομένων. Οι ενσωματωμένες δομές δεδομένων στην Python (και τις οποίες θα
συζητήσουμε εκτενώς παρακάτω) είναι:
• Αλφαριθμητικά (συμβολοσειρές)
• Λίστες
• Πλειάδες (εκτός της εξεταστέας ύλης στην Γ’ ΕΠΑΛ)
• Λεξικά (εκτός της εξεταστέας ύλης στην Γ’ ΕΠΑΛ)
• Στοίβα
• Ουρά
• Γράφοι (εκτός της εξεταστέας ύλης στην Γ’ ΕΠΑΛ)
• Δέντρα (εκτός της εξεταστέας ύλης στην Γ’ ΕΠΑΛ)
Συμβολοσειρές - Εισαγωγή
Συμβολοσειρά είναι μια ακολουθία χαρακτήρων η οποία μπορεί να αποτελείται από
περισσότερες από μία λέξεις που είναι γραμμένες είτε στην Ελληνική, είτε στην
Αγγλική, είτε σε οποιαδήποτε γλώσσα που υποστηρίζεται από το πρότυπο Unicode.
Μια συμβολοσειρά την ορίζουμε τοποθετώντας αμφίπλευρα μονά ή διπλά εισαγωγικά.
word = “Creativity”
0 1 2 3 4 5 6 7 8 9
C r e a t i v i t y
-10 -9 -8 -7 -6 -5 -4 -3 -2 -1
P Y T H O N
-6 -5 -4 -3 -2 -1
Η Ρ Α Κ Λ Α Ρ Α
-8 -7 -6 -5 -4 -3 -2 -1
word[3] != word[5]
Αξίζει να θυμάστε:
0,1, 2, … , 9, A, B, C, …, Z, a, b, c, …, z, Α, Β, Γ, …, Ω, α, β, γ, …, ω
Συμβολοσειρές – Παραδείγματα
>>> a='one'
>>> b='two'
>>> a<b
True
>>> 3*(a+' '+b)
'one twoone twoone two'
>>> len(a+b)
6
>>> "python"=='python'
True
>>> lang='python'
>>> 'py' in lang Είπαμε
True αμετάβλητα!!
>>> 'tron' not in lang
True
>>> lang[1]=‘k'
Traceback (most recent call last):
File "<pyshell#18>", line 1, in <module> lang[1]= 'k'
TypeError: 'str' object does not support item assignment
Συμβολοσειρές – Άσκηση
Ορίστε μια μεταβλητή a με περιεχόμενο την τιμή «Good morning».
Ορίστε μια μεταβλητή b με περιεχόμενο την τιμή «sunny day».
Αθροίστε τις μεταβλητές a και b σε μία μεταβλητή z.
Τοποθετείστε το διπλάσιο της μεταβλητής a στην μεταβλητή d.
Εμφανίστε στην οθόνη τις τιμές των μεταβλητών a, b, z, d.
Εμφανίστε στην οθόνη το μήκος του αλφαριθμητικού b.
Εμφανίστε στην οθόνη τον πρώτο χαρακτήρα του αλφαριθμητικού a.
Εμφανίστε στην οθόνη τον δεύτερο χαρακτήρα του αλφαριθμητικού b.
Εμφανίστε στην οθόνη τους χαρακτήρες «day» του αλφαριθμητικού b.
a='Good morning' Good morning
b='sunny day' sunny day
z=a+b Good morningsunny day
d=a*2
Good morningGood morning
print a
print b 9
print z G
print d u
print len(b) day
print a[0]
print b[1]
print b[6:9]
Συμβολοσειρές – Πρώτα συμπεράσματα
• Στην Python ο τύπος δεδομένων str αποτελεί μία ακολουθία χαρακτήρων.
• Συνένωση αλφαριθμητικών: +
Συμβολοσειρές –Slicing
>>>word = “Creativity”
>>> word[2:5]
'eat'
>>> word[:5]
'Creat'
>>> word[6:]
'vity'
>>> word[::2]
'Cetvt'
>>> word = “X” + word[1:]
'Xreativity'
Συμβολοσειρές – Επιπλέον εξάσκηση
name='Ioannis Keros' print 'a' in 'python' False
print len(name) 13 print 'j' in 'john' True
print name[0:7] Ioannis print 'J' in ‘john' False
print name[8:13] Keros print 'paok'=='iraklis' False
print name[8:len(name)] Keros print 'paok'!='Paok' True
x=name[0]+name[8] print '1000'!='2' True
print x IK z1='iraklis'
print len('John') 4 print z1.upper() IRAKLIS
print 'John'[3] n print z1.capitalize() Iraklis
print 'John'[-2] h print z1.find('a') 2
print 'IRAKLIS'.lower() iraklis
Ο τύπος str έχει κάποιες εγγενείς μεθόδους τις οποίες μπορούμε να καλέσουμε με τον συμβολισμό . (dot
notation)
•word.upper() Μετατροπή της λέξης word σε κεφαλαία
•word.lower () Μετατροπή της λέξης word σε πεζά
• word.capitalize() Μετατροπή της λέξης word με το πρώτο κεφαλαίο και τα υπόλοιπα
μικρά
• word.find(x) Εύρεση της θέσης του χαρακτήρα x στην λέξη word
word = ‘epal’
for i in range(len(word)):
print word[i]
e
p
a
l
Συμβολοσειρές – Συναρτήσεις και
μέθοδοι
>>> s = "Show me the money"
>>> len(s)
17
>>> s.count("e")
3
>>> s.split()
['Show', 'me', 'the', 'money']
>>> s.replace("e","i")
'Show mi thi moniy'
Συμβολοσειρές – Πολυμορφική συμπεριφορά
def times(a,b):
return a*b Lazy evaluation (τεμπέλικη αξιολόγηση - υπολογισμός)
στην Python τα πάντα αποφασίζονται την τελευταία στιγμή !!!!
k=times(2,3)
print k
p=times('keros',3)
print p
6
keroskeroskeros
Μην ξεχνάτε!!!
‘keros’ + ‘keros’ + ‘keros’ = 3 * ‘keros’
Δραστηριότητα 1
Να γράψετε στην Python μία συνάρτηση με όνομα trimSpaces(word) η οποία θα
δέχεται μια λέξη word και θα την επιστρέφει διαγράφοντας τα κενά μεταξύ των
λέξεων.
def trimSpaces(word):
result=''
for char in word:
if char!=' ':
result+=char
return result
def isEmail(email):
last3=email[-3]+email[-2]+email[-1]
papaki='@' in email
if last3=='.gr' and papaki==True:
return True
else:
return False
def count_vowels(word):
vowels='AEIOUYaeiouy'
count=0
for letter in word:
if letter in vowels:
count+=1
return count
def mirror(num):
s=str(num)
mnum=int(s[4]+s[3]+s[2]+s[1]+s[0])
return mnum
def mirror(num):
s=str(num)
revs=''
for item in reversed(s):
revs+=item
mnum=int(revs)
return mnum