Thursday, July 9, 2015

თავი 6 (6,12 - 6,14)



6.12 გამართვა

ცოდნა რომელიც უნდა დაამუშავო როგორც შენი პროგრამა, ყოველთვის გეკითხება "აქ რა შეცდომა შეიძლება იყოს?" ან "ისეთი რა უნდა ქნას მომხმარებელმა, რომ პროგრამაში შეცდომა გამოიწვიოს?"
მაგალითად,  შეხედე ამ პროგრამას, რომელიც გამოვიყენეთ while მარყუჟის სადემონსტრაციოდ:

while True:
            line = raw_input('> ')
            if line[0] == '#' :
                        continue
            if line == 'done':
                        break
            print line
print 'Done!'

შეხედე რა მოხდება როცა მომხმრებელი შეიყვანს ცარიელ ხაზს:

> hello there
hello there
> # don't print this
> print this!
print this!
Traceback (most recent call last):
File "copytildone.py", line 3, in <module>
if line[0] == '#' :

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

if line.startswith('#'):

და მეორე:  დავწეროთ if ბრძანება და გამოვიყენოთ მეურვის ნიმუში(guardian pattern) და დავრწმუნდეთ, რომ მეორე ლოგიკური გამოსახულება ფასდება მხოლოდ იქ, სადაც არის მინიმუმ ერთი სიმბოლო სტრიქონში

if len(line) > 0 and line[0] == '#':

6.13 ლექსიკონი


counter: ცვლადი, რომელიც გამოიყენება რამის დასათვლელად. ჩვეულებრივ ინიცილირებულია როგორც ნული და შემდეგ იზრდება.
empty string: სტრინგი სიმბოლოების გარეშე, სიგრძით 0. გამოსახული 2 ბრჭყალით.
format operator: ოპერატორი %, რომელიც იღებს ფორმატ სტრინგს, tuple - ს და აგენერირებს სტრინგს რომელშიცაა tuple - ს ფორმატირებული ელემენტები განსაზღვრული ფორმატ სტრინგის მიერ(ოღჩ)
format sequence: სიმბოლოების რიგი ფორმატ სტრინგში, როგორიცაა %d, რომელიც განსაზღვრავს როგორ უნდა დაფორმატირდეს მნიშვნელობა.
format string: სტრინგი გამოყენებული ფორმატ ოპერატორთან, რომელიც შეიცავს ფორმატ თანრიგს (format sequences).
flag: ბულის ცვლადი, რომელიც გვაჩვენებს პირობა მართალია თუ არა.
invocation:  ბრძანება, რომელიც იძახებს მეთოდს.
immutable: რიგის თვისება, რომლის ელემენტიც უცვლელია.
index: მთელნიშნა მნიშვნელობა რიგში ელემენტის მოსანიშნად, მაგალითად სიმბოლო - სტრინგში.
item: ერთ-ერთი მნიშვნელობა რიგში.
method: ფუნქცია ასოცირებული ობიექტთან, რომელიც გამოძახებაც ხდება წერტილოვანი ჩაწერით.
object: რაღაც, რასაც ცვლადმა შეიძლება მიმართოს. ამჟამად შეგიძლია “object” და
“value” მონაცვლეობით გამოიყენო.
search: გადაკვეთის ნიმუში, რომელიც ჩერდება როცა პოულობს რასაც ეძებს.
sequence:  თანმიმდევრული კომპლექტი, რომელიც არის მნიშვნელობათა კომპლექტი, სადაც მნიშვნელობა არის იდენტიფიცირებული მთელრიცხვა ინდექსით.
slice: ინდექსების დიაპაზონით განსაზღვრული სტრინგის ნაწილი .
traverse:  ელემენტების გამეორება თანრიგში თითოეულზე მსგავსი ოპერაციით.
 

6.14 სავარჯიშოები.

სავარჯიშო 6.5 პითონის კოდი რომელიც ინახავს სტრინგს:

str = 'X-DSPAM-Confidence: 0.8475'

გამოიყენე find და სტრინგის დაჭრა რომ ამოიღო სტრინგის ნაწილი ორწერტილის შემდეგ და მერე გამოიყენე float ფუნქცია ამოღებული სტრინგის ათწილადად გადასაკონვერტირებლად.
სავარჯიშო 6.6 წაიკითხე სტრინგის მეთოდის დოკუმენტაცია docs.python.org/lib/string-methods.html . ალბათ მოგინდება ექსპერიმენტის ჩატარება ზოგიერთზე რომ დარწმუნდე როგორ მუშაობენ. strip და replace არის ძალიან სასარგებლო.
დოკუმენტაცია იყენებს სინტაქს რომელმაც შეიძლება დაგაბნიოს. მაგ: 
find(sub[, start[, end]]), კვადრატული ფრჩხილები აჩვენებს ნებაყოფლობით არგუმენტებს, sub საჭიროა, მაგრამ start ნებაყოფლობითია, და თუ ჩასვავ start - ს, end ნებაყოფლობითია.