Wednesday, July 8, 2015

თავი 6 (6,3 - 6,7)



6.4 String slices
6.4 სტრინგის ნაჭრები

სტრინგის სეგმენტს ეძახიან ნაჭერს. ნაჭრის მონიშვნა ხდება სიმბოლოს მონიშვნის მსგავსად:

>>> s = 'Monty Python'
>>> print s[0:5]
Monty
>>> print s[6:13]
Python

ოპერატორი [n:m] აბრუნებს სტრინგის ნაწილს n - იდან m - მდე
პირველ ინდექსს თუ გამოტოვებ (ორწერტილამდე), ნაჭერი დაიწყება სტრინგის თავიდან და თუ მეორე ინდექსს გამოტოვება, ნაჭერი იქნება სტრინგის ბოლომდე:

>>> fruit = 'banana'
>>> fruit[:3]
'ban'
>>> fruit[3:]
'ana'

პირველი ინდექსი თუ მეტია ან ტოლი მეორე სიმბოლოსი, მაშინ  შედეგი იქნება ცარიელი სტრინგი; წარმოდგენილი ორი ბრჭყალით:

>>> fruit = 'banana'
>>> fruit[3:3]
''

ცარიელ სტრინგში არაა სიმბოლო და მისი სიგრძეა 0, თუმცა ის ისეთივე სტრინგია როგორიც სხვები.

სავარჯიშო 6.2 მოცემულია რომ fruit არის სტრინგი, რას ნიშნავს fruit[:] ?

6.5 სტრინგები უცვლელია

საცდურია გამოიყენო ოპერატორი [] ტოლობის მარცხენა მხარეს იმ განზრახვით, რომ შეცვალო სიმბოლო სტრინგში. მაგ:

>>> greeting = 'Hello, world!'
>>> greeting[0] = 'J'
TypeError: object does not support item assignment

ამ შემთხვევაში "ობიექტი"(object) არის სტრინგი და "ელემენტი"(item ) - სიმბოლო, რომლის გატოლებასაც ცდილობდი.  ახლა ობიექტი არის იგივე რაც ცვლადი, თუმცა ამ განსაზღვრებას მოგვიანებით უფრო დავხვეწავთ. ელემენტი არის ერთ ერთი მნიშვნელობა რიგში.
ამ შეცდომის მიზეზი ისაა რომ სტრინგი უცვლელია(immutable), რაც ნიშნავს, რომ არ შეგიძლია შეცვალო არსებული სტრინგი. ყველაზე კარგი რის გაკეთებაც შეგიძლია, ესაა ახალი სტრინგით შეცვალო ძველი:

>>> greeting = 'Hello, world!'
>>> new_greeting = 'J' + greeting[1:]
>>> print new_greeting
Jello, world!

ეს მაგალითი აერთიანებს  განახლებულ პირველ სიმბოლოს  და greeting ნაჭერს . ორიგინალ სტრინგზე ეფექტი არ აქვს.

6.6 დამარყუჟება და დათვლა

ეს პროგრამა  ითვლის სტრინგში 'a' -ს რაოდენობას

word = 'banana'
count = 0
for letter in word:
      if letter == 'a':
            count = count + 1
print count

ეს პროგრამა აჩვენებს დათვლის  ახალ ნიმუშს - მთვლელს. ცვლადი count თავიდან არის 0 და შემდეგ იზრდება ყოველ ჯერზე  რამდენჯერაც იპოვნის 'a' - ს . როცა მარყუჟი მორჩება, count იქნება 'a' -ს რაოდენობა.

სავარჯიშო 6.3  ეს პროგრამა მოათავსე ფუნქციაში count და გააკეთე ისე რომ სტრინგებს და ასოებს იღებდეს არგუმენტებად.

6.7 in ოპერატორი

in არის ლოგიკური ოპერატორი რომელიც იღებს ორ სტრინგს და აბრუნებს True - ს იმ შემთხვევაში თუ პირველი სტრინგი არის მეორე სტინგში:

>>> 'a' in 'banana'
True
>>> 'seed' in 'banana'
False