Professional Documents
Culture Documents
7 სტრინგები
7 სტრინგები
Python
ლექცია 7: სტრიქონები და მასთან სამუშაო ფუნქციები, სტრიქონის
ფორმატირება, სტრიქონში ძებნის და ჩანაცვლების
ფუნქციები
ლიკა სვანაძე
lika.svanadze@btu.edu.ge
სტრიქონი (string)
• სტრიქონი არის სიმბოლოების მიმდევრობა, რომელიც ჩაწერილი
უნდა იყოს ერთმაგ ან ორმაგ ბრჭყალებში.
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-ს. მისზე წვდომა ხდება
ანალოგიურად როგორც სტრიქონის სიმბოლოებზე შემდეგნაირად:
13.11.2020 lika.svanadze@btu.edu.ge 3
სტრიქონის სიგრძე - len()
• len() არის ჩაშენებული ფუნქცია, რომელიც ითვლის სტრიქონში
სიმბოლოების რაოდენობას:
13.11.2020 lika.svanadze@btu.edu.ge 4
ოპერაციები სტრიქონებზე (1)
• შესაძლებელია სტრიქონების შეერთება + ოპერატორით
(გაითვალისწინეთ რომ ჩასვათ ცარიელი სივრცე - space, წინააღმდეგ
შემთხვევაში გადააბამს ერთმანეთს ადგილის გამოტოვების გარეშე):
13.11.2020 lika.svanadze@btu.edu.ge 5
ოპერაციები სტრიქონებზე (2)
• სტრიქონებთან ასევე შესაძლებელია * (გამრავლების) ოპერაციის
გამოყენება შემდეგნაირად:
13.11.2020 lika.svanadze@btu.edu.ge 6
შედარების ოპერაციები სტრიქონებზე (1)
სტრიქონების შედარება:
• შედარების ოპერაციები გამოიყენება მაშინ, როდესაც გვინდა ორი
სტრიქონის ერთმანეთთან შედარება.
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. ამ
შემთხვევაში ერთმაგი ბრჭყალების გამოყენება პრობლემას შექმნის.
და უმჯობესია გამოვიყენოთ ორმაგი ბრჭყალები.
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):
შედეგი:
13.11.2020 lika.svanadze@btu.edu.ge 11
in ოპერატორი
• in არის ლოგიკური ტიპის ოპერატორი, რომელშიც მონაწილეობს
ორი სტრიქონი. ის აბრუნებს მნიშვნელობა True-ს თუ პირველი
სტრიქონი გვხვდება მეორე სტრიქონში, წინააღმდეგ შემთხვევაში,
აბრუნებს მნიშვნელობას False
13.11.2020 lika.svanadze@btu.edu.ge 12
for ოპერატორი სტრიქონებთან
• for ციკლი გაირბენს სტრიქონს საწყისი სიმბოლოდან
ბოლო სიმბოლომდე
• თავდაპირველად letter ცვლადს ენიჭება სტრიქონის
პირველი სიმბოლო შედეგი:
• ციკლის ყოველ ბიჯზე letter ცვლადში ინახება
სტრიქონის შემდგომი სიმბოლო H
e
• ციკლი გრძელდება მანამ, სანამ ყველა სიმბოლოს l
წაკითხვა არ მოხდება l
o
13.11.2020 lika.svanadze@btu.edu.ge 13
Strings are immutable!
• სტრიქონის სიმბოლოების შეცვლა არ არის შესაძლებელი იმავე
ცვლადის გამოყენებით.
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)
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"
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))
13.11.2020 lika.svanadze@btu.edu.ge 18
ტექსტის ფორმატირება - %s
✲ ტექსტის დასაფორმატებლად format მეთოდის გარდა არსებობს %s ფორამტირების
მეთოდი (შედარებით მოძველებული ფორმატია).
მაგალითი
შედეგი
13.11.2020 lika.svanadze@btu.edu.ge 19
ტექსტის ფორმატირება - f string
✲ ტექსტის დასაფორმატებლად ასევე არსებობს f ფორმატირება, რომელიც გაქვს format()
მეთოდს, თუმცა უფრო მარტივი და ეფექტური გამოყენებისაა.
მაგალითი
შედეგი
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