python

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:

  1. Nuk mund të fillojë me numër
  2. Nuk mund të përmbajë hapësira
  3. 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ë:

Emrat e ndryshoreve:

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:
>>> 8 % 5
3
// Kryen pjesëtim të plotë pa pjesë dhjetore edhe nëse të dy numrat nuk janë të plotë. Shembull:
>>> 8.0 // 5.0
1
** Kryen ngritjen në fuqi. Shembull:
>>> 2 ** 3
8
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:
>>> 2 == 3
False
!= ose <> Kontrollon nëse vlerat në dy anët e operatorit janë të barabarta ose jo. Shembull:
>>> 2 != 3
True
< 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:
>>> 5 < 8 and 9 > 7
False
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:
>>> 2 > 1 or 7 > 8
True
not Mohimi i rezultatit para operatorit not. Shembull:
>>> not 2 > 1 or 7 > 8
False
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.