Python programiranje kao hobi

poruka: 170
|
čitano: 57.577
|
moderatori: Lazarus Long, XXX-Man, vincimus
+/- sve poruke
ravni prikaz
starije poruke gore
16 godina
neaktivan
offline
Re: Python programiranje kao hobi
cale kaže...

da samo dobijemo:

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]

Pa onda izbaci print() iz for petlje i pozovi ga samo jednom kad petlja zavrsi. Pozivas ga svaku iteraciju, normalno da ti ispisuje onda svaki put listu (i to kako raste, svaku iteraciju za jedan broj je veca).

Perhaps today IS a good day to die. PREPARE FOR RAMMING SPEED!
Poruka je uređivana zadnji put pet 12.2.2016 17:49 (1domagoj1).
15 godina
offline
Re: Python programiranje kao hobi

Kako se radi sa parnim i neparnim brojevima? Znači, kako reći:

 

Ako je broj paran, izvrši ovo, a ako je neparan izvrši nešto drugo.

 

Ne znam jeste li me shvatili, ali mene interesira kako izraziti paran, a kako neparan broj u Python-u?

16 godina
neaktivan
offline
Re: Python programiranje kao hobi
Izzy kaže...

Kako se radi sa parnim i neparnim brojevima? Znači, kako reći:

 

Ako je broj paran, izvrši ovo, a ako je neparan izvrši nešto drugo.

 

Ne znam jeste li me shvatili, ali mene interesira kako izraziti paran, a kako neparan broj u Python-u?

Kao i u svakom drugom jeziku. Modulo operatorom.

if broj % 2 == 0:
    print("paran")

Perhaps today IS a good day to die. PREPARE FOR RAMMING SPEED!
15 godina
offline
Re: Python programiranje kao hobi

Hvala. Na jednoj stranici gdje sam počeo učiti programirati prije mjesec dana imam jedan zadatak, pa ga pokušavam riješiti. Tamo to i piše, ali nije mi bilo odmah jasno. Za neparan piše ovo:

 

% 2 == 1

 

14 godina
neaktivan
offline
Re: Python programiranje kao hobi
Izzy kaže...

Hvala. Na jednoj stranici gdje sam počeo učiti programirati prije mjesec dana imam jedan zadatak, pa ga pokušavam riješiti. Tamo to i piše, ali nije mi bilo odmah jasno. Za neparan piše ovo:

 

% 2 == 1

 

 To je ista stvar kao što je Domagoj napisao, ako je ostatak pri dijeljenju s 2 (modulo 2) 1, znači da je broj neparan.

 

Ako je ostatak 0, to znači da je broj djeljiv s 2, ergo paran je.

11 godina
neaktivan
offline
Re: Python programiranje kao hobi
cale kaže...

da samo dobijemo:

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]

 Trebaš napraviti funkciju koja vraća rezultat (bez da ispisuje svaki korak postupka), a tu funkciju zoveš iz top levela programa:

 

def promjena():
    lista = []
    k = "ABCDEFEGZIJKLMNO"
    o = 1
    for c in k:
        c = o
        o = o + 1
        lista.append(c)
    return lista

obrada = promjena()
print(obrada)
# Ispiše [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]

15 godina
neaktivan
offline
Python programiranje kao hobi

imam zadatak napisati funkciju "avoids" koja uzima riječ i niz nedopuštenih znakova te vraća riječ ako ona ne sadrži ni jedan od nedopuštenih znakova. Također riječi uzimam iz dokumenta koji sam skinuo prek neta a u njemu se nalaze riječi. U knjizi sam pronašao funkciju koja ide ovako:

def avoids(word,forbidden):

for letter in word:

    if letter in forbidden:

               return False

    return True

 

 

Problem je u tome sto u dokumentu ima preko 100 000 riječi i on ih ovako ne "odvrti" sve. Da li postoji kakav način da se koristi return a da sama funkcija ne prestane dok ne dođe do zadnje riječi.

 

Ovako sam ja nekako napravio:

def avoids():
   zabrana=0
   nedopušteno="trkom"
   fin=open("words.txt")
   for rijec in fin:
      k=rijec.strip()
      for slovo in k:
         if slovo in nedopušteno:
            zabrana=zabrana+1

      if zabrana>0:
         print("False")
         zabrana=0
      else:
         print(k)

 

 

 
0 0 hvala 0
14 godina
neaktivan
offline
Re: Python programiranje kao hobi
cale kaže...
Ovako sam ja nekako napravio:

def avoids():
   zabrana=0
   nedopušteno="trkom"
   fin=open("words.txt")
   for rijec in fin:
      k=rijec.strip()
      for slovo in k:
         if slovo in nedopušteno:
            zabrana=zabrana+1

      if zabrana>0:
         print("False")
         zabrana=0
      else:
         print(k)

 

 

 Ako čitaš datoteku, trebalo bi pročitat sve, koliki dio datoteke ne pročita?

 

Ovo tvoje rješenje je točno. Preporučam da varijabla zabrana bude boolean, a ne int, zato što ti nije bitan broj koliko znakova je zabranjeno. Također možeš nakon pronalaska prvog zabranjenog znaka prekinuti petlju (break).

Poruka je uređivana zadnji put uto 16.2.2016 18:25 (Looka).
15 godina
neaktivan
offline
Re: Python programiranje kao hobi

def program():

   dop="e"
   count=0
   fin=open("words.txt")
   for k in fin:
      word=k.strip()
      for rijec in word:
         if rijec in dop:
            return False
      return True

Tu odmah nakon prve rijeci,vjerojatno ni ne dode do kraja rijeci,vec kod prvog slova vjerojatno prestane

Poruka je uređivana zadnji put uto 16.2.2016 18:51 (cale).
15 godina
offline
Python programiranje kao hobi

Evo i ja se javljam u temu.

 

Pokretaču teme poručujem da je odabrao vjerojatno najbolji programski jezik kojeg je mogao pronaći za sve zadaće koje je naveo.

Ja svakodnevno radim u Pythonu i Django frameworku (baziran na pythonu) pa možda mogu nekome pomoći sa nekakvim problemom.

 

Svim početnicima kažem

I have… seen things you people wouldn't believe… Attack ships on fire off the shoulder of Orion. I watched c-beams glitter in the dark near the Tannh&am
Moj PC  
0 0 hvala 1
14 godina
neaktivan
offline
Re: Python programiranje kao hobi
cale kaže...

def program():

   dop="e"
   count=0
   fin=open("words.txt")
   for k in fin:
      word=k.strip()
      for rijec in word:
         if rijec in dop:
            return False
      return True

Tu odmah nakon prve rijeci,vjerojatno ni ne dode do kraja rijeci,vec kod prvog slova vjerojatno prestane

 Aaaa, stvar je da funkcija ima samo jedan return, tj. vrati samo jednu vrijednost, a ovdje u funkciji provjeriš je li prva riječ valjana i ovisno o tome vratišTrue ili False.

 

U mainu otvori datoteku i čitaj riječ po riječ, a onda za svaku riječ pozivaj funkciju koja provjerava sadrži li nedozvoljene znakove.

15 godina
offline
Re: Python programiranje kao hobi
Looka kaže...
cale kaže...

def program():

   dop="e"
   count=0
   fin=open("words.txt")
   for k in fin:
      word=k.strip()
      for rijec in word:
         if rijec in dop:
            return False
      return True

Tu odmah nakon prve rijeci,vjerojatno ni ne dode do kraja rijeci,vec kod prvog slova vjerojatno prestane

 Aaaa, stvar je da funkcija ima samo jedan return, tj. vrati samo jednu vrijednost, a ovdje u funkciji provjeriš je li prva riječ valjana i ovisno o tome vratišTrue ili False.

 

U mainu otvori datoteku i čitaj riječ po riječ, a onda za svaku riječ pozivaj funkciju koja provjerava sadrži li nedozvoljene znakove.

 Ako imaš listu riječi npr. "riječ, riječ2, riječ3, riječ4,..." i ti želiš da ti funkcija vrati listu svih riječi koje u sebi ne sadrže nedozvoljeni znak, onda moraš napraviti malo kompleksniju konstrukciju.

 

Sa jednom for petljom moraš vrtiti sve riječi koje imaš na listi, u toj for petlji možeš koristiti regex kako bi odvajao svaku riječ posebno, nakon što imaš svaku riječ posebno, onda nju gurneš u tvoju prvu funkciju i vraćaš true ili false ovisno ako je tiječ dozvoljena ili nije.

Ako je riječ dozvoljena, onda tu riječ u prvoj for petlji "appendaš" na listu dozvoljenih riječi.

 

Ako zatreba, mogu ti i napisati dvije funkcije koje to rade.

 

I have… seen things you people wouldn't believe… Attack ships on fire off the shoulder of Orion. I watched c-beams glitter in the dark near the Tannh&am
15 godina
neaktivan
offline
Re: Python programiranje kao hobi

pa moze,cisto da dobijem malo bolji i drugaciji pogled i jer mi jos ne uspjeva.

Zadatak je sada bio da pronađem rijeć koja ima po dva ista slova u slijedu.Tipa točno bi bilo kad bi islo" MMIISSIISSPPII". Nadam se da razumijete.

Prvi kod ide ovako:S time da taj kod radi kada ga upotrijebim samog

def provjera(k):
   lista=[]
   lista1=[]
   count=0
   count1=1
   while count1<len(k):
      if k[count]==k[count1]:
         slovo=k[count]
         slovo1=k[count1]
         lista.append(slovo)
         lista1.append(slovo1)
         count=count+2
         count1=count1+2
      else:
         return
   if len(lista)+len(lista1)==len(k):
      print(k)

No kada ga ubacim u drugu funkciju ne funkcionira. Nađe prvu riječ koja je "aa" ali nakon toga stane,kao da blokira i onda ga moram restartat

def program():
   fin=open("words.txt")
   for rijec in fin:
      k=rijec.strip()
      provjera(k)

Ako maknem return iz funkcije provjera,opet se nista ne događa

Poruka je uređivana zadnji put sri 17.2.2016 18:28 (cale).
15 godina
offline
Re: Python programiranje kao hobi

Sada sam na brzinu probao napisati jednostavnu logiku koja radi ono što ti je trebalo. To bi bilo nešto ovog tipa:

 

rijeci = "jedan, dva, tri, cetiri"
lista_rijeci = rijeci.split(", ")
lista_nedozvoljenih_znakova = "de"

lista_dozvoljenih_rijeci = []

for rijec in lista_rijeci:
  nedozvoljena_rijec = False
  for slovo in rijec:
   if slovo in lista_nedozvoljenih_znakova:
    nedozvoljena_rijec = True
  if not nedozvoljena_rijec:
   lista_dozvoljenih_rijeci.append(rijec)

print lista_dozvoljenih_rijeci

 

Sigurno se to može još optimizirati i skratiti.

 

I have… seen things you people wouldn&amp;amp;amp;amp;amp;amp;amp;amp;amp;#39;t believe… Attack ships on fire off the shoulder of Orion. I watched c-beams glitter in the dark near the Tannh&amp;amp;am
15 godina
neaktivan
offline
Python programiranje kao hobi

jedno pitanje u vezi odnosa procesora i programiranja. Uglavnom imam problem kada je program duži,odnosno kada je proces izvršavanja duži.Konkretno imam nekih 11000 riječi koje moram iz liste staviti u rječnik, no nikako ne mogu jer mi svaki put blokira. Da li je to do procesora ili neki drugi problem(Radi se o Intel celeron G530).

 

 

 

Poruka je uređivana zadnji put pet 11.3.2016 17:23 (cale).
 
0 0 hvala 0
11 godina
neaktivan
offline
Re: Python programiranje kao hobi

Da li program radi prihvatljivom brzinom kad u imaš manje riječi? Možeš li postati konkretan kod koji radi sporo?

15 godina
neaktivan
offline
Re: Python programiranje kao hobi

Da kada smanjim rijeci onda kod radi.

 

def make_dict(t):
   rječnik=dict()
   count=0
   for riječ in t:
      word=riječ.strip()
      if count==60:-kada stavim npr broj dva,onda uzima svaku drugu riječ i onda blokira.Nisam bas mjerio koji je minimum,al oko 50 se program ne ruši
         rječnik.setdefault(word,word)
         count=0
      else:
         count+=1
   return rječnik

11 godina
neaktivan
offline
Re: Python programiranje kao hobi

Mislim da uzrok blokiranja nije u ovom dijelu koda. Za provjeru skini ovu listu od 20000 riječi, pokraj nje stavi ovu skriptu pa je pokreni.

 

def make_dict(t):
    rječnik = dict()
    for riječ in t:
        word = riječ.strip()
        rječnik.setdefault(word, word)
    return rječnik

with open('20k.txt') as f:
    word_list = f.readlines()
word_dict = make_dict(word_list)
print(len(word_dict)) # ispiše 18529

 

Moj E6700 (koji je po benchmarkovima negdje u rangu tvojeg G530) ovo odvrti u trenu.

10 godina
neaktivan
offline
Python programiranje kao hobi

Kolko ja znam ako pokreces kod u IDLE-u Python ce javiti ukoliko nema dovoljno memorije ili je CPU preslab da odvrti program do kraja.

Moj PC  
0 0 hvala 0
15 godina
neaktivan
offline
Re: Python programiranje kao hobi

ispiše mi broj 18529 bez problema,ali kada stavim print(word_dict) da ispise sve rijeci onda blokira.

 

 

Off topic malo:

Da li ja mogu napraviti funkciju koja ce kad se pokrene pitat korisnika da napravi novu varijablu,znaci da kad pokrenem funkciju tek onda stavljam grupa1=dict()

Također da li je moguce:

input("ime")=input("redni broj")

Znaci da korisnik mora odrediti i varijablu i vrijednost

Poruka je uređivana zadnji put ned 13.3.2016 19:14 (cale).
11 godina
neaktivan
offline
Re: Python programiranje kao hobi

1) Printanje velike količine teksta je dosta sporo ako koristiš IDLE. Pokreni program iz konzole ili preusmjeri izlaz u datoteku.

 

2) U principu možeš, ali je to loša ideja. Ako ti treba niz vrijednosti koristi listu, ako ti trebaju name: value parovi koristi dictionary. Po potrebi možeš kombinirati ove klase, npr. lista dictionaryja, dictionary dictionaryja itd.

 

3) Za takve stvari se koristi dictionary.

15 godina
neaktivan
offline
Re: Python programiranje kao hobi

fakat sorry,vjerojatno nisam ni pitanje dobro postavio......pokusavam ali ne ide. Htio bi da kroz for i in range(n): napravim n dictionary. Ako je n=5,onda bi imao 5 različitih dictionary

10 godina
neaktivan
offline
Re: Python programiranje kao hobi
cale kaže...

fakat sorry,vjerojatno nisam ni pitanje dobro postavio......pokusavam ali ne ide. Htio bi da kroz for i in range(n): napravim n dictionary. Ako je n=5,onda bi imao 5 različitih dictionary

Mozes staviti rjecnike u listu.

rj = list()

for i in range(5):

   rj.append(dict())

Poruka je uređivana zadnji put pon 14.3.2016 15:57 (tLeon).
15 godina
neaktivan
offline
Re: Python programiranje kao hobi

o covjece kako jednostavno......

15 godina
neaktivan
offline
Python programiranje kao hobi

koja je razlika izmedu array i lista. Citam po netu, ne mogu nikako si predociti neku razliku. Ovako nesto stalno nailazim kao objašnjenje ("is just a thin wrapper on C arrays")

 
0 0 hvala 0
16 godina
neaktivan
offline
Re: Python programiranje kao hobi
cale kaže...

koja je razlika izmedu array i lista. Citam po netu, ne mogu nikako si predociti neku razliku. Ovako nesto stalno nailazim kao objašnjenje ("is just a thin wrapper on C arrays")

Array iliti polje, u Pythonu tehnicki ne postoji. Opcenito u programskim jezicima polja su glavni "radni konji" da to tako nazovem, dok su u Pythonu to liste. Npr. u C/C++-u ili Javi mozes deklarirati polje cijelih brojeva:

C/C++:

int polje_cijelih_brojeva[5] = {1, 2, 3, 4, 5}

Java:

int[] poljeCijelihBrojeva = new int[5];

i onda nesto radis s tim brojevima u tim poljima. Imaj na umu da mozes u to polje pohraniti samo i iskljucivo cijele brojeve (int) jer je tako deklarirano.

 

S druge strane, Python ima liste koje su u principu ista stvar, samo opcenitije i puno fleksibilnije. Sjeti se da u listu mozes trpati sve zivo, cijele brojeve, decimalne brojeve, stringove, druge liste, funkcije, sve. Takoder, mozes imati i mijesanu listu, ne mora u njoj biti iskljucivo isti tip podataka. Svaki jezik ima svojeg "radnog konja": podatkovnu strukturu koja se najvise koristi. U C/C++-u i drugim C-olikim jezicima to su polja. U Pythonu to su liste koje su puno fleksibilnije od polja u statickim jezicima. Druge razlike u biti i nema.

Perhaps today IS a good day to die. PREPARE FOR RAMMING SPEED!
8 godina
neaktivan
offline
Re: Python programiranje kao hobi

I mene je pojam Arrasy pomalo zbunjivao! Hvala na odgovoru!

 

 

I dalje radim na python-u i koristim svaki slobodan trenutak za vjezbanje. Na papiru sam vec posao razvijati i svoje hobby projekte.

 

 

Jedna stvar me zanima:

 

- Poceo sam uciti klase, i tu nema nista sto ne razumijem, pojam blueprinta (ili sablona) razumijem, postoji za jednostavno i brzo stvaranje instanci objekata sa razlicitim osobinama - na tome vjezbam i radim.

 

Ono sto ne razumijem najbolje je kada ih korititi? Posebno sto sam primjetio na youtube da se provlaci ideja da se u Pythonu (ali i drugim jezicima) previse koriste klase i da se tako komplikuje kod.

 

Kada je za obavljanje posla dovoljna funkcija, a kada treba koriti klasu?! Volio bih cuti primjere.

 

Recimo, stvaram imenik kao dio vjezbanja (koji se koristi iz Python shell, a koji uskoro zelim unaprijediti sa Tkinter-om) - meni se cini da je za pisanje imenika funkcija sasvim dovoljna - treba li pisati klase u ovom slucaju i zasto ako treba?

 

Sa druge strane, program za "obradu" radnika u velikom preduzecu bi mogao imati koristi od Class-a jer bi mogao praviti children klase za razlicite tipove radnika, gdje bi osnovne osobine bile zajednicke, kao ime, pol, starost, radni staz, koeficient plate, a ostale specificne za odredjeno zanimanje mogle bi se dodjeljivati kroz nasljedjivanje - children classes. Isti primjer bi bila igrica sa razlicitim tipovima heroja koji dijele osnovne osobine i imaju posebne osobine.


Jesam li ja ovo dobro skuzio?! (ovo su primjeri na kojima ja vjezbam, ne znam da li su relevatni) :) Kada je pametno koristiti klase?

 

 

11 godina
neaktivan
offline
Re: Python programiranje kao hobi

U predavanju

ima odličan primjer - klasa s dvije metode od kojih je jedna __init__ je očito trebala biti funkcija. Funkcije su jednostavniji konstrukt i ako ništa drugo je ih lakše testirati.

 

Nasljeđivanje ima svojih problema. U tvom primjeru osnovni atributi radnika sadrže koeficijent plaće, ali što s zaposlenicima koji rade za proviziju, fiksni iznos, ili su plaćeni po satu? Zašto je tu i radni staž kad se za honorarce to ne prati? Primjer "iz života" je .NET Framework klasa Splitter koja ima dvadesetak "not relevant to this class" atributa koji su joj nametnuti iz parent klase (Font, TabStop, OnKeyDown) zbog ograničenja jezika.

 

Klase u Pythonu su jedan od mehanizama code-reusea i treba ih koristiti ako ti pojednostavljuju program, a ne zato jer si na njih navikao.

8 godina
neaktivan
offline
Re: Python programiranje kao hobi

Da, upravo ovog lika sam gledao, i to dva njegova videa, a zatim i neke komentarte i web stranice iz diskusija. 

 

Meni to nije previse rasvjetlilo stvari.

 

 

Sad sam se malo igrao u shell-u i meni se cini da su u stvari klase potrebne tamo gdje se planira raditi sa nekoliko objekata u isto vrijeme (tj objekata istih osobina, sa razlicitim parametrima) - npr ako zelim raditi sa podacima vise osoba, ili na primjer, ako zelim napraviti program koji ce raditi monitoring web sajtova i pratiti promjene - ako koristim klase mogu jednostavno pokrenuti nekoliko paralelnih procesa u isto vrijeme, pratiti nekoliko sajtova. - Pokusavam sebi zamisliti prednosti :D

16 godina
neaktivan
offline
Python programiranje kao hobi

Nije tesko nauciti kako iskodirati klase i kako s njima raditi, ono teze je nauciti kada i kako ih upotrebljavati. Nazalost, tu nema nekog jednostavnog objasnjenja. Za pocetak moras se upoznati s pojmovima enkapsulacija, nasljedivanje, polimorfizam i apstrakcija (ima i drugih). Te pojmove dalo bi se svesti u sljedecu recenicu: kod objektno orijentiranog programiranja radi se o grupiranju podataka s funkcijama (enkapsulacija) koje manipuliraju tim podacima, ali tako da skrivaju nacin na koji rade ispod haube (apstrakcija). Ponasanje onda mozes mijenjati, tj. nadogradivati nasljedivanjem.

 

Poliformizam je tu malo drugacija zvjercica koju je malo teze shvatiti. Doslovno znaci "mijenjanje oblika". U prijevodu, jedan tip objekta moze se predstavljati kao drugi. Npr., imas klasu Zivotinja iz koje imas izvedene klase Macka i Pas. Polimorfizam ti omogucuje da radis i s objektima klase Macka i objektima klase Pas pod istim zajednickim nazivnikom. Npr., imas metodu govori() u klasi Zivotinja i pozoves ju nad bilo kojom izvedenom klasom, odgovor koji ces dobit bude adekvatan toj klasi. Znaci ako pozoves metodu nad objektom tipa Macka dobit ces "mijau", a ako pozoves nad objektom tipa Pas, dobit ces "vau". Sve to bez da imas posebne metode "govori_macka()" ili "govori_pas()". Mislim da ti sad nakon ovoga nije nista jasno XD, najlakse bi mi to bilo pokazati na primjeru C++-a ako zelis.

 

EDIT: S tim da bi se jezik zvao objektno orijentiranim, potrebno je da podrzava enkapsulaciju, nasljedivanje i polimorfizam (sto Python sve podrzava). Apstrakcija nije toliko nuzna i Python za razliku od drugih jezika nema implicitno podrzanu apstrakciju. Kako je rekao Guido van Rossum (tvorac Pythona) "we are all adults here" misleci pritom da smo dovoljno zreli i pametni da kao programeri necemo dopustati da jedni objekti kopaju po podacima drugih objekata (to apstrakcija pokusava sprijeciti jer skriva sto se radi ispod haube pojedinog objekta). Objekti medusobno suraduju (i trebaju suradivati) jedino preko predefiniranog javnog sucelja.

Perhaps today IS a good day to die. PREPARE FOR RAMMING SPEED!
Poruka je uređivana zadnji put sub 26.3.2016 12:14 (1domagoj1).
 
1 0 hvala 0
Nova poruka
E-mail:
Lozinka:
 
vrh stranice