Alfabeti
Numrat
Pythoni është edhe një makinë llogaritëse shumë e mirë. Mund të provoni të kryeni veprime dhe ai do ju japë rezultatin menjëherë. Një shembull shumë i thjeshtë është si më poshtë.
>>> 2 + 5
7
Për të marrë rezultatin shtypni tastën enter nga tastiera. Numrat në python janë tre llojesh: numrat e plotë, dhjetorë dhe kompleksë. Në shembullin që sapo pamë, u tregua veprimi i mbledhjes së dy numrave të plotë. Për tu bërë sa më familjarë me programin, mund të ushtroheni edhe vetë duke kryer veprime me numrat dhjetorë.
Këto karaktere +
, -
, *
, /
, **
janë operatorët përkatësisht për: mbledhjen, zbritjen, shumëzimin, pjesëtimin dhe ngritjen në fuqi.
>>> 2.5 * 5.7
14.25
Siç thamë më lart, pythoni punon edhe me numrat kompleksë. (Ky libër nuk merr përsipër shpjegimin e numrave kompleksë). Siç e dimë trajta e tyre është: pjesa reale + pjesa imagjinare. Në python numrat imagjinarë shkruhen duke përdorur prapashtesat j dhe J. Psh. (3i) * (4i) = (3 * 4)i2 = 12 * (-1) = -12. Le ta zgjidhim duke përdorur pythonin:
>>> 3j * 4J
(-12 + 0j)
Shpjegimi i numrave në këtë kapitull nuk ka si qëllim përfundimtar përdorimin e tyre për kryerjen e veprimeve me python si një makinë llogaritëse. Ato janë shumë të rëndësishëm në zgjidhjen e shumë problemave. Gjatë librit do të vëmë re rëndësinë e përcaktimit të llojit të numrave që do të na duhen.
Ndryshoret (variablat) dhe rregullat për emrat
Për shpjegimin e ndryshoreve le të studiojmë këtë shembull të thjeshtë:
U vendos të dhurohen fonde për një bamirësi. Më pas u vendos që gjithçka të bëhej transparente dhe emrat të paraqiteshin në një faqe interneti. Ishte menduar që secili të kishte një profil ku të plotësonte të dhënat personale dhe më pas të kryente edhe pagesën.
Për të zgjidhur këtë detyre fillimisht, na duhen emrat dhe pagesat. Por këto nuk kemi nga t'i dimë përpara se njerëzit t'i plotësojnë këto të dhëna, ndaj na duhet një mënyrë për të përcaktuar që të dhënat e llojit emër dhe pagesë të mbahen shënim diku. Njësoj siç do të vepronim sikur t'i mblidhnim këto të dhëna dorë më dorë secilit person. Të gjithë do të ndanim letrën minimalisht në dy shtylla, të emëruara: Emri dhe Pagesa, ndërsa rreshti i fundit do të ishte shuma.
Kuptohet që të dhënat e pagesave do të jenë numra dhe ato të emrave do të përbëhen nga gërma.
Pikërisht këto vlera, qofshin gërma apo numra që ne duam të mbajmë shënim quhen ndryshore. Ndryshoret janë mbajtëse vlerash.
Ndryshoreve u hidhet vlera në python me operatorin =
. Në të majtë vendoset emri i ndryshores dhe në të djathtë të barazimit hidhet vlera.
>>> emri1 = "Arbana"
>>> vlera1 = 9552.59
Ketu kemi dy lloje ndryshoresh të cilat i kemi quajtur: emri1 dhe vlera1. Nëse duam të shohim llojin e vlerës së këtyre ndryshoreve mund të shkruajmë:
>>> type('Arbana')
<type 'str'>
>>> type(9552.59)
<type 'float'>
Siç e shohim vlera që ka ndryshorja e parë është e llojit string (varg karakteresh), ndërsa vlera e ndryshores së dytë është e llojit float, numër dhjetor.
Kemi përcaktuar kështu dy ndryshore; për të parë vlerat e tyre përdoret komanda print e shoqëruar nga emri i ndryshores.
>>> print emri1
Arbana
>>> print vlera1
9552.59
Për të vendosur emrat e ndryshoreve në python ka disa kushte, pra jo çdo emër që duam mund të vendoset si emër ndryshoreje. Një emër i një ndryshoreje:
- Nuk mund të fillojë me numër
- Nuk mund të përmbajë hapësira
- Nuk mund të ndryshëm i njëjtë me emrin e një fjalëkyçe ( fjalë të cilat janë rezervuar për qëllime të tjera të gjuhës) të cilat janë:
- and
- as
- assert
- break
- class
- continue
- def
- del
- elif
- else
- except
- exec
- finally
- for
- from
- global
- if
- import
- in
- is
- lambda
- not
- or
- pass
- raise
- return
- try
- while
- with
- yield
Emrat e ndryshoreve:
- Mund të fillojnë me shkronjë të madhe ose jo
- Përveç gërmave mund të përmbajnë edhe karakterin
_
- Mund të përmbajnë numra, mjafton të mos fillojnë me një të tillë
Kini kujdes gjatë shkrimit të emrave të ndryshoreve, pasi pythoni bën dallim midis këtyre dy emrave: VLERA dhe VleRa. Në këtë rast keni deklaruar dy ndryshore. Psh. nëse shkruani:
>>> VLERA = 6
>>> VleRa = 8
>>> print VLERA
6
>>> print VleRa
8
Shohim nga shembulli që python është i ndjeshëm ndaj madhesise së karaktereve.
Vargjet e karaktereve (Strings)
Në shembullin që morëm më lart, folëm për llojet e vlerave të ndryshoreve. Përmendëm numrat e plotë, numrat dhjetorë si dhe vargjet e karaktereve.
Ne i përcaktojmë vargjet e karaktereve duke vendosur emrin midis thonjëzave njëshe '
ose dyshe "
. Zakonisht përdoren thonjëzat njëshe. Thonjëzat dyshe përdoren në rastet e emrave që mbajnë apostrof psh. "Ç'ishte?"
Veprimet me vargjet e karaktereve
Operatorët +
,-
,*
,/
,**
i përdorëm për numrat e plotë dhe dhjetorë. Tek vargjet e karaktereve +
dhe *
përdoren sërish, por siç do ta shohim edhe nga shembulli nuk kanë të njëjtin funksion si me numrat.
>>> fjala1 = 'a'
>>> fjala2 = 'bc'
>>> print fjala1 + fjala2
abc
Siç duket qartë nga shembulli operatori +
bashkon dy vargje duke lidhur fundin e njërës me fillimin e tjetrës. Ndërsa operatori *
përsërit vargun e karakterit sipas numrit që vendosim.
>>> 'perserit' * 3
perseritperseritperserit
>>> '4' * 3
444
Në këtë rast '4' përfaqson një varg karakteresh pasi ndodhet mes thonjzave.
Vargjet e shenjave mund të indeksohen. Pra të numërohet secili karakter më vete. Kjo bëhet sipas marrëveshjes që thotë se numërimi fillon nga 0.
>>> 'python'[0]
'p'
>>> 'python'[2]
't'
Mund të provoni fjalë të ndryshme vetë dhe t'i indeksoni ato. Nëse numri që doni të indeksoni është më i madh sesa numri i fjalës, do të merrni një mesazh sintakse që thotë se indeksi e ka kaluar kufirin.
>>> 'python'[8]
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
'python'[8]
IndexError: string index out of range
Për të indeksuar nga fundi, përdoren numrat negativë.
>>> 'python'[-1]
'n'
>>> 'python'[-3]
'h'
Gjithashtu mund të veçojmë disa karaktere së bashku.
>>> 'python'[1:3]
'yt'
Pra marrim karaktere nga indeksi 1 deri tek indeksi 3, pa e përfshirë 3.
>>> '1675'[1:2]
'6'
Gjatë shkrimit të kodit në python kini parasysh të respektoni rregullat e shkrimit të cilat do t'i mësojmë të gjitha me rradhë. Deri tani nuk kemi folur ende për hapësirën në python, e cila është shumë e rëndësishme. Në të majtë nuk lejohen hapësirat. Ndërsa në të djathtë aty ku hedhim vlerat mund të lejojme hapesira. Psh.
>>> fjala= " a "
>>> print fjala
a
Në këtë rast hapësira mes thonjzave normalisht do të interpretohet nga pythoni si pjesë e vargut te karaktereve, ndërsa hapësira midis shenjes =
dhe hapjes se thonjëzave nuk ndikon aspak.
Nëse vendosim hapesira në të majtë, pythoni do të na njoftoje se kemi bërë një gabim në shkrimin e kodit.
>>> fjala='a'
File "<pyshell#0>", line 1
fjala='a'
^
IndentationError: unexpected indent
Rregullat për shkrimin e kodit njihen si sintaksa e gjuhës. Nëse lini hapësirë në të majtë do të merrni një gabim sintakse. Sintaksa pra ka të bëjë me rregullat për shkrimin e një gjuhe, ndërsa semantika me kuptimin e saj. Njëlloj siç ndodh me gjuhët natyrale, kur duam të përkthejmë një fjali: kuptimi do të mbetet i njëjti, ndërsa vendosja e fjalëve do të ndryshojë nga njëra gjuhë në tjetrën.
Vargjet e karaktereve mund t'i krahasojmë mes tyre duke përdorur operatorët e krahasimit ==
, <
, >
:
>>> x = 'a'
>>> y = 'b'
>>> x < y
True
>>> x == y
False
Operatori in
është një operator logjik që jep si rezultat dy vlera: e vërtetë ose e gabuar.
>>> 'liber' in 'leksion'
False
Operatori in
bën kërkim të një vargu ose të një karakteri tek një varg i caktuar. Kështu ne kërkojmë për nënvargun libër nëse gjendet tek vargu leksion dhe përgjigja është e gabuar pasi një nënvarg i tillë nuk ndodhet brenda vargut leksion. Pra ne kërkojmë për përfaqësimin e këtij nënvargu në varg.
>>> 'h' in 'histori'
>>> True
Në këtë rast marrim një pergjigje të vërtetë pasi vargu histori përmban një nënvarg h.
Operatori not in
është një tjetër operator logjik që jep si rezulat dy vlera: e vërtetë ose e gabuar. Ky operator ndjek një logjikë të ndryshme nga operatori in, duke mohuar ekzistencen e nenvargut në varg. Pra pyetja nis 'a' nuk gjendet në 'varg'. Në këtë rast pergjigja është e gabuar pasi 'a' gjendet në vargun 'varg'. Ndërsa nëse kemi një varg 'emër' dhe kërkojmë për mospërfaqësimin e karakterit 'a' në këtë varg, pergjigja është e vërtetë. Pra a është e vërtetë që nuk gjendet karakteri 'a' në vargun 'emër'? Pergjigja është e vërtetë: Po karakteri 'a' nuk gjendet në vargun 'emër'.
>>> 'a' not in 'varg'
False
>>> 'a' not in 'emer'
True
Kur dini një gjuhë programimi pak a shumë semantika është e njëjtë, ndërsa sintaksa ndryshon, pra sërish kemi ngjashmeri me rastin kur duam të mësojmë gjuhë të huaja.
Operatorët
Gjatë shpjegimeve që kemi bërë deri tani, ne i kemi përmendur operatorët dhe kryesisht ato aritmetikë. Në tabelën më poshtë janë treguar llojet e operatorëve që ka gjuha python si dhe përshkrimin e tyre shkurtimisht.
Lloji i operatorit | Operatori | Përshkrimi |
---|---|---|
Aritmetikë | + |
Kryen mbledhjen |
- |
Kryen zbritjen | |
* |
Kryen shumëzimin | |
/ |
Kryen pjesëtimin. Kujdes! Nëse në të dy anët e operatorit kemi numra të plotë pjesa dhjetore nuk shfaqet, psh 8 / 5 jep 1 . Nëse duam rezultatin e saktë 1.6 duhet të shkruajmë 8.0 / 5 ose 8 / 5.0 |
|
% |
Kryen pjesëtim me mbetje dhe jep si rezultat vetëm mbetjen. Shembull:
|
|
// |
Kryen pjesëtim të plotë pa pjesë dhjetore edhe nëse të dy numrat nuk janë të plotë. Shembull:
|
|
** |
Kryen ngritjen në fuqi. Shembull:
|
|
Krahasues Operatorët krahasues japin dy lloje rezultatesh: e vërtetë dhe e gabuar. Nëse kushti është i vërtetë ateherë marrim rezultatin True (E vërtetë), përndryshe False (E gabuar). |
== |
Kontrollon për barazim vlerë në dy anët e operatorit. Shembull:
|
!= ose <> |
Kontrollon nëse vlerat në dy anët e operatorit janë të barabarta ose jo. Shembull:
|
|
< |
Krahason duke kërkuar vlerën më të vogël. | |
> |
Krahason kërkuar vlerën më të madhe. | |
>= |
Krahason kërkuar vlerën më të madhe ose të barabartë. | |
<= |
Krahason duke kërkuar vlerën më të vogël ose të barabartë. | |
Logjikë | and |
Kontrollon për vërtetësi vlerë në dy anët e operatorit dhe atëherë kushti është i vërtetë. Shembull:
|
or |
Kontrollon për vërtetësi kushti në të paktën njërën anë të operatorit dhe atëherë kushti është i vërtetë. Shembull:
|
|
not |
Mohimi i rezultatit para operatorit not. Shembull:
|
|
Hedhja e vlerës | = |
Hedh vlerën nga e djathta në të majtë të operatorit. |
Shprehjet
Shprehjet, siç i dimë edhe nga matematika, janë kombinim i vlerave, ndryshoreve dhe operatorëve. Një shprehje mund të formohet vetëm nga numra, vetëm nga ndryshore ose si kombinim i numrave dhe ndryshoreve. Në programim shprehjet japin një rezultat. 5 është një shprehje pasi ajo jep një rezultat, një vlerë. Ja disa shembuj shprehjesh:
5
x
x + 2
4 + 7
Rradha e veprimeve
Për të gjetur vlerën e një shprehje, dimë nga matematika që duhet respektuar radha e veprimeve, psh. 2 + 3*5 nuk jep 25, por 17. Pra preçedencë më të lartë në këtë shprehje ka shumëzimi pastaj mbledhja.
Gjithashtu dimë se nëse një shprehje përmban kllapa në fillim kryhen veprimet brenda tyre pastaj të tjerat sipas preçedencës. Le t'i shkruajmë në python këto që thamë.
>>> 2 + 5 * 8
42
>>> (2 + 5) * 8
56
>>> 7 - 5 - 2
0
>>> 7 - (5 - 2)
4
>>> 2 ** 3 * 8 / 4
16
Më poshtë po japim operatorët sipas preçedencës.
Operatori | Lloji |
---|---|
() |
Gjithçka që ndodhet brenda kllapave ka preçedencën më të lartë |
** |
Operatorët aritmetikë |
* |
|
/ |
|
% |
|
// |
|
+ |
|
- |
|
< |
Operatorët krahasues |
<= |
|
> |
|
>= |
|
!= ose <> |
|
== |
|
not |
Operatorët logjikë |
and |
|
or |
Komentet
Programet e mëdha përmbajnë mijëra rreshta kod dhe nuk përfundojnë brenda ditës. Ka shumë raste kur duam t'i kthehemi pjesëve të caktuara të kodit, qoftë për t'i ndryshuar funksionalitetin, apo për të ndrequr gabime të semantikës. Imagjinoni sa i vështirë që është ky proçes dhe sa kohë do të na harxhonte, të ndiqnim një për një të gjitha pjesët e kodit. Në këtë rast komentet janë një ndihmë shumë e nevojshme.
Komentet nuk merren parasysh nga programi, ato na shërbejnë vetëm neve. Kur flasim për komentet nuk kemi të bëjmë me kod por me gjuhë natyrale. Komentet fillojnë me karakterin thurje #. Gjithçka që ndodhet nga fillimi i këtij karakteri deri në fund të rreshtit nuk interpretohet si pjesë kodi nga programi.
>>> 5 * 2 # operatori i shumezimit
10
Gjatë librit do të mësojmë më shumë për komentet.
Hyrje Instruksionet