You are on page 1of 23

პროგრამირების საწყისები

Python
ლექცია 7: სტრიქონები და მასთან სამუშაო ფუნქციები, სტრიქონის
ფორმატირება, სტრიქონში ძებნის და ჩანაცვლების
ფუნქციები

ლიკა სვანაძე
lika.svanadze@btu.edu.ge
სტრიქონი (string)
• სტრიქონი არის სიმბოლოების მიმდევრობა, რომელიც ჩაწერილი
უნდა იყოს ერთმაგ ან ორმაგ ბრჭყალებში.

text = "Hello" text = 'Hello'

• თითოეულ სიმბოლოზე წვდომა შესაძლებელია ინდექსის (რიგითი


ნომრის) გამოყენებით. ინდექსაცია იწყება 0-დან.

H e l l o ინდექსი
[0] [1] [2] [3] [4]
შედეგი:
print(text[0]) #პირველი სიმბოლო
H
print(text[4]) #ბოლო სიმბოლო
o
print(text[-1]) #ბოლო სიმბოლო
o

13.11.2020 lika.svanadze@btu.edu.ge 2
სტრიქონის ნაწილი (string slice)
• სტრიქონის ნებისმიერ ნაწილს (სეგმენტს) უწოდებენ slice-ს. მისზე წვდომა ხდება
ანალოგიურად როგორც სტრიქონის სიმბოლოებზე შემდეგნაირად:

text = "Hello World!" შედეგი:


print(text[6:11]) World
print(text[:5]) Hello

• [6:11] დიაპაზონი აბრუნებს სიმბოლოებს რომელთა ინდექსია 6-დან 11-მდე (მე-


11 სიმბოლო არ შედის!!!).

• [:5] - თუ პირველი ინდექსი გამოტოვებულია დიაპაზონში (ორწერტილის


წინ), მაშინ ათვლა იწყება სტრიქონის დასაწყისიდან (ანუ 0 ინდექსიდან).

• [5:] - თუ გამოტოვებულია მეორე ინდექსი (ორწერტილის შემდეგ),


იგულისხმება სტრიქონის წაკითხვა ხდება ბოლომდე.

• შეამოწმეთ, რა შედეგს მიიღებთ შემდეგი გამოსახულების გამოყენებით: text[:]

• text[::-1] გამოსახულება გვიბრუნებს სტრიქონს შებრუნებული სახით

13.11.2020 lika.svanadze@btu.edu.ge 3
სტრიქონის სიგრძე - len()
• len() არის ჩაშენებული ფუნქცია, რომელიც ითვლის სტრიქონში
სიმბოლოების რაოდენობას:

text = "Hello World!" text= '1289'


print(len(text)) print(len(text))

• სტრიქონის ბოლო სიმბოლო შეგვიძლია წავიკითხოთ len() ფუნქციის


გამოყენებითაც:
text = 'Hello World!'
length = len(text)
last = text[length-1]
print(last)

13.11.2020 lika.svanadze@btu.edu.ge 4
ოპერაციები სტრიქონებზე (1)
• შესაძლებელია სტრიქონების შეერთება + ოპერატორით
(გაითვალისწინეთ რომ ჩასვათ ცარიელი სივრცე - space, წინააღმდეგ
შემთხვევაში გადააბამს ერთმანეთს ადგილის გამოტოვების გარეშე):

text= 'Albert' + ' Einstein' შედეგი:


print(text) Albert Einstein

• გაითვალისწინეთ, “+” ოპერატორის გამოყენებისას, ორივე ოპერანდი


უნდა იყოს სტრიქონი, წინააღმდეგ შემთხვევაში იქნება Error. მაგ.
პირველი გამოსახულება არასწორია, მეორე და მესამე კი - სწორია:

text1 = 'Albert' + 5 #TypeError


text2 = 'Albert' + '5' #Correct
text3 = 'Albert' + str(5) #Correct

13.11.2020 lika.svanadze@btu.edu.ge 5
ოპერაციები სტრიქონებზე (2)
• სტრიქონებთან ასევე შესაძლებელია * (გამრავლების) ოპერაციის
გამოყენება შემდეგნაირად:

text= 'Hello' * 3 შედეგი:


print(text) HelloHelloHello

• გამრავლების ოპერაციის გამოყენებისას, ერთი ოპერანდი არის string,


ხოლო მეორე რიცხვი.

13.11.2020 lika.svanadze@btu.edu.ge 6
შედარების ოპერაციები სტრიქონებზე (1)

სტრიქონების შედარება:
• შედარების ოპერაციები გამოიყენება მაშინ, როდესაც გვინდა ორი
სტრიქონის ერთმანეთთან შედარება.

word1=input("Enter the first name:\n") შედეგი:


word2=input("Enter the second name:\n") Enter the first name:
if word1==word2: Giorgi
print(”Strings are equal") Enter the second name:
else: Giorgi
print(”Strings are not equal") Strings are equal

13.11.2020 lika.svanadze@btu.edu.ge 7
შედარების ოპერაციები სტრიქონებზე (2)

სტრიქონების შედარება:
• შედარების ოპერაციების (>, <) გამოყენების დროს, ხდება
სტრიქონების შედარება ალფაბეტის სიმბოლოების მიხედვით.
გაითვალისწინეთ, ალფაბეტის მიხედვით, ‘a’-სიმბოლო რადგან
მოთავსებულია ’b’ სიმბოლოს წინ, გამოდის რომ ’a’<‘b’, ’b’<‘c’, ა.შ.

word1="Apple"
word2="Banana"
if word1>word2:
print(word2, "is first alphabetically")
else: შედეგი:
print(word1, "is first alphabetically") Apple is first alphabetically

13.11.2020 lika.svanadze@btu.edu.ge 8
ერთმაგი და ორმაგი ბრჭყალები
• ზოგჯერ საჭირო ხდება სტრიქონის შიგნით ბრჭყალების გამოყენა.
მაგალითად, ცვლადს გვინდა მივანიჭოთ ტექსტი: He’s a person. ამ
შემთხვევაში ერთმაგი ბრჭყალების გამოყენება პრობლემას შექმნის.
და უმჯობესია გამოვიყენოთ ორმაგი ბრჭყალები.

text = 'He's a person' #Error


text = "He's a person" #Correct

• იმ შემთხვევაში თუ ერთმაგ ბრჭყალებშია მთლიანი სტრიქონი


ჩასმული, შესაძლებელია მასში ერთმაგი ბრჭყალის გამოყენება \-ის
გამოყენებით შემდეგნაირად:

text = 'He\'s a person' შედეგი:


print(text)
He's a person

13.11.2020 lika.svanadze@btu.edu.ge 9
Backslash “\”
სინტაქსი აღწერა
\' ერთმაგი ბრჭყალი
\" ორმაგი ბრჭყალი
\\ დახრილი ხაზი (backslash)
\t Tab
\n ახალი ხაზი

მაგალითი

text="one\ttwo\nthree\tfour" შედეგი:
print(text) one two
three four

13.11.2020 lika.svanadze@btu.edu.ge 10
while() ოპერატორი სტრიქონებთან
• სტრიქონთან მუშაობისას ხშირად საჭიროა მისი წაკითხვა თითო-
თითო სიმბოლოს საშუალებით (პირველიდან ბოლო
სომბოლომდე). ასეთ დროს უმჯობესია გამოვიყენოთ ციკლის
ოპერატორები (while ან for):
შედეგი:

text = 'Hello World!' H


index=0 e
while index<len(text): l
letter=text[index] l
print(letter) o
index += 1
W
o
r
l
d
!

13.11.2020 lika.svanadze@btu.edu.ge 11
in ოპერატორი
• in არის ლოგიკური ტიპის ოპერატორი, რომელშიც მონაწილეობს
ორი სტრიქონი. ის აბრუნებს მნიშვნელობა True-ს თუ პირველი
სტრიქონი გვხვდება მეორე სტრიქონში, წინააღმდეგ შემთხვევაში,
აბრუნებს მნიშვნელობას False

res = 'lo' in 'Hello World' შედეგი:


print(res) True

13.11.2020 lika.svanadze@btu.edu.ge 12
for ოპერატორი სტრიქონებთან
• for ციკლი გაირბენს სტრიქონს საწყისი სიმბოლოდან
ბოლო სიმბოლომდე
• თავდაპირველად letter ცვლადს ენიჭება სტრიქონის
პირველი სიმბოლო შედეგი:
• ციკლის ყოველ ბიჯზე letter ცვლადში ინახება
სტრიქონის შემდგომი სიმბოლო H
e
• ციკლი გრძელდება მანამ, სანამ ყველა სიმბოლოს l
წაკითხვა არ მოხდება l
o

text = 'Hello World!' W


for letter in text: o
print(letter) r
l
d
!

13.11.2020 lika.svanadze@btu.edu.ge 13
Strings are immutable!
• სტრიქონის სიმბოლოების შეცვლა არ არის შესაძლებელი იმავე
ცვლადის გამოყენებით.

• იმ შემთხვევაში თუ გსურთ შეცვალოთ რომელიმე სიმბოლო


სტრიქონში. უმჯობესია შექმნათ ახალი ცვლადი შემდეგნაირად:

• აგრეთვე არსებობს ფუნქცია (მეთოდი) replace, რომლის მეშვეობით მარტივად


შესაძლებელია სტრიქონში შეცვლის ოპერაციის განხორციელება:

13.11.2020 lika.svanadze@btu.edu.ge 14
ფუნქციები (მეთოდები) სტრიქონებზე (1)
text = 'hello world!'
str = "*****this is string example....*****"
print(dir(text))
დასახელება აღწერა გამოყენება
capitalize() სტრიქონის პირველი სიმბოლოს დიდ რეგისტრში text.capitalize()
გადაყვანა
upper() სტრიქონის ყველა სიმბოლოს დიდ რეგისტრში text.upper()
გადაყვანა
lower() სტრიქონის ყველა სიმბოლოს პატარა რეგისტრში text.lower()
გადაყვანა
find(substring, [ind]) სტრიქონში სიმბოლოს ან ქვესტრიქონის მოძებნა. text.find('o')
აბრუნებს ინდექსის ნომერს. თუ მითითებულია მეორე text.find('o', 5)
არგუმენტი, მაშინ ძებნას ახორციელებს [ind]
პოზიციიდან.
count() სტრიქონში სხვა სტრიქონის/სიმბოლოს მოხვედრის text.count('o')
რაოდენობა
strip() სტრიქონის დასაწყისში ან ბოლოში სიმბოლოების text.strip()
strip('*') წაშლა. თუ უპარამეტროა, იშლება ზედმეტი ცარიელი str.strip('*')
სივრცეები (space, tab, newlines).
startswith() აბრუნებს True მნიშვნელობას თუ სტრიქონი იწყება text.startswith('he')
კონკრეტული მნიშვნელობით
replace(a,b) სტრიქონში a ქვესტრიქონს ჩაანაცვლებს b str.replace('is', 'was')
ქვესტრიქონით
13.11.2020 lika.svanadze@btu.edu.ge 15
ფუნქციები (მეთოდები) სტრიქონებზე (2)

დასახელება აღწერა მაგალითი შედეგი

isdigit() აბრუნებს True მნიშვნელობას, თუ სტრიქონის ყველა '143'.isdigit() True


სიმბოლო არის ციფრი (0-9) '1PF'.isdigit() False
'5'.isdigit() True
isalnum() აბრუნებს True მნიშვნელობას, თუ სტრიქონის ყველა '143'.isalnum() True
სიმბოლო არის ლათინური ასო ან ციფრი (a-z, A-Z და '1AB'.isalnum() True
0-9).
'1A%'.isalnum() False
isalpha() აბრუნებს True მნიშვნელობას, თუ სტრიქონის ყველა '143'.isalpha() False
სიმბოლო არის ლათინური ასო (a-z, A-Z). 'Hello'.isalpha() True

islower() აბრუნებს True მნიშვნელობას, თუ სტრიქონის ყველა 'Hello'.islower() False


სიმბოლო არის პატარა ლათინური ასო (a-z) 'hello'.islower() True

isupper() აბრუნებს True მნიშვნელობას, თუ სტრიქონის ყველა 'Hello'.isupper() False


სიმბოლო არის დიდი ლათინური ასო (A-Z) 'HELLO'.isupper() True

13.11.2020 lika.svanadze@btu.edu.ge 16
format() ფუნქცია/მეთოდი - 1
✲ format() ფუნქცია წარმოადგენს სტრიქონებთან სამუშაო ფუნქციას. მისი მეშვეობით შესაძლებელია
სტრიქონში სხვადასხვა კომპონენტების ჩასმა და შედეგედ მიიღება დაფორმატებული სტრიქონი.
format() ფუნქციის სინტაქსია:

str.format(.....)

სტრიქონი ფორმატირების ფუნქცია

✲ str წარმოადგენს სტრიქონს, რომელიც ასევე შეიცავს { } სიმბოლოებს. შედეგად, { }-ის ნაცვლად
ჩაიწერება კონკრეტული მნიშვნელობა (value), რომელიც მითითებულია format ()-ში არგუმენტების
სახით.
შედეგი:
name = "Adam"
val = 2.35
Hello Adam, your balance is 2.35
print("Hello {}, your balance is {}".format(name, val))

სტრიქონი ფორმატირება

13.11.2020 lika.svanadze@btu.edu.ge 17
format() ფუნქცია/მეთოდი - 2
✲ შესაძლებელია { } ფრჩხილებში მითითებული იყოს ინდექსი, რომელიც მიუთითებს format()
მეთოდში არსებული პარამეტრებიდან იმ პარამეტრის ინდექსს რომლის ჩასმაც გსურთ
სტრიქონში. თუ ინდექსი არ არის მითითებული იგულისხმება რომ ჩასმის თანმიმდევრობა
ემთხვევა format მეთოდში მითითებული ცვლადების თანმიმდევობას.

name = "Adam" Hello Adam, your balance is 2.3551. Bye Adam!


val = 2.3551

print("Hello {0}, your balance is {1}. Bye {0}!".format(name, val))

✲ რიცხვების სტრიქონში ჩასმისას, შესაძლებელია გათვალისწინებული იყოს რიცხვის


ფორმატირება, მაგ. რიცხვის მეათედებამდე, ან სხვა სიზუსტით მითითება. ესეთ დროს { }
ფრჩხილებში იწერება „:“ რომლის მარცხნივ ეთითება ფორმატირების სტილი.

name = "Adam"
val = 2.3524 Hello Adam, your balance is 2.35 Lari. Bye Adam!
print("Hello {0}, your balance is {1:0.2f} Lari. Bye {0}!".format(name, val))

{1:0.2f} გამოსახულებაში – 1 მიუთითებს ინდექსს, format მეთოდის რომელი პარამეტრი წაიკითხოს,


: (ორწერტილი) მიუთითებს რომ მის შემდგომ ხდება მონაცემის დაფორმატების პარამატრის ჩაწერა
0.2f მიუთითებს რომ ხდება float რიცხვის ჩაწერა ათწილად ნაწილში 2 ციფრით, 0-ის ნაცვლად სხვა
რიცხვის მითითების შემთხვევაში, რიცხვისთვის გამოიყოფა იმდენივე ადგილი (სივრცე) რამდენსაც
მივუთითებთ.

13.11.2020 lika.svanadze@btu.edu.ge 18
ტექსტის ფორმატირება - %s
✲ ტექსტის დასაფორმატებლად format მეთოდის გარდა არსებობს %s ფორამტირების
მეთოდი (შედარებით მოძველებული ფორმატია).

მაგალითი
შედეგი

Hi Alice, you have 5 Donuts

✲ %d - მთელი რიცხვის ფორმატი; %5d - 5 ერთეულის (space) გამოყოფა (შევსება იწყება


მარცხნიდან)

✲ %s - სტრიქონის (string) ტიპის ფორმატი

✲ %f - ათწილადი რიცხვის ფორმატი, %.3f - წერტილის შემდეგ რიცხვი მიუთითებს 3


ციფრის გამოტანას ათწილად ნაწილში

13.11.2020 lika.svanadze@btu.edu.ge 19
ტექსტის ფორმატირება - f string
✲ ტექსტის დასაფორმატებლად ასევე არსებობს f ფორმატირება, რომელიც გაქვს format()
მეთოდს, თუმცა უფრო მარტივი და ეფექტური გამოყენებისაა.

მაგალითი
შედეგი

Hi Alice, you have 5 Donuts

13.11.2020 lika.svanadze@btu.edu.ge 20
სავარჯიშოები:
1. რა განსხვავებაა შემდეგ სტრიქონებს შორის: 'n' და '\n’
2. შეამოწმეთ კონსოლში შემდეგი გამოსახულებები:
a. ’Computer’ +’Science’
b. ’Darwin\’s’
c. ’H20’ * 3
d. ’C02’ * 0
3. დაწერეთ პროგრამა რომლის მეშვებით შეიტანთ ნებისმიერ სტრიქონს (input ბრძანების
გამოყენებით). დაბეჭდეთ შეყვანილი სტრიქონის სიგრძე (სიმბოლოების რაოდენობა).
4. შეიყვანეთ ნებისმიერი ორი სტრიქონი. ახალ ცვლადში მოახდინეთ მათი შეერთება და დაბეჭდეთ
შედეგი.
5. შეიყვანეთ სტრიქონი. გადაიყვანეთ სტრიქონის ყველა სიმბოლო მაღალ რეგისტრში და დაბეჭდეთ
შედეგი.
6. შეიყვანეთ სტრიქონი. დაითვალეთ რამდენჯერ შეგხვდათ სიმბოლო “a” დაბეჭდეთ შედეგი.
7. შეიყვანეთ სამი სტრიქონი რომელიც წარმოადგენს სხვადასხვა ხილის დასახელებას (მაგ. Banana,
Watermelon, Apple). დაბეჭდეთ ისინი ალფაბეტის ზრდადობის მიხედვით (თავდაპირველად
წაიკითხეთ სლაიდი “შედარების ოპერაციები სტრიქონებზე”).
8. text ცვლადს მიანიჭეთ სტრიქონი “სწავლის ძირი მწარე არის, კენწეროში გატკბილდების”.
სტრიქონიდან წაიკითხეთ პირველი 20 სიმბოლო და დაბეჭდეთ შედეგი. დაითვალეთ რამდენჯერ
არის ნახსენები სიმბოლო ‘ს’.
9. შეიყვანეთ სტრიქონი. პატარა ლატინური ასოები შეცვალეთ დიდი ლათინური ასოებით, ხოლო
დიდი-პატარათი და გამოიტანეთ შედეგი.

13.11.2020 lika.svanadze@btu.edu.ge 21
სავარჯიშოები:
10. text ცვლადს მიანიჭეთ სტრიქონი “Hello, this is example of string. Please, write this text and do some exercises.”. თუ
სტრიქონში გვხვდება ტექსტი “is“, შეცვლეთ ის “were”-ით და დაბეჭდეთ შედეგი.
11. text ცვლადს მიანიჭეთ სტრიქონი “Hello, this is example of string. Please, write this text and do some exercises.”.
დაითვალეთ სტრიქონში სიტყვების რაოდენობა.
12. text ცვლადს მიანიჭეთ შემდეგი ტექსტი: “Have a nice day”. დაბეჭდეთ ტექსტის თითოეული სიმბოლო ეკრანზე უკუ
მიმართულებით ცალ-ცალკე ხაზზე (ანუ პირველად დაბეჭდავთ ბოლო სიმბოლოს, შემდეგ ბოლოს წინა
სიმბოლოს, და ა.შ). გამოიყენეთ while ციკლის ოპერატორი.
13. შეიტანეთ სტრიქონი. დაითვალეთ სტრიქონსი ხმოვნების რაოდენობა.
14. დაითვალეთ რამდენი ციფრისგან შედგება რიცხვი 237645 სტრიქონებთან სამუშაო ფუნქციების გამოყენებით.
15. დაითვალეთ რამდენი ციფრისგან შედგება 2132 (გაითვალისწინეთ წინა მაგალითი).
16. ტექსტურ ცვლადში ჩაწერეთ თქვენი ემაილი. სტრიქონის ფუნქციების გამოყენებით, იპოვეთ რომელ პოზიციაზეა
განთავსებული სიმბოლო @. დაბეჭდეთ შედეგი.
17. დაწერეთ პროგრამა, სადაც user შეიყვანს თავის სახელს და გვარს და პროგრამა დაუბეჭდავს შესაბამის იმეილის
დასახელებას: მაგ: adam.giorgadze@btu.edu.ge
18. დაწერეთ პროგრამა, რომელშიც მომხარებელს შეაყვანინებთ რაიმე სტრიქონს. პროგრამამ უნდა დაითვალოს დიდი
ლათინური ასოების, პატარა ლათინური ასოების და ციფრების რაოდენობა ცალ-ცალკე და დაბეჭდეთ მიღებული
შედეგები. ასევე დაითვალეთ სტრიქონში გამოყენებული სპეციალური სიმბოლოების რაოდენობა როგორიცაა
!@#$%^&*()_+
19. დაწერეთ პროგრამა, სადაც user შეიყვანს (input ბრძანებით) სასურველ პაროლს (ტექსტურ მონაცემს). დაადგინეთ
შესაძლებელია თუ არა იგი ვარგისი იყოს პაროლად. დაბეჭდეთ შესაბამისი პასუხი. გაითვალისწინეთ, პაროლი
ვარგისია, თუ იგი შედგება მინიმუმ 8 სიმბოლოსგან, აუცილებლად უნდა მონაწილეობდეს სულ მცირე ერთი
დიდი ლათინური სიმბოლო, პატარა ლათინური სიმბოლო, ციფრი და სპეციალური სიმბოლო !@#$%^&*()_+

13.11.2020 lika.svanadze@btu.edu.ge 22
სავარჯიშოები:
20. შეიყვანეთ სტრიქონი. სტრიქონში დატოვეთ მხოლოდ ლატინური სიმბოლოები დანარჩენი კი ამოშალეთ.
21. შეიყვანეთ ნებისმიერი სტრიქონი. იპოვეთ ყველაზე ხშირად განმეორებადი სიმბოლო და დაბეჭდეთ.
22. შეიყვანეთ ნებისმიერი სტრიქონი. დაადგინეთ არის თუ არა შეტანილი სტრიქონი პალინდრომი. (მითითება:
პალინდრომია სტრიქონი, რომელიც მარჯვნიდან და მარცხნიდან ერთნაირად იკითხება). მაგ. გალაკტიონის ერთ-
ერთი ლექსის ყველა ტაეპი წარმოადგენს პალინდრომს:

აი რა მზის სიზმარია
აირევი ივერია
აი დროშა აშორდია
აერების სიბერეა

13.11.2020 lika.svanadze@btu.edu.ge 23

You might also like