Friday, April 14, 2023

Savladajte temelje Python programiranja, korišćenje promenjivi, različitih osnovnih tipova podataka i zašto morate da simulirate konstante?

Prva stvar kod Python programskog jezika koju ćete primetiti, jeste da se on razlikuje od drugih programski jezika po svojoj jednostavnosti. Trebate imati na umu da je Python programski jezik nastao više iz potrebe da se na brzinu iskodira neko rešenje kad imate neki programerski ili matematički izazov. Iz njega je bukvalno izbačeno sve što se smatralo suvišnim u programskim jezicima poput pisanja vitičastih zagrada. Zatim su se dodavale neke stvari koje imaju drugi programski jezici. Ako na primer poredimo Python programski jezik sa C# programskim jezikom, prvo što će te pomisliti da on ima manje tipova podataka, nego C# programski jezik, i to osnovnih. Druga bitna razlika programskog jezika Python jeste u tome što on nije strogo tipiziran programski jezik, već se smatra dinamički tipiziranim programskim jezikom. To znači da ne morate deklarisati tipove podataka promenjivih prilikom njihovog definisanja, već interpreter Python programskog jezika sam određuje tip podataka nekoj promenjivoj na temelju vrednosti koju im pridružujete. Isto tako u Python programskom jeziku možete promeniti tip promenjive tokom izvršavanja programa. Ako nemate iskustva sa programiranjem, možete se pitati, šta su promenjive? Promenjive možete zamisliti kao male memorijske kutije različitih veličina u koje možete stavljati samo jednu vrstu podataka. Na primer, ne možete staviti slova u kutiju namenjenu za cele brojeve. Međutim, cele brojeve možete staviti u kutiju za slova, ali ti brojevi neće biti više brojevi, već će se tretirati kao niz karaktera, kao što se tretiraju slova. Jednostavno, promenjive u svakom programskom jeziku rezervišu prostor i čuvaju vrednosti u memoriji računara. Kada kreirate promenjivu i dodelite joj neku vrednost, vi zapravo rezervišete slobodan prostor u memoriji računara. Ta promenjiva i njena vrednost ostaje u memoriji dok god vaš program radi. Kada zatvorite program, promenjiva se briše. Da biste trajno sačuvali neku vrednost, morate je zapisati u datoteku ili bazu podataka i koristiti promenjive za prenos te vrednosti. U svakom programskom jeziku postoje različiti tipovi podataka namenjeni različitim vrednostima, pa tako i u Python programskom jeziku.



( U Python programskom jeziku tipovi podataka su dinamično tipizirani )

Python programskom jeziku objekt je također osnovna jedinica podataka kao i u C# programskom jeziku. Python programski jezik je kao i C# programski jezik objektno orijentirani programski jezik, što znači da se sve vrednosti tretiraju kao objekti. U zavisnosti od vrste podataka koje koristite, koristiti ćete odgovarajući tip promenjive. Trenutno vam je važno naučiti koje su to vrste podataka, koji tipovi podataka vam stoje na raspolaganju i kako se koriste u Python programskom jeziku na najbolji mogući način. Zato ćemo se samo na to i koncentrisati. Pa pogledajmo osnovne tipove u Python programskom jeziku:

  • bool - boolean tip se koristi za podatke čija vrednost može biti samo True ili False
  • int – integer – koristi se za celobrojni numerički tip podataka
  • float – numerički tip podataka je namenjen brojevima sa pokretnim zarezom
  • complex – kompleksan tip podataka koji se koristi sa različitim matematičkim funkcijama
  • str – string tip se koristi za podatke koji su ispisani slovima i drugim karakterima
  • list – tip podataka list koji može sadržavati različite tipove podataka u istoj listi
  • tuple – tip podataka sličan list tipu podataka, ali se podaci mogu samo čitati  
  • dictionary – tip podataka rečnik je neka vrsta hash table korisna za key-value pairs podatke

Šta? Gde gde su tipovi podataka char, long, decimal itd.? 

O tome ćemo kasnije! Sad je bitno da se koncentrišete na ove osnovne tipove podataka. Kao što znate, šta god da učite i da radite, posebno u programiranju, najbitnija je praksa. Dok budete kodirali, shvatićete da sve što smo rekli kroz praksu je jednostavno. Zato, prvo pokrenite PyCharm ili neki vaš IDE – programersko okruženje, koje koristite. Otvorite python_tutorial projekat, koji smo kreirali u prošlom postu, pogledajte ovde; ili kreirajte novi python_tutorial projekat, tako što ćete nazvati direktorijum istim nazivom. Kreirajte datoteku variables.py i prekucajte sledeći kôd.

"""

BASIC DATA TYPES, VARIABLES AND CONSTANTS
MANUEL RADOVANOVIC - 2023-04-14
"""

import sys
from decimal import Decimal

print()
print("\t\tBASIC DATA TYPES IN PYTHON PROGRAMMING LANGUAGE\n")
print()

# bool
print("bool")
print("min value:", False)
print("max value:", True)
print(type(True))
print()

# int
print("int")
print("min value:", -sys.maxsize -1)
print("max value:", sys.maxsize)
print(type(0))
print()

# float
print("float")
print("min value:", -sys.float_info.max)
print("max value:", sys.float_info.max)
print(type(0))
print()

# decimal
print("decimal")
print("min value:", Decimal('-Infinity'))
print("max value:", Decimal('Infinity'))
print(type(Decimal()))
print()


# complex
print("complex")
print("min value:", complex(-sys.float_info.max, -sys.float_info.max))
print("max value:", complex(sys.float_info.max, sys.float_info.max))
print(type(0+0j))
print()

# str
print("str")
print("min value: empty string.")
print(
"max value: Python does not have a fixed, limited length for strings, "
      "so in theory, a string can be of infinite length.
However, in practice, "
      "memory and performance constraints on the computer determine the actual "
      "limit"
)
print(type(""))
print()

# list
print("list")
print("min value: ", [])
print("max value: Python does not have a fixed, limited length for lists, "
      "so in theory, a list can be of infinite length. However, in practice, "
      "memory and performance constraints on the computer determine the actual "
      "limit"
)
print(type([]))
print()

# tuple
print("tuple")
print("min value: ", ())
print("max value: Python does not have a fixed, limited length for tuples, "
      "so in theory, a tuple can be of infinite length. However, in practice, "
      "memory and performance constraints on the computer determine the actual "
      "limit"
)
print(type(()))
print()

# dictionary
print("dictionary")
print("min value: ", {})
print("max value: Python does not have a fixed, limited length for dictionaries, "
      "so in theory, a dictionary can be of infinite length. However, in practice, "
      "memory and performance constraints on the computer determine the actual "
      "limit"
)
print(type({}))
print()

print('-' * 30)
print()

# constants
print("The Python programming language has no constants, only variables!")
print("All you need to do is use a variable instead of a constants, "
      "but name it in uppercase to distinguish it from variables in the code!"
)

Kad izvršite program dobićete sledeći rezultat:

D:\python_tutorial\Scripts\python.exe D:\python_tutorial\variables.py

 

                                BASIC DATA TYPES IN PYTHON PROGRAMMING LANGUAGE

 

 

bool

min value: False

max value: True

<class 'bool'>

 

int

min value: -9223372036854775808

max value: 9223372036854775807

<class 'int'>

 

float

min value: -1.7976931348623157e+308

max value: 1.7976931348623157e+308

<class 'int'>

 

decimal

min value: -Infinity

max value: Infinity

<class 'decimal.Decimal'>

 

complex

min value: (-1.7976931348623157e+308-1.7976931348623157e+308j)

max value: (1.7976931348623157e+308+1.7976931348623157e+308j)

<class 'complex'>

 

str

min value: empty string.

max value: Python does not have a fixed, limited length for strings, so in theory, a string can be of infinite length. However, in practice, memory and performance constraints on the computer determine the actual limit

<class 'str'>

 

list

min value:  []

max value: Python does not have a fixed, limited length for lists, so in theory, a list can be of infinite length. However, in practice, memory and performance constraints on the computer determine the actual limit

<class 'list'>

 

tuple

min value:  ()

max value: Python does not have a fixed, limited length for tuples, so in theory, a tuple can be of infinite length. However, in practice, memory and performance constraints on the computer determine the actual limit

<class 'tuple'>

 

dictionary

min value:  {}

max value: Python does not have a fixed, limited length for dictionaries, so in theory, a dictionary can be of infinite length. However, in practice, memory and performance constraints on the computer determine the actual limit

<class 'dict'>

 

------------------------------

 

The Python programming language has no constants, only variables!

All you need to do is use a variable instead of a constants, but name it in uppercase to distinguish it from variables in the code!

 

Process finished with exit code 0

U rezultatima izvršenog koda, obratite pažnju, kakve vrednosti ste dobili od osnovnih tipova podataka. Maksimalne i minimalne vrednosti tipova podataka uglavnom zavise od računara ili uređaja kog koristite.

bool

Kao što možete videti u kôdu, prvi osnovni tip u Python programskom jeziku je bool. On može da bude True ili False. On ne može da bude true ili false. Python programski jezik je case-sensitive, tj. razlikuje mala i velika slova. Vi možete konvertovati broj 1 ili 0 u tip podataka bool da se on pretvori u True ili False, ali brojevi 1 i 0 nisu tipa bool, niti zamena za True ili False.

int

Integer tip podataka je tip podataka namenjen za pozitivne i negativne celobrojne vrednosti jednostavno nema ograničenja i može biti proizvoljne dužine. Ono što njega ograničava jeste samo kakav vi uređaj koristite i sa koliko memorije. Zbog toga Python programski jezik nema tip podataka long od Python 3.x verzije. Jednostavno ga je ukinuo. Ako trebate long tip podataka, jednostavno koristite integer tip podataka. Tipu integer možete dodeliti i vrednosti u binarnom, oktanom i heksadecimalnom obliku. Isto tako možete koristiti donje crtice _ prilikom dodeljivanja brojeva. Npr. 

b = 1_000_000
print(b) 
# result 1000000

float

Tip podataka float se koristi za brojeve sa pokretnim zarezom. Međutim, za neke proračune sa float tipom podataka morate biti oprezni, jer npr. za float tip podataka vrednost 2.55 * 100 nije 255, već približno. Isto tako 0.1 + 0.2 nisu 0.3 već približno, što može biti pogrešno za neke proračune. Zato dobro obratite pažnju i oprez kad koristite float tip podataka.

decimal

Da bi ste koristili ovaj tip podataka, morate ga importovati u vašu *.py datoteku.

from decimal import Decimal

Ono što važi za tip podataka float, to isto važi i za decimal, samo što je tip decimal podataka za nijansu precizniji jer koristi više cifara.

complex

Što se tiče, complex tipa podataka, on je rezervisan za matematičke proračune. Vizualno kompleksni broj može biti predstavljen kao par brojeva, gde prvi broj predstavlja realni deo, a drugi imaginarni deo kompleksnog broja. Za tu svrhu koristimo comlex tip podataka. Vizualno kompleksni broj može biti predstavljen kao par brojeva koji formiraju vektor na dijagramu, kojeg matematičari nazivaju Argandov  dijagram čime se predstavlja kompleksna ravan. U C# programskom jeziku postoji tip podataka Complex koji možete koristiti ako koristite imenski prostor System.Numerics gde su ulazni argumenti dve vrednosti tipa double, dok u Python programskom jeziku complex tip podataka ne morate da importujete jer spada u osnovne Python tipove podataka. Takođe, Python ima mnoštvo funkcija i biblioteka koje olakšavaju matematičke obračune.


( Primer korišćenja complex tipa podataka u Python programskom jeziku )

str

U Python programskom jeziku, string tip podataka se podrazumevano koristi za čuvanje tekstualnih podataka i može sadržati jedan ili više karaktera. Sa njim možete koristiti mnogobrojne metode koje će vam olakšati manipulaciju tekstom. String može da koristi i jednostruke i dvostruke navodnike, ali moja preporuka je da koristite dvostruke. U Python programskom jeziku nemate char tip podataka. Umesto njega koristite string tip podataka, ali u tom slučaju koristite jednostruke navodnike. Da bi ste dobili ASCII karakter i obratno, za tu svrhu postoje funkcije chr() i ord(). String tip je određen broje, karaktera jedino vašom memorijom računara, inače možete staviti čitavu knjigu u string promenjivu.  

list

U Python programskom jeziku, list tip podataka predstavlja kolekciju podataka koja omogućava skladištenje više elemenata različitih tipova podataka, kao što su brojevi, stringovi, boolean vrednosti, druge liste itd. Listu možemo definisati navođenjem elemenata liste, koji su odvojeni zarezima, između uglastih zagrada. Tip podataka list se može menjati dodavanjem ili uklanjanjem elemenata. Može se pristupiti elementima liste pomoću njihovih indeksa, koji počinju od 0 za prvi element u listi. Koristi se kada treba da čuvate elemente koji su povezani ili kada je potrebno dinamički dodavati i uklanjati elemente. Listu možete koristiti i kao privremeno skladište za obradu podataka. Lista, takođe ima mnogo ugrađenih metoda koje se mogu koristiti za manipulaciju sa elementima liste.

tuple

Tip podataka tuple je tip podataka koji predstavlja uređenu kolekciju elemenata različitih tipova podataka, slično kao list. Uređenost znači da su elementi tuple-a fiksno uređeni i ne mogu se dodavati, uklanjati ili menjati nakon što su definisani. Tip podataka tuple se definiše navođenjem elemenata odvojenih zarezima, između običnih zagrada. Koristi za čuvanje i prenošenje fiksnog broja elemenata podataka koji su povezani ili zaštićeni od slučajne izmene. Neki od primera korišćenja tuple-a su čuvanje koordinata tačaka u ravni ili prostoru, čuvanje podataka o datumima, imenima i prezimenima, ili bilo kojim drugim sličnim strukturama podataka koje se ne menjaju.

Python programskom jeziku postoje i drugi tipovi podataka koji ne spadaju u osnovne tipove, sa kojima ćete se upoznati u budućim postovima, prilikom korišćenja istih u našem tutorijalu. Svaki od njih ima svoju namenu i koristi se u specifičnim situacijama. Python programski jezik takođe uvodi nove tipove podataka u novijim i budućim verzijama Python programskog jezika. Pogledajte one koje su nam do sada poznati.

  • bytes – tip podataka koji predstavlja neizmenjiv niz bajtova. Definišu se pomoću prefiksa b.
  • bytearrays – tip podataka koji predstavlja promenjiv niz bajtova. Definiše se pomoću funkcije bytearray().
  • sets – tip podataka koji predstavlja neuređenu kolekciju jedinstvenih elemenata. U njemu nema duplikata.
  • freezenset -  tip podataka koji predstavlja neuređenu kolekciju jedinstvenih elemenata koji se ne mogu menjati.
  • range – tip podataka koji predstavlja niz brojeva. Definiše se pomoću funkcije range()
  • memoryview – tip podataka koji predstavlja memorijski pregled objekta. Definiše se pomoću funkcije memoryview()
  • enumerate – tip podataka koji se koristi za prolazak kroz kolekciju i pristupanje elementima i njihovim indeksima. Definiše se pomoću funkcije enumerate()
  • itd.

Šta je sa konstantama u Python programskom jeziku?

Python programskom jeziku ne postoji poseban tip podataka za konstante, već se one često definišu kao promenljive koje se ne menjaju u programu. Konvencija u Python programskom jeziku je da se konstante pišu velikim slovima, kako bi se razlikovale od promenljivih. To je pre svega korisno za druge developere koji čitaju vaš kôd, ali isto i za vas, da znate razliku.

BRZINA_SVETLOSTI = 299792458  # m/s

 

 

 

  

  

 

 

 

 

 

2 comments:

  1. Kod primera za float tip podataka greškom ste upotrebili trivijalni int literal umesto trivijalnog float literala (celobrojnu nulu (0) umesto realen nule (0.0)). Vitičaste zagrade nisu u Python-u potpuno izbačene, ali se ne koriste za pisanje sekvence kao u jezicima koji su bazirani na C sintaksi (C, C++, Java, ...). U naslovu koristite termin varijabla, a u ostatku članka promenljiva.
    Ako se izuzmu sitne terminološke nepreciznosti odličan članak.

    ReplyDelete
  2. Hvala, dvoje ljudi bolje vidi nego jedan. Ispravljeno!

    ReplyDelete