Wednesday, July 8, 2015

თავი 6 (6,8 - 6,9)



6.8 სტრინგის შედარება

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

if word == 'banana':
      print 'All right, bananas.'

შედარების სხვა ოპერაციები სასარგებლოა სიტყვების ანბანის მიხედვით დასაწყობად:

if word < 'banana':
            print 'Your word,' + word + ', comes before banana.'
elif word > 'banana':
            print 'Your word,' + word + ', comes after banana.'
else:
            print 'All right, bananas.'

პითონი დიდ და პატარა ასოებს არ იყენებს ისე, როგორც ადამიანი. ყველა დიდი ასო არის პატარა ასოს წინ:

Your word, Pineapple, comes before banana.

ასეთი პრობლემის გადაჭრა შეიძლება სტრინგების გადაკონვერტებით - ყველა ასო გახადო პატარა. კარგად დაიმახსოვრე იმ შემთხვევისთვის თუ თავის დაცვა მოგიხდება ანანასით შეიარღებულის წინააღმდეგ.

6.9 string მეთოდი

სტრინგები არის პითონის ობიექტების ნიმუში. ობიექტი შეიცავს ორივე მონაცემს(თავად ნამდვილ სტრინგს) ასევე მეთოდებს, რაცაა ობიექტში ჩაშენებული ფუნქცია და ხელმისაწვდომია ობიექტის მოთხოვნისას.(ესე ჩახლართულად წერია ბოიშყო)
პითონს აქვს ფუნქცია dir რომელიც რომელიც ობიქტის მეთოდებს სიის მიხედვით დაალაგებს. type ფუნქცია აჩვენებს ობიექტის ტიპს და dir ფუნქცია აჩვენებს ხელმისაწვდომ მეთოდებს.

>>> stuff = 'Hello world'
>>> type(stuff)
<type 'str'>
>>> dir(stuff)
['capitalize', 'center', 'count', 'decode', 'encode',
'endswith', 'expandtabs', 'find', 'format', 'index',
'isalnum', 'isalpha', 'isdigit', 'islower', 'isspace',
'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip',
'partition', 'replace', 'rfind', 'rindex', 'rjust',
'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines',
'startswith', 'strip', 'swapcase', 'title', 'translate',
'upper', 'zfill']
>>> help(str.capitalize)
Help on method_descriptor:

capitalize(...)
            S.capitalize() -> string

            Return a copy of the string S with only its first character
            capitalized.
>>> 

სანამ dir ფუნქცია მეთოდებს სიის მიხედვით ალაგებს და მეთოდებზე მარტივი ინფორმაციის სანახავად შეგიძლია გამოიყენო help, სტრინგ მეთოდზე უფრო მეტი ინფორმაცია არის აქ:  docs.python.org/library/string.html .
მეთოდის გამოძახება ხდება ფუნქციის გამოძახების მსგავსად - იღებს არგუმენტებს და აბრუნებს მნიშვნელობას - მაგრამ სინტაქსი განსხვავებულია. მეთოდს ვიძახებთ ცვლადის სახელის შემდეგ მეთოდის სახელის დამატებით - შუაში წერტილი; განმსაზღვრელად.
მაგალითად, მეთოდი upper იღებს სტრინგს და აბრუნებს ახალ სტრინგს, რომელშიც ყველა სიმბოლო დიდია. ფუნქციის სინტაქსის ნაცვლად upper(word), იყენებს მეთოდის სინტაქსს word.upper()

>>> word = 'banana'
>>> new_word = word.upper()
>>> print new_word
BANANA

წერტილით ჩაწერა ზუსტად განსაზღვრავს მეთოდის სახელს, upper, და სტრინგის სახელსაც, რომელზეც უნდა გამოვიყენოთ მეთოდი.  ცარიელი ფრჩხილები მიანიშნებს რომ ეს მეთოდი არგუმენტს არ იღებს.
მეთოდის გამოძახებას ჰქვია invocation(გამოძახება).
მაგალითად  არის სტრინგის მეთოდი find რომელიც ეძებს ერთი სტრინგის პოზიციას მეორე სტრინგში:

>>> word = 'banana'
>>> index = word.find('a')
>>> print index
1

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

find მეთოდს შეუძლია იპოვნოს არამარტო სიმბოლოები, არამედ ქვე-სტრინგებიც:

>>> word.find('na')
2

შეუძლია მიიღოს ინდექსი, როგორც მეორე არგუმენტი იმის მისათითებლად თუ რომელი ინდექსიდან დაიწყოს ძებნა:

>>> word.find('na', 3)
4

ერთ - ერთი მოთხოვნადი დავალებაა, რომ მოაშოროს თეთრი სფეისები(ჰარი) (ტაბები ან ცარიელი ხაზები) სტრინგის თავიდან და ბოლოდან  strip მეთოდით:

>>> line = ' Here we go '
>>> line.strip()
'Here we go'

ზოგი მეთოდი მაგალითად startswith აბრუნებს ლოგიკურ მნიშვნელობას

>>> line = 'Please have a nice day'
>>> line.startswith('Please')
True
>>> line.startswith('p')
False

შეატყობდი რომ startswith  საჭიროებს დამთხვევას, ამიტომ სანამ შევამოწმებთ, ხანდახან ვიღებთ მთლიან ხაზს და ვაკონვერტებთ პატარა ასოებად lower მეთოდით.

>>> line = 'Please have a nice day'
>>> line.startswith('p')
False
>>> line.lower()
'please have a nice day'
>>> line.lower().startswith('p')
True

ბოლო მაგალითში  lower მეთოდის გამოყენების შემდეგ გამოვიძახეთ startswith,   რომ შეგვემოწმებინა შედეგი ასოებდაპატარავებულ სტრინგში - იწყებოდა თუ არა ასოთი “p”. სანამ ყურადღებით ვართ, შეგვეძლება გამოვიყენოთ რამდენიმე მეთოდი ერთ გამოსახულებაში.

სავარჯიშო 6.4 არის სტრინგის მეთოდი count, რომელიც მსგავსია წინა სავარჯიშოს ფუნქციისა. წაიკითხე მეთოდის დოკუმენტაცია docs.python.org/library/string.html
და დაწერე გამოძახება, რომელიც დათვლის  რამდენჯერა გამოყენებული ასო 'a' სიტყვაში 'banana'.