Monday, June 29, 2015

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



თავი 6

სტრინგები

6.1 A string is a sequence

სტრინგი სიმბოლოების თანრიგია.  სიტყვაში სიმბოლოზე წვდომა შეგიძლია კვადრატული ფრჩხილების გამოყენებით.

>>> fruit = 'banana'
>>> letter = fruit[1]

მეორე ბრძანება,  fruit ცვლადიდან  იღებს სიმბოლოს ინდექსურ პოზიციას 1 და უტოლებს ცვლად letter - ს
ინდექსი ჰქვია გამოსახულებას კვადრატულ ფრჩხილში. ინდექსი უთითებს სახელიდან რომელი სიმბოლო გინდა. თუმცა შეიძლება სასურველი შედეგი ვერ მიიღო:

>>> print letter
a

უმეტესობისთვის პირველი ასო 'banana' - ში  არის  b და არა a, მაგრამ პითონში ინდექსირება ხდება სტრინგის დასაწყისიდან და პირველი სიმბოლოს შესაბამისია ნული ინდექსი.

>>> letter = fruit[0]
>>> print letter
b

'banana' - ში b არის ინდექსად 0.  a არის 1 და n არის 2.
       
          
                      

შეგიძლია გამოიყენო გამოსახულება ცვლადების და ოპერატორების ჩათვლით, როგორც ინდექსი, მაგრამ ინდექსის მნიშვნელობა უნდა იყოს მთელი რიცხვი. სხვა შემთხვევაში მიიღებ:

>>> letter = fruit[1.5]
TypeError: string indices must be integers

6.2 სტრინგის სიგრძის გაგება len - ის გამოყენებით

len არის ჩაშენებული ფუნქცია, რომელიც აჩვენებს სიმბოლოების რაოდენობას სტრინგში

>>> fruit = 'banana'
>>> len(fruit)
6

სტრინგის ბოლო სიმბოლოს გამოსატანად შეიძლება დაწერო რამე მსგავსი შეცდომა:

>>> length = len(fruit)
>>> last = fruit[length]
IndexError: string index out of range

IndexError - ის მიზეზი ისაა რომ 'banana' - ში არაა სიმბოლო ინდექსით 6.  მას შემდეგ, რაც 0 - იდან თვლა დავიწყეთ, 6 სიმბოლო დანომრილია 0 - დან 5 - ის ჩათვლით. ბოლო სიმბოლო რომ გამოიტანო  length - ს უნდა გამოაკლო 1.

>>> last = fruit[length - 1]
>>> print last
a

სხვანაირად რომ ვთქვათ, შეგიძლია გამოიყენო უარყოფითი ინდექსები, რომელიც ითვლის უკუღმა - სტრინგის ბოლოდან. fruit[-1] მიუთითებს ბოლო სიმბოლოზე, fruit[-2] - ბოლოდან მეორეზე და.ა.შ.

6.3 Traversal through a string with a loop

ბევრ გამოთვლაში სტრინგი ასო - ასო  მუშავდება. ხშირად გამოთვლას იწყებენ თავიდან, ყოველ ჯერზე იღებენ თითო სიმბოლოს, რამეს უკეთებენ და ასე ბოლომდე. დამუშავების  ამ ნიმუშს ეძახიან "გადაკვეთას”. ერთ - ერთი მეთოდი "გადაკვეთა" while მარყუჟის დასაწერად:

index = 0
while index < len(fruit):
      letter = fruit[index]
      print letter
      index = index + 1

ეს მარყუჟი გადაკვეთს სტრინგს და გამოსახავს თითოეულ ასოს თითო ხაზზე. მარყუჟის პირობაა: index < len(fruit), ასე რომ, როცა index ტოლია სტრინგის სიგრძის, პირობა მცდარია და მარყუჟის კოდი არ განხორციელდება.  სტრინგში ბოლო სიმბოლოა - len(fruit) 1.

სავარჯიშო 6.1 დაწერე while  მარყუჟი, რომელიც იწყება სტრინგის ბოლო სიმბოლოდან, ჩამოდის პირველ სიმბოლომდე და ბეჭდავს ყოველ ასოს ცალკე ხაზზე.
"გადაკვეთის" დასაწერად სხვა მეთოდია for მარყუჟი:

for char in fruit:
      print char

ყოველ დამარყუჟებაზე ყოველი მომდევნო სიმბოლო უტოლდება ცვლადს char. მარყუჟი გრძელდება სტრინგის ბოლომდე.