![]() |
Ne bih ti znao pomoci, tek sam na pocetku prvog predavanja one gospodjice iz prvog posta.
|
Simple:
computepay je funkcija koja prima dva argumenta (h i r) odnosno ante i mate ili kako god hoćeš ih možeš nazvati. Kada se program izvršava, najprije se izvršava try pa se zatim poziva computepay funkcija čiji se rezultat sprema u varijablu pay te sa print pay ispisiva taj rezultat. Ukratko, kada poziva funkciju predaje argumente hours i rate koji su neka realna brojčana vrijednost. Ti argumenti se pri pozivu funkcije kopiraju u varijable h i r (moglo ih se isto nazvati hours i rate ali vjerojatno namjerno nije kako ne bi mislio da radiš direktno sa donjim varijablama već njihovim kopijama). Ovisno o tome je li h <= 40 rade se zadane operacije a rezultat se sprema u varijablu p. Tu varijablu, odnosno njenu vrijednost moramo zapamtiti prilikom izvršenja funkcije. Za taj dio je zaslužan return p koji kod poziva pay = computepay(hours, rate) ima ulogu da u varijablu pay spremi vrijednost varijable p iz funkcije. Nadam se da nisam zakompliciro s odgovorom :D to bi izgledalo ovako na primjeru: ukoliko za Enter hours unesemo 5.5 a za Enter rate unesemo 3.5 onda pozivamo funkciju computepay koja bi izgledala computepay(5.5, 3.5). Ulaskom u funkciju varijabla h iznosi 5.5 a varijabla r 3.5. Iizvršava se if uvjet jer h nije veći od 40 pa je rezultat 19.25 i taj rezultat se sprema u varijablu p. Else dio se preskače i funkcija vraća vrijednost 19.25 te se ta vrijednost sprema u varijablu pay jer smo tako rekli pri pozivu funkcije (pay = computepay(...)). Kada isprintamo varijablu p (print p) vidit ćemo da je rezultat 19.25. |
Citiraj:
|
Predzadnji red, kad poziva funkciju compute, prenosi parametre hours i rate a u prvom redu ih ta funkcija kopira u h i r. U predzadnjem redu ti ito tako pise pay=... A vracas p, ona vrijedbost koju vracas ce se spremiti u pay.
|
Citiraj:
Dakle ako ti imaš varijablu imena Neo-ST koju šalješ funkciji, nije uopće bitno kako će se ona u funkciji zvati. Može se zvati isto Neo-ST a može Bullet, Pero a, z, žnj itd. funkcija ima oblik: funkcija (a, b) { ...tijelo funkcije... } a u main programu ti tu funkciju pozivaš funkcija(Neo-ST, Bullet) gdje argumenti koje predaješ odgovaraju tipu varijable koja funkcija prima. Neznam kako bi ti pobliže objasnio od ovako: Dakle, computepay gledaj kao funkciju i nema apsolutno nikakve veze što je ona napisana prije try. Try se nalazi u main dijelu programa i služi kako bi ti dao vrijednost nekoj varijabli. Imaš jabuku i trebaš joj dati vrijednost da znaš koliko ona košta. Ako si definirao da jabuka košta 2kn možeš ju zapisati kao jabuka = 2. S druge strane imaš krušku koja košta 3kn i definiraš varijablu kruška = 3. Sada imaš dvije opcije za izračun koliko jedna jabuka i jedna kruška skupa koštaju. Prva opcija je da u main programu samo nastaviš pisati nešto poput: suma = jabuka + kruška ; što znači da je suma = 2 + 3 odnosno suma = 5; ili napraviš funkciju koja se zove suma te prima parametre artikl1 i artikl2. Takav zapis funkcije izgleda suma(artikl1, artikl2). Ti od te funkcije tražiš da ti napravi sumu dvaju artikala i da ti vrati rezultat. Nebitno je jesu li u pitanju kruške i jabuke ili šljive i smokve, ista je matematika. Dakle, definirao si u glavnom programu da je: jabuka = 2; kruška = 3; i sada želiš primjeniti funkciju koja će zbrojiti vrijednosti krušaka i jabuka. To ćeš napraviti jednostavnim pozivom funkcije suma(jabuka, kruška) i spremit ćeš povratnu vrijednost u neku varijablu kako bi tu sumu mogao koristiti dalje u programu ili ju samo ispisati. Da ne filozofiram dalje, napisat ću ti jednostavniji primjer od toga što imaš zadano pa možda shvatiš. Code:
//ovo je funkcija koju pozivaš iz main programaJabuka se preslikala u artikl1 Kruška se preslikala u artikl2 Šljiva se preslikala u artikl1 Smokva se preslikala u artikl2 Trošak1 se preslikao u artikl1 Trošak2 se preslikao u artikl2 Već su neke ure i neznam kako da ti bolje objasnim, sorry... |
Ako sam dobro shvatio, funkcija je zadana sa svojim varijablama. Kad definiramo sumu, unutar sume su elementi funkcije i nije bitno sto napisemo jer kad napisemo tu funkciju program zna o kojoj je funkciji rijec i automatski za artikl1 stavlja jabuku, za artikl2 stavlja krusku...odnosno u primjeru sa slike za hours stavlja h a za rate r
Jesam dobro shvatio? |
Tako je. Ono što funkcija radi je definirano u tijelu funkcije, a s kojim vrijednostima će to nešto raditi zadaje se pomoću argumenata. Tijelo funkcije je sve ono što ide ispod def ime_funkcije(arg1, arg2, arg3), pri čemu su arg1, arg2 i arg3 argumenti.
Osim toga što se "razbijanjem" koda na funkcije dobiva na čitljivosti te lakšem pronalaženju i popravljanju grešaka, jedna od glavnih svrha njihovog korištenja je tzv. reusability, tj. ista funkcija može se koristiti u različitim programima i za potpuno različite stvari. Bullet1 je naveo kao primjer funkciju suma i s njom je zbrajao cijene voća. Ista ta funkcija može se kasnije u nekom drugom programu koristiti npr. za zbrajanje kilometara od Zagreba do Rijeke i od Rijeke do Splita. Naravno, ako će je se koristiti za zbrajanje kilometara, bilo bi primjerenije da se artikl1 i artikl2 preimenuju u nešto poput kilometri1 i kilometri2 jer bi bilo lakše za razumijeti u okviru tog programa, pa bi to izgledalo ovako: Code:
def suma(kilometri1, kilometri2):Code:
def suma(artikl1, artikl2): |
Kad se dobro objasni, izgleda vrlo jednostavno :)
|
Kad sam se već dotaknuo lakšeg modificiranja programa i debugginga dat ću još jedan primjer zašto treba koristiti funkcije. Kad sam se prvi put u susreo s programiranjem, korištenje funkcija (i klasa) mi se činilo sasvim bezveze i razmišljao sam u stilu: Ma to je za pi***, ja cijeli kod napišem u komadu i ako je krajnji rezultat točan, onda sam miran, no vrlo brzo sam shvatio da je taj način razmišljanja kriv.
Primjer: Web shop koji prodaje računalne komponente daje 10% popusta za gotovinsko plaćanje. Kod koji određuje cijenu koju će kupac platiti izgleda ovako: Code:
def konacna_cijena(cijena_komponente, nacin_placanja):Kada bi kod bio napisan tako da se za svaku komponentu konačna cijena računa zasebno kao što je to dano u primjeru ispod, tada bi promjena iz 10 u 9% zahtijevala malo više vremena, a mogućnost da se nešto propusti promijeniti ili napravi krivo je daleko veća. Code:
def cijena_procesora(cijena_cpu, nacin_placanja):Doduše, programe koji imaju veze s poslovanjem trgovine bilo bi bolje pisati objektno orijentirano, ali sada smo na funkcijama, pa sam onda korištenje klasa izostavio. |
ups. nevidjeh čitavu drugu stranu teme..
|
Znači mene je bunilo kako on zna da se hours mora kopirat u h, a rate u r.
Odgovor je: bitan je redoslijed unosa ? Znači ako imam: Code:
def suma(artikl1, artikl2):To mi se čini malo nezgrapno, šta kad programi postanu kompleksni, ko će više povezati gdje se koja vrijednost kopira :D |
Sve mi se pomješalo sad u ovoj temi.. :D
Da redosljed je bitan. |
Citiraj:
|
A koliko je teško/jednostavno kod prebaciti u .exe da bi se mogao izvršavati na drugom računalu?
|
Citiraj:
Citiraj:
|
Citiraj:
|
Citiraj:
Ako je svrha prebacivanja u .exe npr. samo da bi prijatelju pokazao da si napravio program koji nešto radi, onda je brže da i on instalira Python te kasnije ga makne s računala ako mu ne treba, nego da se ti boriš s tim. |
pyinstaller šljaka vrlo lako
|
Citiraj:
Nazivi parametara kod deklaracije funkcije nemaju nikakve veze s nazivima parametara kod pozivanja funkcije. :) EDIT: Omg, opet nisam vidio paginaciju na dnu. :D |
Citiraj:
Ono što meni smeta kod programskih jezika što većina tih programskih jezika ima nevjerovatno loše popisane programske naredbe u knjigama (bar one osnovne...) i objašnjene. Ljudi kreću od prvih primjera , a da praktički ne znaju šta kucaju i puno više vremena onda moraju provesti za kompom. Laički npr. to Vam je koda učite engleski, francuski, ruski , a da nemate niti jednog objašnjenja šta koja riječ znači, o gramatici bolje ni ne pričati... :D Probati ću u dogledno vrijeme za C++ (imam želju da ljudima to približim , jer ja sam se puno pitao šta i kako i sam otkrivao toplu vodu :) ...) sastaviti na hrvatskom neku tablicu sa objašnjenjima šta i koja naredba radi i kada ju je bolje koristiti , a volio bi da netko uradi i sa ovim Pythoon programskim jezikom, jer bez "rječnika" jako je teško brže učiti... |
Citiraj:
https://docs.python.org/2/reference/ Sve je vrlo jasno i precizno opisano, kao i u vecini programskih jezika. Sto tebi tocno fali? |
Da li neko zna da mi pojasni razliku izmedju GET i POST zahteva kad se koji koristi i konkretne jednostavnije primere da navede? Hvala
|
|
Ovakav uvod u neki programski jezik još nisam vidio :)
|
Instrukcije iz Pytona
Daje li netko instrukcije iz Pytona?
pero.juric at gmajl |
Citiraj:
Tu su neki jos 2009 proglasavali Python "mrtvim, a ja kazem da ovom portalu treba vise ljudi koji znaju raditi u Pythonu. Zasto? https://pcchip.hr/softver/korisni/5-...rebao-nauciti/ https://www.tportal.hr/tehno/clanak/...posla-20170508 |
Citiraj:
Evo, ja bi htio početi učiti python, pun mi je k ekonomske struke, poslova 8-4, nemogucnosti rada od doma i rada sa ljudima od 70 godina. :D Odakle početi? Imam dnevno za odvojiti 3-4 sata, planiram kroz godinu dana napustiti struku, mislite da bi to bilo dosta? Koliko znam, najbolje je proci osnove kroz par tečajeva i baciti se u projekte, imam doma knjigu Python cookbook pa sam s time mislio kombinirati. |
Godinu dana ti nije dosta za pocet zaradjivati. Pogotovo ako mislis uciti uz posao. Osim ako kompletno zanemaris drustveni zivot ali i to bi moglo biti pre-malo vremena.
To jedino mozes ako si dobar salesman uz WordPress, ali to je vise nalik radu u Wordu/Excelu nego programiranje. Trebati ce ti barem dvije, realno bi rekao tri, godine. Mozda pokusati naci neku firmu koja trazi pocetnike ali tu ce biti potrebno pokazati entuzijazam. Ako si mozes priustiti, uplati si neki tecaj. To ce te natjerati nakon radnog dana da i dalje ucis. Steci ces i neka poznanstva, a i preskakanje cjelina (koje ce te kasnije kostati) ce biti minimalizirano. Ali bez konstantnog samostalnog rada (i uz najbolji tecaj) zaboravi tu pricu. S druge strane, programiranje je jedan posao gdje sati vrlo lako prolete pa ako ti je dosta ljudi moze biti zgodan bijeg. Ali racunaj par godina ozbiljnog rada prije nego postane isplativo. Isplati se svakako, samo vidi jel imas ili mozes naci tu disciplinu u sebi. Za Phyton stvarno ne znam. Mozda radje JAVAu, ili PHP ako bi radio web. Ali opet, na pocetku ce ti to sve biti vise manje isto dok ne pohvatas osnove. Samo nabavi najnoviju reviziju knjige. Iako, cini se da je Python puno popularniji nego sam mislio: https://stackify.com/popular-program...anguages-2018/ |
Sličnog sam razmišljanja i struke kao kolega nhooyd
radio sam u banci dobrih 5 godine zgorio , računala volim od malih,ranih nogu bavio se računalnim servisom. Prešao prije 2 godine u informatičku firmu koja se bavi tehničkom službom, support , održavanje servera i sl. znao sam 10% onoga što traže. Lova nije bila velika neki odustali i nekako sam se zaposlio. Trebalo mi je skoro 2 godine da pohvatam servere, dhcp, dns, GP i sl. jer to nisam nikad prije radio.Tako da može se samo treba učiti učiti učiti nije lako još doma imam klince tako da sam gledao tečajeve od 22h do 1h ujutro skoro svaki dan na miru. Sad prelazim na programiranje i krećem od Phytona, učim ga eto mjesec dana počeo sam kužiti možda 2% svega ali ne dam se obeshrabiti jer je uvijek ono "wtf zašto je to tu i čemu to služi, tko će naučiti sve to ......" Našao sam tonu tečajeva on line, youtube, torrenti, udemy i sl. samo nisu svi kvalitetni izgubiš dosta i vremena tražeći šta valja jbg. Računam da će mi trebati 2 god. da počnem kužiti svrhu svega. kolega hash je spomenuo "kvalitetne tečajeve" šta preporučuješ ? |
Citiraj:
Hvala na odgovoru, gledam si baš benefite odjebavanja zivota preko tjedna (vikendom sigurno imam 5-6 sati za odvojit za sve). Ili malo zaglaviti par godina ili do kraja zivota trpat se po firmama, računovodstvima, radit od 8 do 4 etc etc, ja se evo, nakon godinu dana zelim objesit lagano pa ozbiljno razmisljam da promjenim karijeru. Iako sam isto razmisljao o raznim tecajevima za mreze i slicno, nisam se jos udlucio, gledam samo kako bi se makao što brze od ovog svega (iako sam ja mozda malo "zaluđen" koliko imam poznanika po IT firmama jer sam strasno zavidan kada cujem da netko radi od doma, da ima te fun evente na poslu i ne radi sa ljudima od 50 godina - imam 27). Nista, vrijeme da odem na udemy i otvorim tecaj konacno. :D |
| Sva vremena su GMT +2. Sada je 02:40. |
Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
© 1999-2024 PC Ekspert - Sva prava pridržana ISSN 1334-2940
Ad Management by RedTyger