First Steps With Python_Mutable & immutable objects

ზოგიერთი ობიექტი პითონში მაგალითად string-ები tuple-ები და number-ები არიან immutable(უცვლელნი), მათი შეცვლა ფუნქციაში/მეთოდში შექმნის ახალ ცვლადს და ფუნქციის გარეთ ცვლადები ხელუხლებელი დარჩება, ხოლო list-ისა და dictionary-ს შეცვლა არ შექმნის ახალ ცვლადს და შესაბამისად ცვლილება აისახება ფუნქციის გარეთ. ასეთ ტიპებს mutable(ცვალებადი) ობიექტები ჰქვიათ.

ლუქ ეთ ზის:
list=[123,456,789]
dic={"123":"abc","456":"def","789":"ghi"}
def change(a,b):
        a.remove(123)
        b.pop(“123”)

change(list,dic)
print list
print dic

Continue reading ‘First Steps With Python_Mutable & immutable objects’

Advertisements

დეიქსტრას ალგორითმი

მოკლედ არაფერი არ არის ქართულ ინტერენტ სივრცეში ამ ალგორითმზე (ნუ საერთოდ არცერთ ალგორითმზე არ არის), ამიტომ რადგანაც მეც ამ სფეროთი დაინტერესებული ვარ დავწერ ერთ ორ სიტყვას.

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

ავიღოთ ასეთი გრაფი

გვინდა 0 წვეროდან გადასვლა მეექვსეში.
ალგორითმი ასეთია:

Continue reading ‘დეიქსტრას ალგორითმი’

პითონის სკრიპტების კომპილირება EXE გაფართოების ფაილად.

ოფიციალური საიტი პროგრამისა რომელსაც გამოვიყენებთ.

აქ დამწყებებს აგიხსნით თუ როგორ დააკომპილიროთ თქვენი სკრიპტები windows executable ფაილებად.

ვიწერთ py2exe-ს პითონის შესაბამისი ვერსიისთვის და ვაინსტალირებთ იქ სადაც გვაქ პითონი(მაგალითად c://python26).
დალშე ვქმნით ორ ფაილს(იმავე ფოლდერში სადაც გვაქ სკრიპტი): setup.py, click.py

click.py-ში ეწერება:
from os import system
system(“setup.py py2exe”)

ვთქვათ სკრიპტს ჰქვია:Our_script.py

setup.py-ში ეწერება:
from distutils.core import setup
import py2exe
setup(console=[“Our_script.py”])

თუ Our_script.py არი GUI პროგა და არ გინდათ კონსოლი გამოჩნდეს,მაშინ:
1) Our_script.py გადავარქვათ ასე: Our_script.pyw
2) setup.py-ში ჩაწერეთ:
from distutils.core import setup
import py2exe
setup(console=["Our_script.pyw"],windows = ["Our_script.pyw"])

Continue reading ‘პითონის სკრიპტების კომპილირება EXE გაფართოების ფაილად.’

First Steps With Python_Functions

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

ფუნქციის აღწერა ხდება “def”(define ინგლ.–განსაზღვრა)–ის დახმარებით. ფრჩხილებში მოთავსებულია ზემოთ ნახსენები არგუმენტები(პარამეტრები)

აღწერის ზოგადი სახეა:
def funqciis_saxeli(argument1,argument2,…):
    …ბრძანებები…
    …ბრძანებები…
    …ბრძანებები…

ფუნქციის გამოძახება:
funqciis_saxeli(argument1,argument2,…)
მარტივი მაგალითი:
def Add_Numbers(a,b):
    c=a+b
აჰა, ყველაფერი კარგადაა მაგრამ ამ ფუნქციას ვერ გამოვიყენებთ თუ ჯამი არ დავაბრუნეთ, რაც ხდება return ბრძანებით:
def Add_Numbers(a,b):
    c=a+b
    return c
Continue reading ‘First Steps With Python_Functions’

ID3 Tag Editor(GUI) using wxPython

უმრავლესობა(გარდა wave-ისა და სხვა რამოდენიმესი) აუდიო ფაილს აქვს ტეგები, რომლებიც აღწერენ ფაილს(უფრო სწორად სიმღერას/მუსიკას) მისი შემსრულებლის, შესრულების დროის(წლით), ალბომის სახელის, სიმღერის სახელის და სხვის მიხედვით. ასევე კომენტარების ჩაწერაც შეიძლება ტეგებში.

ხოდა ბევრი პროგრამით შეიძლება მათი შეცვლა, ერთ-ერთი ესაა :D

პროგის გასაშვებად აუცილებლად უნდა გეყენოთ wxPython,ვიწერთ აქედან.
არ იმუშავებს python 3.x ვერსიებზე(2to3-ც არ უშველის), ნუ თუ რამეა python 2.5 გამოიყენეთ,საიდან ვიწერთ ვიცით : )).მადლობა პატრულს :D
ხო, დანარჩენი რაღა გითხრათ პროგა რო გაეშვება იქნება რამოდენიმე ღილაკი:open,lets do it,clear tags,close.პირველი ხსნის ფაილის გასახსნელ დიალოგს,მეორე შეცლილ ტეგებს გადააკეთებს ფაილში, მესამე მიწერია ზევით,ბოლო ხურავს პროგას.

ნუ შეგიძლიათ სორსს გადახედოთ(პატარაა ;))
კლას ID3Editor-ში
open-ს აკისრია დიალოგური ბოქსის მეშვეობით აუდიო ფაილის გახსნა.

ClearTAGS ფუნქცია შლის რამე თუა ჩაწერილი ტექსტ ადგილებში

redact ფუნქცია იღებს ტექსტარეა-ებიდან მონაცემებს და მის მიხედვით არედაქტირებს ტეგებს.

source:
Continue reading ‘ID3 Tag Editor(GUI) using wxPython’

First Steps With Python_ოპერატორები

ოპერატორები

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

ოპერანდები კი ისინი რაზეც ოპერაციას ვასრულებთ.

არითმეტიკული ოპერატორები რიცხვებზე.

ოპერატორი განმარტება
x + y მიმატება
x - y გამოკლება
x * y გამრავლება
x / y გაყოფა *
x // y მთელი განაყოფი**
x ** y ხარისხში აყვანა (xy)
x % y ნაშთი***

*მთელი გაყოფა ანუ x და y ის განაყოფს ჩამოსცილდება წერტილის შემდეგი ციფრები(თუ ექნება რათქმაუნდა),ადამიანურ ენაზე:რამდენჯერ მოთავსდება y–ი x -ში.

**თუმცა 7/4–იც 1–ია და არა 1.75.ეს ხდება მაშინ როცა მთელ რიცხვს ჰყოფთ მთელ რიცხვზე. სხვა შემთხვევაში(მთელი ათწილადზე) 1.75,ამიტომ ყურადღებით.ეს შეიცვალა პითონ 3.x-ში.

***ანუ აბრუნებს ნაშთს. მაგალითად 13%4 არის 1.

მინიჭების ოპერატორები:

ოპერატორი განმარტება
x = y x-ს მიენიჭება y
x += y x-ს მიემატება y
x -= y x-ს გამოაკლდება y
x *= y x–ი გამრავლდება y–ზე
x /= y x–ი გაიყოფა y–ზე
x //= y x და y–ის მთელი განაყოფი მიენიჭება x-სს
x **= y x ახარისხდება y–ით
x %= y x % y–ეს მიენიჭება x-სს

შემდეგი ცხრილი არის ორობითი ლოგიკური ოპერატორები რომლებიც int და long int ებზე სრულდება მხოლოდ.

ოპერატორი განმარტება
x << y მარცხნივ გადაადგილება*
x >> y მარჯვნივ გადაადგილება*
x & y ორობითი AND**
x | y ორობითი OR**
x ^ y ორობითი XOR (eXclusive OR)**
~x ორობითი უარყოფა***

*ეს არის ორობითი ოპერაცია ესეიგი ოპერანდები ჯერ გადაიყვანება ორობითში და შემდეგ სრულდება ოპერაცია. ოპერაცია << გულისხმობს ორობითი რიცხვის გადააადგილებას მარცხნივ, მაგალითად:

x=1 #ორობითში 0001

y=2

x<<y იქნება 0100 (1 გადაადგილდა ორი ნაბიჯით).

ასევე არის მარჯვნივ გადაადგილებაზეც:

x=15 # ორობითში 1111

y=1

x>>y იქნება 111 (გადაადგილდა მარჯვნივ, რის შედეგად ჩამოეჭრა 1).

**დაწერილი მაქ აქ

*** ორობითი რიცხვების ინვერსია ანუ 1გადავა 0ში და პირიქით.

შემდეგი ცხრილში არის წარმოდგენილი შდარებითი ოპერატორები. რომლებიც აბრუნებენ boolean მნიშვნელობებს ანუ ან True-ს ან False-ს.

ოპერატორი განმარტება
x < y x ნაკლებია y-ზე
x > y x მეტია y–ზე
x == y ტოლია
x != y არ არის ტოლი
x >= y მეტია ან ტოლია
x <= y ნაკლებია ან ტოლია

ცხრილის მიხედვით, თუ x არ არის ნაკლები(ტოლია ან მეტია) y–ზე დააბრუნებს False–ს წინააღმდეგ შემთხვევაში True. ესაა ყველა სტქრიქონში აზრი, მაგალითად კიდე თუ x==y დააბრუნებს True-ს მოლოდ მაშინ თუ ეს რიცხვები ერთმანეთს უდრის.

შედარებები შეიძლება გაერთიანდეს კიდევაც ასე: w<x<y<z. ეს შედარებები შეგიძლია წარმოვიდგინოთ ასე: (w<x) and (x<y) and (y<z).

ასევე შეიძლება ასეც  x<y>z , მაგრამ მკითხველისთვის(გაითვალისწინე რომ მკითხველი შეიძლება შენც იყო!) ძალიან რთული წასაკითხია.

შენიშვნა:ბოლო შედარებაში, x-სა და z–ს შორის არაფერი შედარება არ ხორციელდება.

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

  1. თუ ერთერთი ოპერანდი არის კომპლექსური რიცხვი მეორეც/დანარჩენებიც გადავაიყვანება კომპლექსურზე.
  2. თუ ერთერთი ოპერანდი არის float მეორეც/დანარჩენებიც გადავაიყვანება float–ზე.
  3. თუ ერთერთი ოპერანდი არი long integer მეორეც/დანარჩენებიც გადაიყვანება long integer–ზე.

შენიშვნა:როცა ვმუშაობთ int რიცხვებზე და როცა რაღაც ბრძანების გამო რიცხვი იზრდება იქამდე რომ გადააჭარბა მაქსიმალურ ზღვარს(), ამ დროს პითონი ავტომატურად გადაიყვანს long integer–ში.

First Steps With Python_ცვლადები

მანამ ცვლადებზე გადავალთ, კომენტარები. პითონი კომენტარებს აღიქვამს # ამ სიმბოლოს შემდომ სიმბოლოებს ახალ ხაზამდე!

მაგრამ კომენტარის გაკეთება ეშმაკურადაც: სამ ბრჭყალებში(""" CommentText """) მოთავსებული ტექსტი საერთოდ არის DocString–ი(კლასებზე დაფუნქციებზე რომ გადავალთ დავაზუსტებ),რომელიც ამ ეტაპზე შეგვიძლია გამოვიყენოთ როგორც კომენტარი…

ცვლადების მინიჭება უმარტივესია,პითონში მისი ზოგადი სახე ასეთია:
variable_name=value
სადაც variable_name ცვლადის სახელია, ხოლო value მნიშვნელობა. ხოლო “=” ეს სიმბოლო არის მინიჭების სიმბოლო.

variable_name უნდა დაიწყოს ალფაბიტით ან ქვედატირეთი(underscore) ანუ a-Z ან _
variable_name ვერ იქნება ვერცერთი keyword. ხოლო keyword–ებია:
False,class,finally,is,return,None,continue,for
lambda,try,True,def,from,while,and,del,global
not,with,as,elif,if,or,yield,assert,else,import,in
pass,break,except,raise

კივორდების “საქმიანობებს” განვიხილავ მერე :)

მონაცემთა ტიპები:
არსებობს 6 ძირითადი ტიპი პითონში, ესენია:
1)integer–მთელი რიცხვი
2)long integer–დიდი დიაპაზონის მთელი რიცხვი
3)float–მცურავწერტილიანი რიცხვი,ანუ ათწილადი.
4)string–ტექსტი
5)list–სია,მონაცემებთა ერთობლიობა, რომელთა ინდექსირება ხდება რიცხვებით.
6)dictionary–სია,მონაცემებთა ერთობლიობა, რომელთა ინდექსირება ხდება ნებისმიერი string–ით.

მონაცემების მინიჭება ცვლადებზე(შესაბამისობა დაცულია):
1)My_INT=5
2)My_L_INT=-123L
3)My_FLOAT=-23.8
4)My_STRING="chemi teqsti :D ormagi brchyalit"
ასევე შესაძლებელია ასე:
4*)My_STRING_='chemi teqsti :D apostrofit'
4**)My_STRING__="""chemi teqsti :D sami brchyalit
romelsac sheudzlia axal xazzec wakitxva :))"""

^ამ შემთხვევაში ეს სამი ბრჭყალები Doc String-ად არ ჩაითვლება. ამ სამ ბრჭყალს აქ ის გამოყენება აქ რომ აღარ ხდება საჭირო ახალი ხაზის(‘\n’) სიმბოლოს გამოყენება.^
5)My_LIST=["dabaduba",26987,-9L,"""xazi#1
xazi#2""",0.003,[":)",'(:']]

–როგორც ხედავთ სია უნდა იყოს კვადრატულ ფრჩხილებში. ასევე შესაძლებელია სიაში იყოს სია.
6)My_DICT={"magida":"table","skami":"chair","dzagli":"dog"}
–როგორც ხედავთ dictionary ფიგურალურ ფრჩხილებშია მოთავსებული ინდექსი და ველი(ანუ სიის წევრი) ‘:’ ამით არის გამოყოფილი.
შენიშვნა ჩვენ შეგვიძლია ასეთი რამ:
a=b=c=d=5. მთავარია 5–ი იყოს ბოლოში. და ასეთი რამაც:
a,b,c,d=5,5,5,5.მთავარია 5იყოს იმდენჯერ რამდეჯერაც ცვლადებია მძიმით გამოყოფილი.

Python Trick: სხვა ენებში როცა გვინდა ცვლადებს(ვთქვათ a,b–ს) მნიშვნელობები გავცვალოთ ვაკეთებთ ასე:
droebiti_cvladi=a
a=b
b=droebiti_cvladi

მაგრამ პითონი გვაძლევს საშუალებას მარტივად გამოვიყენოთ მისი სინტაქსის ეს ნაწილი(გავიხსენოთ a,b,c,d=5,5,5,5)
a,b=b,a
[Python RuleZ :))]

მონაცემების მიღება(შესაბამისობა დაცულია,ანუ ზედა ექსვსიდან პირვლი პირველს ემთხვევა):
1)print My_INT-არაფერი განსაკუთრებული დაბეჭდავს ხუთიანს.
2)print My_L_INT-არაფერი განსაკუთრებული, დაბეჭდავს -123-ს და L-საც,ანუ:-123L.
3)print My_FLOAT-არაფერი განსაკუთრებული, დაბეჭდავს -23.8-ს
4)print My_STRING-არაფერი განსაკუთრებული, დაბეჭდავს “chemi teqsti :D ormagi brchyalit” (ბრჭყლაების გარეშე).
შენიშვნა: სთრინგის სიმბოლოზე წვდომა შეიძლება კუთხოვანი ფრჩხილით,რომელთა შორის იქნება რიცხვი, რომელიც გვეუბნება თუ მერამდენეა,ის. ანუ:
print My_STRING[0]–დაბეჭდავს:c–ს. იმიტომ რომ ის რიცხვი კი არ გვიჩვენებს მერამდენეა, არამედ თუ რამდენი სიმბოლოს შემდეგია სიმბოლო. ანუ:
print My_STRING[10]–დაბეჭდავს t-ს. ანუ სხვანაირად რო ვთქვათ პითონი ათვლას იწყებს 0–დან.
5)print My_LIST[0] აქაც იგივე პირველი წევრის გამოძახებისთვის კვ. ფრჩხილებში–0,მეორესთვის–1, დაასე შემდეგ. ანუ
My_LIST[0] არის: dabaduba
My_LIST[1] არის: 26987 და
My_LIST[3] არის:
xazi#1
xazi#2
6) აქაც სიის მსგავსად კვ. ფრჩხილები, და ახლა რიცხვის მაგიერ სთრინგი, რომელიც :–ის მარცნივ დგას. ანუ My_DICT–დან თუ გვინდა მაგიდის თარგმანი
(ამ კონკრეტულ შემთხვევაში ამ სიას ლექსიკონის დანიშნულება მივეცი,თან სიმბოლურია, სიის ტიპი ხომ dictionary–ა:)) ვწერთ ასე:My_DICT["magida"]. ფუნქცია დააბრუნებს: table–ს.
თუ დავწერთ My_DICT["skami"] იქნება chair. ალბათ გასაგებია ხომ?

PROBLEMS(შეამოწმე შენი თავი:)))
1)რომელია სწორი ფორმა?
a. _GiO_DiX="""" Gio Dixtosa :D"""
b. cvladi#1=12L
c. cvladiN-1=-89
d. False=-9L
პასუხი:a

რომელია არასწორი ფორმა?

a. VaRiaBle="True"

b. sityva="stringua :D'

c. RETURN= "-<?"

d. true,false="martalia",-1

პასუხი:b


სტატისტიკა:

  • 29,795 hits

free counters

აბირჟავებენ

Advertisements