You are on page 1of 19

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

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

ლიკა სვანაძე
lika.s v anadze@bt u.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

15.11.19 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[:]

15.11.19 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)

15.11.19 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

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

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


print(text) HelloHelloHello

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


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

15.11.19 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

15.11.19 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

15.11.19 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

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

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

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

შედეგი:
text  =  'Hello  World!'
index=0
H
while  index<len(text):
e
letter=text[index]
l
print(letter)
l
index  +=  1
o

W
o
r
l
d
!

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

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


print(res) True

15.11.19 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
!

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

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


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

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


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

15.11.19 lika.svanadze@btu.edu.ge 14
ფუნქციები (მეთოდები) სტრიქონებზე (2)
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')
ქვესტრიქონით

15.11.19 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

15.11.19 lika.svanadze@btu.edu.ge 16
format() ფუნქცია
✲ 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))

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

15.11.19 lika.svanadze@btu.edu.ge 17
სავარჯიშოები:
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 სიმბოლო და დაბეჭდეთ
შედეგი. დაითვალეთ რამდენჯერ არის ნახსენები სიმბოლო ‘ს’.

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

15.11.19 lika.svanadze@btu.edu.ge 19

You might also like