• Offtopic
  • Web Development rasprave/preporuke/problemi

Tzereen Imaš dokaz i ispod. Ne moram se ni svaditi. 😄

foggy Ma ovo je užasno. Doslovno je aplikacija dohvat liste i pregled detalja, ništa više. I ubije sve jer... Ne znam ni sam. Valjda ga emulator dokrajči. Skroz me raspizdilo.

5 mjeseci kasnije

Pozdrav ljudi, molio bi pomoć.

Dakle radi se o programskom jeziku pythonu, ako mi netko može pomoći riješiti zadatak, inaće, riješit ga mogu i sam, ali volio bi dobiti obrazloženje cijelog code-a koji je napisan, pa eto ako netko ima vremena da mi pomogne.

Radi se o sljedećem, u napisanom codeu ispod, potrebno je promjeniti code tako da se preskoče parni brojevi, a logika isključivo primjeni na neparne brojeve, također se mora iskoristiti izjava "continue" kako bi se preskočilo ponavljanje petlje.

n = int(input())

for x in range(1, n):
     if x % 3 == 0 and x % 5 == 0:
          print("SoloLearn")

     elif x % 3 == 0:
         print("Solo")
     elif x % 5 == 0:
         print("Learn")
     else:
         print(x)

Ne znam kako ga code prikazem preglednije od ovoga (kao sto sam vidio ranije u nekim postovima), koristim SoloLearn za sada i malo sam se pogubio kad su pocele naredbe "for" "in" "range" i znakovi poput "%" sto nisam uspio pohvatati. Pa eto ako ima dobra dusa za jednog nooba da objasni.

    Nightyx

    Program koji je napisan uzima unesene brojeve i prolazi kroz njih. U slučaju da je broj djeljiv sa 3 i 5 ospisuje Sololearn, u slučaju da je samo sa 3 ispisuje Solo, samo sa 5 ispisuje Learn, a ako nije ništa od toga ispisuje sam broj.

    operator % znači modulo, odnosno ostatak djeljenja, broj je djeljiv sa nekim brojem ako je njegov modulo == 0. Da bi provjerio da li je broj paran moraš provjerit da li je taj broj % 2 == 0 odnosno da li je djeljiv sa 2. Naredba continue preskače trenutni krug petlje i nastavlja sa sljedećim. Tvoj cilj je provjerit da li je broj djeljiv sa 2 na početku petlje i preskočit obradu tog kruga ako je odnosno:

    if x % 2 == 0:  " ako je broj djeljiv sa dva"
         continue "preskoči ovaj krug petlje i nastavi sa sljedećim"

    Ne zanam da li sam baš najjasnije objasnio i da li trebaš još detalja.

      sanzo defitivno si mi rasvijetlio s obzirom na sve sto mi se vrtilo po glavi, hvala ti, ali i dalje ne kontam dovoljno da mi je sve potpuno jasno i da mogu rijesiti zadatak, manjka mi jos vjezbe i logike oko toga, tako da cu se svakako vratiti par koraka unazad da bolje baratam sa funkcijama.

      bosscorelli da to je Fizz Buzz challenge, jos mi je pretesko, ali ne planiram zadirati dalje dok mi to ne bude potpuno jasno svakako.

        Nightyx Ovo što je @sanzo rekao je sve točno, ja ću se samo nadovezati komentarom linije po linije pa možda možeš onda i točno reći što ti još nije sjelo pa se raspišemo. 🙂

        n = int(input())

        Ova linija koda traži da se u varijablu n spremi jednu int vrijednost (cijelobrojna) koju korisnik unosi preko sučelja. Unos je omogućen korištenjem input() funkcije. Kada naiđeš na neku funkciju, a da slučajno nije napisano već na stranici kako funkcionira, dobra je praksa pogledati direktno u dokumentaciju ili neki provjereni vanjski izvor, poput W3Schoolsa.

        Konkretno, za input() i varijante korištenja te funkcije baci oko na https://www.w3schools.com/python/ref_func_input.asp.

        for x in range(1, n):

        Ovo je Pythonova definicija for petlje u kojoj kaže da petlja prolazi svaki broj od 1 pa do n-1. Ako pogledaš gore, vrijednost dobivenu iz int(input()) spremamo u varijablu imena n. Iz toga možemo zaključiti da je broj koji smo unijeli broj do kojeg će for petlja ići. Ako je n=6, for petlja će proći svaki broj od 1 do 5. Kada odabere jedan od tih brojeva, spremi ga u varijablu x za koju onda provjerava nekoliko različitih stvari. Kao prvo, koristi modulo operator koji je @sanzo vrlo jednostavno opisao kako funkcionira. Prvo provjerava je li taj broj djeljiv s 3 i 5. Ako je djeljiv s oba broja, ispisat će SoloLearn. Ako nije, onda nastavlja provjeru je li djeljiv s 3. Ako ne zadovolji taj uvjet, provjerava je li djeljiv s 5, a ako ni to ne zadovoljava onda samo ispisuje taj broj.

        Ako se zadržimo na tome da je n=6, onda bi ispis ovog isječka bio sljedeći:

        1
        2
        Solo
        4
        Learn

        Kao što vidiš, vrijednosti u range(x, y) funkciji kreću od x pa sve do y-1 pa na to vrijedi pripaziti.

          Fico ajme, da mi ovako netko objasnjava, di bi mi kraj bio 😃 hvala, puno mi je jasnije.

          E sad

          n = int(input()) - ova funkcija trazi da se neki upisani broj (u ovom slucaju intenger) spremi u varijhablu "n"

          for x in range(1, n): - ova funkcija kaze da "x" prolazi kroz sve brojeve od 1 do "n"

          if x % 3 == 0 and x % 5 == 0: - ako je x ostatak broja djeljiv sa 3 jednak nuli i x ostatak broja djeljiv sa 5 jednak nuli

          print("SoloLearn") - ispisat će SoloLearn

          elif x % 3 == 0: - ako je samo djeljiv sa 3

          print("Solo") - ispisat će Solo

          elif x % 5 == 0: - ako je djeljiv samo sa brojem 5

          print("Learn") - ispisat će Learn

          else: - inaće

          print(x) - ispisati "x"

          Molim te me ispravi ako sam negdje pogriješio, e sad ja moram upotrijebiti izjavu "continue", kako bi nastavio niz i promjeniti code tako da prekaće parne brojeve i i promjeni se isključivo na neparne……e sad, odakle da počnem i kako da to napišem u ovaj code, naravno da mi bude jasno….

          Btw oduševljen sam na pomoći ovdje i hvala na tome <3

            Nightyx E sad

            n = int(input()) - ova funkcija trazi da se neki upisani broj (u ovom slucaju intenger) spremi u varijhablu "n"

            for x in range(1, n): - ova funkcija kaze da "x" prolazi kroz sve brojeve od 1 do "n"

            if x % 2 == 0: - ako je x ostatak broja djeljiv sa 2 jednak nuli

            continue - preskoči sve ostale korake u for petlji za ovaj broj i nastavi na sljedeći broj u nizu

            if x % 3 == 0 and x % 5 == 0: - ako je x ostatak broja djeljiv sa 3 jednak nuli i x ostatak broja djeljiv sa 5 jednak nuli

            print("SoloLearn") - ispisat će SoloLearn

            elif x % 3 == 0: - ako je samo djeljiv sa 3

            print("Solo") - ispisat će Solo

            elif x % 5 == 0: - ako je djeljiv samo sa brojem 5

            print("Learn") - ispisat će Learn

            else: - inaće

            print(x) - ispisati "x"

            Molim te me ispravi ako sam negdje pogriješio, e sad ja moram upotrijebiti izjavu "continue", kako bi nastavio niz i promjeniti code tako da prekaće parne brojeve i i promjeni se isključivo na neparne……e sad, odakle da počnem i kako da to napišem u ovaj code, naravno da mi bude jasno….

            Btw oduševljen sam na pomoći ovdje i hvala na tome <3

            Evo dodane linije u tvoj kod gore.

              sanzo pokusavam ispisati u konzoli ali mi javlja gresku u redu gdje je => if x % 2 == 0: <==

                Nightyx

                imaš dobro uvučenu liniju?

                Python je osjetljiv na "izgled" koda. Ako želiš da if bude unutar for petlje mora bit uvučen jednu razinu kao na tvojoj prvoj slici.

                Edit:

                Evo provukao sam ga kroz online compiler, nisam već 10 godina ništa pisao u pythonu pa nemam lokalno za testirat 😃

                  sanzo uspio sam da proradi, ali sto se tice sololearna nisam sve napravio, a ne kuzim sta jos trebam, jedan rezultat izbacuje kao točan, a drugi jos nije 😮

                  Možda glupo pitanje, ali.. kad radim novi repositorij na Githubu i kloniram ga na komp, on je povezan s Gitom. Ako krenem s projektom lokalno i već napravim hrpu toga, kako to sad prebaciti na Github i povezati s Gitom? Znači nisam na početku projekta kreirao prvo repositorij na Githubu, klonirao ga na komp i nastavio raditi, nego sam kreirao folder lokalno i krenuo raditi i sad bi naknadno odradio to sve s Githubom.

                    Brijac kreiras repo na Gitu, kloniras ga na svoj komp lokalno, kopiras lokalno napravljeno u taj klonirani folder i pushas na Git nakon toga

                      Da se nadovežem, @Brijac ako radiš baš na GitHubu, možeš napraviti prazan GitHub repozitorij nakon čega ti prikažu poruku koja opisuje kako taj repozitorij popuniti.

                      Tako sam i do sad radio, to mi se činio ipak kao nekakv "hacky" način za to odraditi. Mislio sam da postoji baš neki "pravi" način.

                      Još jedno pitanje, radim neki zadatak, treba napraviti setup za WP projekt i napraviti prvi pull request. E sad, slabo sam nešto do sad radio s Gitom pa mi nije jasno trebam li ja cijeli projekt imati na main branch-u jer ako imam, ne mogu onda napraviti pull request jer bi to trebao napraviti na nekom drugom branchu ili da to fejkam pa promijenim par fajlova bzvz na drugom branchu i onda odradim prvi pull request?

                        Brijac Ideja je da uvijek imaš jedan main na koji ćeš raditi merge drugih grana na kojima radiš promjene. Teško je malo ovako zaključiti iz toga što traže od tebe (ako je riječ o poslu, sigurno neće smetati ako ih pitaš za pojašnjenje, ne u smislu kako to napraviti, već što točno žele).

                        Nekakav workflow bi bio napraviti main, iz njega se branchati u neku novu granu na kojoj napraviš neku promjenu. Onda napraviš commit promjena na toj grani. Nakon toga radiš push te grane za koju onda možeš raditi PR/MR. Kada potrebne osobe odobre promjene, tada radiš na GitHubu merge s granom koju odabereš da je nadležna prilikom izrade PR/MR-a (u tvom slučaju bi to bio main).

                        Kužim sad što trebam, ovaj dio kod odobrenja promjene i na kraju merge-anja s main-om nakon odobrenja mi je falio. Još jedno pitanje, ako imam više zadataka tipa:

                        1. dodaj no WP temu
                        2. importaj neke blokove
                        3. kreiraj novi post type

                        trebam li onda za svaki zadatak napraviti poseban branch? (na kraju svakog zadatka mi piše da otvorim pull request s napravljenim promjenama)

                        Radi se akademiji za WP.

                          Brijac To sve ovisi o tebi i nekad praksi u firmi. Najbolje ti je napisati na papir ili u Notepad funkcionalnosti svakog tog zadatka. Ako vidiš da međusobno nisu ovisni ili da jedan ovisi o drugome, onda je najbolje podijeliti u više grana. To bi na poslu dobio kao zadatke u više tiketa. Ako vidiš da dva zadatak dijele funkcionalnosti, no da bi ona bila tek polovično implementirana ako radiš na zasebnim granama, onda napraviš oba zadatka u jednoj grani. Sve je u prilagodljivosti i nekakvo vlastitoj raspodjeli odgovornosti svake funkcionalnosti.

                          U tvom slučaju bih rekao da komotno svaki zadatak može kao zasebna grana. Na GitHubu možeš napraviti Project koji povežeš sa svojim repozitorijem. Projekt ima svoju ploču na koju možeš dodavati zadatke kako bi stvorio tikete. Automatski će ih numerirati pa si možeš i tako imenovati svoje grane. Primjerice, napraviš projekt i repozitorij koji se zovu Wordpress Tutorial. Skraćeno će biti WPT i na svaki novi tiket će se vezati inkrementirana vrijednost, odnosno WPT-X pri čemu će prvi tiket biti WPT-1, drugi WPT-2 itd. Onda možeš napraviti zasebnu granu koja se zove WPT-1_wordpress-theme i u njoj dodavati temu pa napraviti PR.

                            Fico

                            Tnx, nažalost stignem se samo vikendom bavit zadaćama s akademije, a tad mi nema nikoga online za pitanja pa rekoh da pitam tu 👍

                              Brijac Slobodno pitaj pa makar ti se pitanje nekad činilo "glupim". Uvijek bolje pitati pa saznati.