Full Transcript

Identifikatori -------------- [[https://www.geeksforgeeks.org/python-keywords-and-identifiers/]](https://www.geeksforgeeks.org/python-keywords-and-identifiers/) Identifikatori u Pythonu služe služe za zapis imena varijabli, funkcija, klasa, modula i ostalih korisnički definiranih tipova. Radi se o...

Identifikatori -------------- [[https://www.geeksforgeeks.org/python-keywords-and-identifiers/]](https://www.geeksforgeeks.org/python-keywords-and-identifiers/) Identifikatori u Pythonu služe služe za zapis imena varijabli, funkcija, klasa, modula i ostalih korisnički definiranih tipova. Radi se o imenima preko kojih se pristupa određenim objektima u memoriji. Pravila: - mogu se sastojati od - slova engleskog alfabeta (A-Z, a-z), - brojeva (0-9) i - znaka \_ (underscore). - prvi znak mora biti slovo ili znak \_, ali ne broj. - identifikatori su **case-sensitive** (razlikuju mala i velika slova). - identifikator ne smije biti Pythonova **ključna riječ** (npr., if, class, while). - dvostruki znak \_\_ na početku i kraju identifikatora ima posebna značenja za klase i interne mehanizme (npr., \_\_init\_\_). Primjer ispravnih identifikatora: var\_1 = 10 \_myVar = 20 MyClass = \"Example\" Python nema ograničenje duljine identifikatora, ali predugačka imena treba izbjegavati radi čitljivosti koda. Ponekad je pogodno koristiti složena imena zbog boljeg razumijevanja kôda. Dva najčešća pristupa označavanju složenih imena su: - riječi od kojih je ime sastavljeno odvajaju se znakom za podcrtavanje - riječi se pišu spojeno, s velikim početnim slovom Predugačka imena treba izbjegavati radi vlastite komocije, posebice za varijable i funkcije koje se često ponavljaju. Preporučljivo je izabrati imena koja će nam olakšati uporabu programa i kroz neko dulje vrijeme. Ključne riječi -------------- [[https://www.w3schools.com/python/python\_ref\_keywords.asp]](https://www.w3schools.com/python/python_ref_keywords.asp) Ključne riječi (rezervirane riječi) u Pythonu su točno određene riječi koje se ne smiju koristiti kao identifikatori. Neke od ključnih riječi uključuju: if, else, while, for, def, class, return, import, from, with, as, try, except, itd. Ključne riječi se uvijek pišu malim slovima (osim True, False, i None). Pythonova verzija se mijenja kroz vrijeme, pa se popis ključnih riječi može malo razlikovati. Uvijek je moguće prikazati popis svih trenutnih ključnih riječi pomoću modula keyword: **Primjer 1: **keyword module Slika na kojoj se prikazuje tekst, snimka zaslona, Font, broj Opis je automatski generiran **Primjer 2: **help() funkcija ![](media/image2.png) Slika na kojoj se prikazuje tekst, snimka zaslona, Font, broj Opis je automatski generiran Literalne konstante ------------------- Literalne konstante su vrijednosti koje se zadaju jednom i ne mijenjaju se tijekom izvršavanja programa. - znakovne - cjelobrojne - realne (konstante s pokretnim zarezom) Python koristi različite vrste literalnih konstanti, uključujući: - **string konstante**: tekstualne konstante koje se pišu unutar jednostrukih ili dvostrukih navodnika. Python podržava jednostruke (\') i dvostruke (\") navodnike za stringove, - Primjeri: \"Hello\", \'World\', \'\'\'Višelinijski string\'\'\', \'\\xAF\'. - **numeričke konstante**: cijeli brojevi (int), decimalni brojevi (float), kompleksni brojevi (complex). Python također podržava heksadecimalne, oktalne i binarne konstante (npr., \'0x1a\', \'0o17\', \'0b101\'). - Primjeri: 123, 3.14, 4 + 5j. - **logičke konstante**: True i False. - **None konstanta**: None (označava odsutnost vrijednosti). ZNAKOVNE KONSTANTE U PYTHONU U Pythonu **znakovne konstante** (tj. stringovi) koriste jednostruke (\' \') ili dvostruke (\" \") navodnike te višelinijske stringove (\'\'\' ili \"\"\"). Za razliku od C-a, Python nema poseban tip za pojedinačne znakove i svi su znakovi predstavljeni kao stringovi duljine 1. Primjer: \'A\' \# String s jednim znakom U Pythonu, znak \'A\' ima **ASCII vrijednost** 65. To možete dobiti pomoću funkcije ord() koja vraća cjelobrojnu vrijednost znaka, ili obrnuto, funkcijom chr() koja vraća znak na temelju ASCII vrijednosti. Primjer: print(ord(\'A\')) \# Vraća 65 print(chr(65)) \# Vraća \'A\' ASCII KODOVI I ZADAVANJE ZNAKOVA PUTEM KODA U Pythonu također možete koristiti **heksadecimalne** i **oktalne** zapise za zadavanje znakova, slično kao u C-u. - **Oktalni zapis**: koristi se prefiks \\o, gdje ooo predstavlja troznamenkasti oktalni broj. - Primjer za oktalni prikaz znaka \'A\': - **Heksadecimalni zapis**: koristi se prefiks \\x, gdje xx predstavlja dvoznamenkasti heksadecimalni broj. - Primjer za heksadecimalni prikaz znaka \'A\': **ESKEJP SEKVENCIJE U PYTHONU** [[https://www.tutorialspoint.com/python/python\_escape\_characters.htm]](https://www.tutorialspoint.com/python/python_escape_characters.htm) Među znakovne konstante ubrajamo i eskejp sekvence (specijalne znakovne konstante koje se sastoje od dva ili više znakova); najčešće se koriste kao dijelovi formata za učitavanje, odnosno ispis podataka. Python podržava veliki broj **eskejp sekvencija** (escape sequences), koje su vrlo slične C-u: - slova (velika/mala) \'A\'... \'Z\' \'a\'... \'z\' - znamenke \'0\'... \'1\' - znakovi interpunkcije \'.\' \'!\' \',\' \';\' - bjelina \' \' +-----------------------------------+-----------------------------------+ | - **Eskejp sekvenca** | - **Značenje** | +===================================+===================================+ | | | +-----------------------------------+-----------------------------------+ | | | +-----------------------------------+-----------------------------------+ | | | +-----------------------------------+-----------------------------------+ | | | +-----------------------------------+-----------------------------------+ | | | +-----------------------------------+-----------------------------------+ | | | +-----------------------------------+-----------------------------------+ | | | +-----------------------------------+-----------------------------------+ | | | +-----------------------------------+-----------------------------------+ | | | +-----------------------------------+-----------------------------------+ | | | +-----------------------------------+-----------------------------------+ | | | +-----------------------------------+-----------------------------------+ | | | +-----------------------------------+-----------------------------------+ Primjeri: print(\'A\\nB\') \# Ispisuje \'A\' u jednom redu i \'B\' u drugom redu print(\'Hello\\tWorld\') \# Ispisuje \'Hello\', zatim tabulator, pa \'World\' **Primjer prikaza znaka \'A\' na više načina u Pythonu:** - \'A\' - 65 (ASCII vrijednost) - \'\\101\' (Oktalni prikaz) - \'\\x41\' (Heksadecimalni prikaz) print(\'A\') \# Ispisuje \'A\' print(ord(\'A\')) \# Ispisuje 65 print(\'\\101\') \# Ispisuje \'A\' (oktalni zapis) print(\'\\x41\') \# Ispisuje \'A\' (heksadecimalni zapis) **Zaključak** U Pythonu su **znakovne konstante** reprezentirane stringovima. Python podržava zadavanje znakova putem oktalnih i heksadecimalnih zapisa, te ima sve uobičajene eskejp sekvence, baš kao i u C-u. KONSTANTE POLJA ZNAKOVA (KONSTANTNI ZNAKOVNI NIZOVI) \- polje znakovnih konstanti; pišu se unutar jednog para znakova dvostrukih navodnika \" \" , jednostrukih navaodnika \' \' ili višestrukih navodnika \'\'\' \'\'\' , \"\"\" \"\"\" isto kao i jedan znak \- eskejp sekvence mogu biti uključene u konstantne polja znakova \- količina memorije koju zauzima konstanta polja znakova uvijek je za jedan bajt veća od broja znakova u polju \- pisanje konstanti polja znakova koje su dugačka da bi stala u jednu liniju: ispred prijelaza u novi red stavimo znak \\ prevodilac će tada ignorirati kombinaciju znaka \\ i znaka za prijelaz u novi red \\ znači da se red nastavlja na početak sljedećeg ♣ iskoristiti svojstva automatskog nadovezivanja konstanta niza znakova: ako se dva takva niza nalaze jedan pored drugog, onda će ih prevodilac automatski nadovezati \"Vrlo dugacka konstanta \\ niza znakova\" \"Vrlo dugacka konstanta \" \"niza znakova\" CJELOBROJNE KONSTANTE --------------------- **1. Decimalne cjelobrojne konstante** - U Pythonu **decimalne cjelobrojne konstante** su obični cijeli brojevi koji se sastoje od znamenki 0-9. - **Ako konstanta ima više znamenki, prva znamenka ne smije biti nula** (osim ako je broj nula). Primjeri: python Kopiraj kod broj = 123 \# Decimalni broj pozitivan\_broj = +123 negativan\_broj = -456 **Napomena:** Python ne zahtijeva oznaku za tip broja kao u nekim drugim jezicima (nema potrebe za sufiksima poput L ili U). **2. Oktalne cjelobrojne konstante** - Oktalni brojevi u Pythonu moraju **počinjati s 0o** (ili velikim 0O) da bi se označilo da je broj oktalni. - Znakovi moraju biti unutar raspona znamenki **0-7**. Primjeri: python Kopiraj kod oktalni\_broj = 0o17 \# Oktalni broj (17 u oktalnom je 15 u decimalnom sustavu) pozitivan\_oktalni\_broj = +0o17 negativan\_oktalni\_broj = -0o17 **Napomena:** U starijim verzijama Pythona (prije verzije 3.x), oktalni brojevi započinjali su samo s nulom (0), ali je ovo promijenjeno da bi bilo manje zbunjujuće. **3. Heksadecimalne cjelobrojne konstante** - Heksadecimalni brojevi moraju **počinjati s 0x ili 0X**. - Ovi brojevi koriste znamenke **0-9** i slova **A-F** (velika ili mala) za prikazivanje vrijednosti od 10 do 15. Primjeri: python Kopiraj kod heksadecimalni\_broj = 0x1A3F \# Heksadecimalni broj (1A3F u hex je 6719 u decimalnom sustavu) pozitivan\_heksadecimalni\_broj = +0x1A3F negativan\_heksadecimalni\_broj = -0x1A3F **4. Dodatni sufiksi za tipove long, unsigned, long long (NISU PODRŽANI U PYTHONU)** - U Pythonu **nema sufiksa** poput L, U, UL, ili LL za označavanje različitih vrsta cjelobrojnih konstanti. - **Python automatski** rukuje cijelim brojevima i nema potrebe za eksplicitnim razlikovanjem tipova kao u jezicima poput C/C++. **Python detaljno rukuje cijelim brojevima na sljedeći način:** - Svi cijeli brojevi u Pythonu automatski su **tipa int**, a Python automatski povećava raspon tih brojeva kada je potrebno (u pozadini koristi tip long). - U Pythonu **nema potrebe za definiranjem long** kao u jezicima poput C, jer Python ne ograničava veličinu cjelobrojne vrijednosti -- dokle god imate dovoljno memorije, Python će automatski upravljati velikim brojevima. - Python **ne podržava tipove unsigned** --- svi cijeli brojevi su znakovi (mogu biti pozitivni ili negativni). **Primjeri velikih brojeva u Pythonu (bez potrebe za long):** veliki\_broj = 12345678901234567890 \# Python automatski koristi veliki cjelobrojni tip bez oznake \'L\' negativan\_veliki\_broj = -98765432109876543210 **Zaključak:** - Python koristi **decimalne, oktalne i heksadecimalne cjelobrojne konstante** s konvencijama koje uključuju oznake 0o za oktalne brojeve i 0x za heksadecimalne. - **Sufiksi za long, unsigned, long long ne postoje** u Pythonu jer Python automatski rukuje veličinom cijelih brojeva bez potrebe za dodatnim oznakama. Za rad s cjelobrojnim konstantama, Python je mnogo jednostavniji u usporedbi s jezicima poput C/C++, ali ipak podržava različite sustave zapisa brojeva (decimalni, oktalni, heksadecimalni). U Pythonu se realne (ili **floating-point**) konstante koriste za predstavljanje brojeva s pomičnim zarezom. Međutim, pravila za ove konstante u Pythonu razlikuju se od onih u jezicima kao što su C ili C++. Evo kako Python upravlja realnim konstantama, koje su opcije dostupne, i koje od navedenih pravila vrijede u Pythonu: REALNE KONSTANTE S DECIMALNOM TOČKOM ------------------------------------ U Pythonu se realni brojevi (brojevi s pomičnim zarezom) pišu koristeći decimalnu točku (.) koja odvaja cjelobrojni dio od decimalnog dijela. - **Primjeri**: python Kopiraj kod x = 300000.0 \# Realni broj (float) y = 1.0 \# Realni broj s cjelobrojnim dijelom i decimalnom točkom z =.1 \# Realni broj (0.1) - Python dopušta korištenje predznaka + ili - za realne brojeve: python Kopiraj kod pozitivan\_broj = +300.0 negativan\_broj = -45.6 **2. Realne konstante u znanstvenoj notaciji (E notacija)** Python podržava **znanstvenu notaciju** (ili **E notaciju**) za prikazivanje vrlo velikih ili vrlo malih brojeva. Ovdje se koristi slovo e (ili E) za označavanje eksponenta. - Primjeri realnih konstanti u znanstvenoj notaciji: python Kopiraj kod x = 3e5 \# 3 \* 10\^5 = 300000.0 y = 3.e+5 \# 3.0 \* 10\^5 = 300000.0 z =.3e6 \# 0.3 \* 10\^6 = 300000.0 w = 30e4 \# 30 \* 10\^4 = 300000.0 **3. Heksadecimalne realne konstante (NE PODRŽANE U PYTHONU)** Python **ne podržava** heksadecimalne realne konstante s pomičnim zarezom, kao što je navedeno u vašem primjeru (0x1p3 ili 0X1P3). Heksadecimalni brojevi se u Pythonu mogu koristiti samo za cjelobrojne vrijednosti. U jezicima poput C, notacija poput 0x1p3 označava heksadecimalni broj u kombinaciji s eksponentom u bazi 2, ali Python nema ugrađenu podršku za ovu vrstu zapisa realnih brojeva. **4. Tip realnih konstanti: sve su float (ekvivalentno double)** U Pythonu, svi brojevi s pomičnim zarezom automatski se tretiraju kao tip float, što odgovara **dvostrukoj preciznosti** (eng. *double precision*) u drugim jezicima poput C ili C++. Primjer: python Kopiraj kod broj = 1.23 \# Ovaj broj je tipa \`float\`, što koristi dvostruku preciznost **5. Konstante jednostruke i četverostruke preciznosti (NE POSTOJI DODATNI TIP)** Python **ne podržava** eksplicitne sufikse F (za jednostruku preciznost) ili L (za četverostruku preciznost) kao što to rade jezici poput C ili C++. - U Pythonu **nema oznaka** za različite razine preciznosti (float, double, long double) jer Python koristi samo float za sve brojeve s pomičnim zarezom. - Pythonov tip float koristi **dvostruku preciznost** kao zadanu. **6. Praznine nisu dozvoljene unutar brojeva** Kao što je spomenuto u vašem pitanju, praznine **nisu dozvoljene** unutar brojeva, iza predznaka, između znamenki, niti između slova \'e\' (eksponenta). To vrijedi i u Pythonu. Praznine unutar brojeva izazvat će sintaksnu grešku. Primjeri koji **nisu ispravni**: python Kopiraj kod \# Ovi brojevi će izazvati pogrešku: x = 1. 23 \# Neispravno zbog razmaka y = 3 e 5 \# Neispravno zbog razmaka **Zaključak:** - **Realne konstante s decimalnom točkom** rade točno kako je opisano, uključujući podršku za predznake. - Python **podržava znanstvenu notaciju (E notacija)** s korištenjem e ili E za prikazivanje eksponenta. - **Heksadecimalne realne konstante** nisu podržane u Pythonu. - Python koristi tip float koji odgovara dvostrukoj preciznosti. **Nema eksplicitne podrške** za jednostruke (F) ili četverostruke (L) preciznosti. - **Praznine** unutar brojeva nisu dozvoljene i uzrokovat će sintaksne pogreške. Python pojednostavljuje rad s realnim brojevima u usporedbi s nekim drugim jezicima jer nema potrebe za sufiksima za različite tipove preciznosti. Operatori --------- Operatori su posebni simboli koji izvode određene operacije nad jednim ili više operanda (vrijednosti), a zatim vraćaju rezultat. ![](media/image4.png) Python ima sedam vrsta operatora koje možemo koristiti za izvođenje različitih operacija i stvaranje rezultata. 1. **Aritmetički operatori**: +, -, \*, /, //, %, \*\*. 2. **Relacijski operatori**: ==, !=, \>, \=, \ - **Višelinijski komentari**: Python nema /\* \... \*/ kao u jeziku C, ali se može koristiti višelinijski string (\'\'\' \... \'\'\' ili \"\"\" \... \"\"\") za dodavanje dokumentacijskih stringova (docstrings) unutar funkcija ili klasa. 7. Specijalne leksičke direktive -------------------------------- Python koristi \# za komentare i specijalne oznake. Neke specifične direktive uključuju: - **Shebang** (\#!/usr/bin/env python3) na početku datoteke, što omogućuje izvršavanje skripte kao izvršne datoteke u Unix sustavima. - **Kodiranje** (\# -\*- coding: utf-8 -\*-), ako se koristi nestandardna kodna stranica. - ∆irektive poput import i from \... import koriste se za uključivanje modula. - \_\_future\_\_ direktiva omogućuje kompatibilnost između različitih verzija Pythona. Python nema klasične preprocesorske direktive (\#define, \#include) kao C, jer je u Pythonu sve dinamički određeno tijekom izvođenja, a ne kompajliranja. **Dodatni napomene:** - Python koristi **dinamičko tipiziranje**, što znači da tip varijable ne moramo eksplicitno navoditi. - Python ima ugrađeni tip dict za rad s rječnicima, list za popise, set za skupove i tuple za nepromjenjive liste. Svaki program sadrži u sebi podatke koje obrađuje. Njih možemo podijeliti na nepromjenjive konstante, odnosno promjenjive varijable (varijable). Varijable su podaci koji općenito mogu mijenjati svoj iznos. Stoga se oni u izvornom kôdu predstavljaju ne svojim iznosom već simboličkom oznakom, imenom (identifikatorom) varijable. Svaki podatak ima dodijeljenu oznaku tipa, koja govori o tome kako se dotični podatak pohranjuje u memoriju računala, koji su njegovi dozvoljeni rasponi vrijednosti, kakve su operacije moguće s tim podatkom i sl. OSNOVNI TIPOVI PODATAKA U PYTHONU --------------------------------- Za razliku od jezika C, Python ima drugačiji sustav tipova podataka, jer koristi **dinamičku tipizaciju**. To znači da prilikom deklaracije varijable ne moramo eksplicitno navoditi njen tip. Python automatski dodjeljuje tip na temelju dodijeljene vrijednosti. U nastavku su osnovni tipovi podataka u Pythonu, zajedno s usporedbom s C-jeziku. **1. Brojčani tipovi (Numerical Types)** Python ima nekoliko osnovnih tipova podataka koji pokrivaju numeričke vrijednosti: - **Cjelobrojni (Integer)** - U Pythonu, cjelobrojni tip (int) pokriva sve cijele brojeve bez ograničenja veličine, osim ograničenja memorijom. To je ekvivalentno tipu int, long, i unsigned long long iz jezika C, no Python automatski prelazi na veći raspon kad je to potrebno. - Npr., x = 10 će definirati cjelobrojnu varijablu. - **Realni (Floating Point)** - Python koristi tip float za pohranjivanje brojeva s pokretnim zarezom (ekvivalentno tipu float i double u C-u). - U Pythonu, float koristi dvostruku preciznost (64-bitni format) kao double u C-u. - Npr., y = 3.14 će definirati varijablu tipa float. - **Kompleksni brojevi (Complex Numbers)** - Python podržava kompleksne brojeve koristeći tip complex, koji ima realni i imaginarni dio (ekvivalent C tipovima float \_Complex, double \_Complex). - Kompleksni broj se piše kao a + bj, gdje je j imaginarna jedinica (u C-u je to simbol i). - Npr., z = 2 + 3j. **2. Logički tip (Boolean)** - Python koristi tip bool koji može imati vrijednosti True ili False. Ovaj tip je uveden slično kao \_Bool u C99. - U Pythonu, bilo koji broj različit od nule interpretira se kao True, a nula kao False, slično C-jeziku. - Npr., is\_valid = True. **3. Znakovni tip (Character/String)** - Python nema poseban znakovni tip kao char u C-u. Umjesto toga, koristi **stringove** (tip str) koji mogu sadržavati jedan ili više znakova. - U Pythonu, stringovi su **nepromjenjivi** (immutable) i mogu se pisati unutar jednostrukih ili dvostrukih navodnika (\'tekst\' ili \"tekst\"). - Npr., name = \"Python\". **4. Tip bez vrijednosti (NoneType)** - Python koristi tip NoneType s ključnom riječju None za varijable koje nemaju vrijednost, što je ekvivalent tipu void u C-u. - None se koristi za označavanje odsutnosti vrijednosti ili praznih objekata. - Npr., x = None. **5. Lista, Tuple, Skup i Rječnik** Osim osnovnih tipova podataka, Python također ima složenije strukture podataka koje nemaju ekvivalentne tipove u C-u: - **List (Lista)**: Promjenjiva kolekcija elemenata bilo kojeg tipa, ekvivalentna dinamičkom nizu u C-u. Definira se pomoću uglatih zagrada: my\_list = \[1, 2, 3\]. - **Tuple**: Neizmjenjiva kolekcija elemenata, slična C-jevom nizu konstantnih vrijednosti. Definira se pomoću zagrada: my\_tuple = (1, 2, 3). - **Set (Skup)**: Neuređena kolekcija jedinstvenih elemenata, definirana pomoću vitičastih zagrada: my\_set = {1, 2, 3}. - **Dictionary (Rječnik)**: Neuređena kolekcija parova ključ-vrijednost, slično kao hash-mape u C-u: my\_dict = {\"key\": \"value\"}. **6. Modifikatori tipova podataka** Python ne podržava modifikatore tipova kao u C-u (npr., signed, unsigned, long, short). Tipovi u Pythonu automatski pokrivaju cijeli raspon vrijednosti bez potrebe za dodatnim modifikatorima. **7. Brojevi s pokretnim zarezom i beskonačnost** - Python podržava beskonačne vrijednosti i \"Not a Number\" (NAN) kroz biblioteku math i float. Na primjer, float(\'inf\') predstavlja beskonačnost, dok float(\'nan\') predstavlja nebrojivu vrijednost. - Python implementira matematičke operacije s beskonačnim vrijednostima slično kao u C-u (+INFINITY, -INFINITY). **8. Korištenje type() funkcije** - U Pythonu možemo koristiti funkciju type() za provjeru tipa podataka: - Npr., type(5) vraća \\>\> float(10.0-9.2) 0.800000000000000\*7\* even doing 10.0-9.2 gave the above result. Why is the extra 7 coming in the result? Floating point arithmetic has built-in problems as it\'s based on a binary approximation of numbers. There is [[a good explanation of this]](http://docs.python.org/tutorial/floatingpoint.html) in the Python docs. You can check out [[the decimal module]](http://docs.python.org/library/decimal.html) if you need more exact answers. You can use round() for example: print(round(10 - 9.2, 2)) https://docs.python.org/3/tutorial/floatingpoint.html Python Data Types -- PYnative ![Python Data Types](media/image6.png)

Use Quizgecko on...
Browser
Browser