Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 629 odgovora
  • 108.036 pregleda

Najnovija ↓

Re: Zadaci za wannabe pythoniste 12.12.2019. u 09:19 · pre 83 meseca #21
Citat:
Evo probao da izvadim print funkciju izvan if...else statement, ali ne radi, jer naravno više ne prepoznaje promenljivu "rezultat"
Daj primer na šta konkretno misliš. Da nešto naučimo.


Dovoljno je:
Code:
if nekiBroj % 2 == 0:
    return nekiBroj // 2
else: 
    return nekiBroj * 3 + 1

ili 

nekiBroj // 2 if nekiBroj % 2 == 0 else nekiBroj * 3 + 1

Malo drugaciji primer:
Code:
from typing import Iterator

def collatz(number: int) -> Iterator[int]:
    while number != 1:
        number = number // 2 if number % 2 == 0 else number * 3 + 1
        yield number

try:
    user_input = int(input('Enter some number: '))
    for num in collatz(user_input):
        print(num)
except ValueError as err:
    print(f'Value must be an integer.\n{err}')
Re: Zadaci za wannabe pythoniste 12.12.2019. u 10:09 · pre 83 meseca #22
Ja napravio program sa 12 redova, Panta ga slupao u jednom!!!
Šta reći do -- genije!

PANTU ZA PREDSEDNIKA :D

Re: Zadaci za wannabe pythoniste 13.12.2019. u 12:36 · pre 83 meseca #23
Ja sam imao sličnu ideju kao Panta, a pošto sam manijak za testiranje, program je morao da radi ispravno bez obzira na argument. Pošto je trebalo naći sekvencu, meni je bilo logično da vratim listu...
Code:
def colatz(n):

  lista = [n]
  try:
    if (n != int(n) or n<1):
      raise ValueError
  except ValueError:
    lista.append("Error: positive integer expected")
    return lista

  while (n>1):
    if(n%2==0):
      n=int(n/2)
    else:
      n=int(3*n+1)
    lista.append(n)
  return lista

print(colatz(1))
print(colatz(2))
print(colatz(10))
print(colatz(1.5))
print(colatz("a"))
print(colatz(-1))


Citat:
[1]
[2, 1]
[10, 5, 16, 8, 4, 2, 1]
[1.5, 'Error: positive integer expected']
['a', 'Error: positive integer expected']
[-1, 'Error: positive integer expected']
Re: Zadaci za wannabe pythoniste 13.12.2019. u 13:11 · pre 83 meseca
izmenjeno 1 put, poslednji put a1234567 13.12.2019. u 13:58
  1. a123456713.12.2019. u 13:58zapis iz teksta poruke
#24
Apdejtovana Pantina verzija, sad neko može da unese i frižider, a ne negativan broj, neće zabagovati!
Svaka čast, mastore.

Ubacio i tvoje i Pantino rešenje u github

Nego da ja ovde stavim i rešenje za zadatak broj 3.
To je lako, al čisto da se nađe.
Re: Zadaci za wannabe pythoniste 13.12.2019. u 13:19 · pre 83 meseca #25
Vreme leti, a mi korak po korak, stigosmo i do četvrtog zadatka.
Za ove što vole kockarnice, prava poslastica. I to besplatna. Ne moraš posle da se vadiš :)

Daklem:

Zadatak 4: Pismo/glava

Za ovu vežbu ćemo pokušati da uradimo jedan eksperiment. Ako baciš novčić 100 puta i upišeš jedno P za „pismo“ i jedno G za „glavu“, napravićeš niz koji će izgledati otprilike ovako: “PPPPGGGGPP”. Ako pitaš drugara da napiše jedan takav niz, bez bacanja novčića, verovatno će krenuti da naizmenično stavlja „glave“ i „pisma“, nešto slično ovome: “PGPGPPGPGG”, što se ljudskom oku čini kao jedan nasumičan niz. Ali on nije matematički nasumičan. Tako čovek verovatno nikada neće napisati šest „glava“ ili šest „pisama“ u nizu, iako je vrlo verovatno da se to dogodi kada zaista bacamo novčić. Mi ljudi smo predvidljivo loši u proceni kada je u pitanju nasumičnost.

E kad ovo sve znamo, tvoj je zadatak da napišeš program koji će umesto nas utvrditi koliko puta se šest „glava“ ili šest „pisama“ zaista javlja u jednom nizu od većeg broja bacanja novčića. Tvoj program će tako ovaj eksperiment podeliti u dva dela: u prvom delu generiše listu nasumično dobijenih „pisama“ i „glava“, a u drugom delu proverava ima li i koliko nizova u njemu. Sav taj kod stavi u petlju koja će ovaj eksperiment ponoviti 10.000 puta, tako da utvrdimo koji procenat bačenih novčića sadrži niz od šest „pisama“ ili „glava“. Kao hint, napomenuću da će funkcija random.randint(0, 1) dati vrednost 0 u 50% odsto slučajeva, a vrednost 1 u ostalih 50% slučajeva.

Možeš krenuti od ovog obrasca:

Code:
import random
brojNizova = 0
for brojEksperimenata in range(10000):
    # Kod koji pravi listu od 100 glava/pismo vrednosti.

    # Kod koji proverava postoji li niz od 6 „pisama-glava“.
print('Šanse za niz: %s%%' % (brojNizova / 100))

Naravno, ovo je samo procena, ali 10.000 pokušaja je solidan uzorak.
Ukoliko znaš matematiku, mogao bi da izračunaš procente i uštediš sebi muku pisanja programa. Ali opšte je poznato da su programeri vrlo loši matematičari.
Re: Zadaci za wannabe pythoniste 14.12.2019. u 00:16 · pre 83 meseca #26
Programeri MORAJU da znaju verovatnoću i još neke grane matematike (na primer algebru, logiku i teoriju skupova).
Pošto su bacanja novčića međusobno nezavisni događaj, svako bacanje ima verovatnoću od 1/2 da padne pismo ili glava.

U prvom bacanju u nekom nizu verovatnoća je 1 da će pasti pismo ili glava (siguran događaj), u svakom sledećem bacanju vefrovatnoća da će pasti ista strana kau u prvom je 1/2, pa je verovatnoća da će pasti 6 puta za redom ista strana 1/32 (32=2**5), odnosno u 100 bacanja očekuje se približno tri niza od po šest pisama ili glava (100/32 = 3.125)

Moj profesor programiranja sa faksa je imao običaj da kaže: "Čuvaj se Monte Karla, kako grada, tako i metode".

Ako te zanima verovatnoća, evo jednog malo težeg zadatka sa https://projecteuler.net/ (zadatak 205)
Aca ima 9 četvorostranih kockica za igru (tetraedara) na čijim su stranicama brojevi 1,2,3 i 4
Boban ima 6 šestostranih (normalnih) kockica sa brojevima 1-6 na stranama.

Aca i Boban bacaju istovremeno kockice i pobednik je onaj koji dobije veći zbir.
Koja je verovatnoća da će Aca da pobedi? Dati verovatnoću na 7 decimala.

rešenje je 0.5731441

Zadatak je rangiran sa težinom 15% (zadaci imaju težinu od 5-100% u koracima po 5)
Re: Zadaci za wannabe pythoniste 14.12.2019. u 03:23 · pre 83 meseca #27
Ne znam šta moraju, ali eto Sweigart kaže da slabo znaju :)
A završio je i sam computer science.
Inače, deluje mi kao jedna baš zanimljiva personality
pre svega zato što je toliko stvari postavio na svom sajtu besplatno

Zanimljiv ti je taj sajt sa problemima koji si linkovao. Vidim prvi problem rešilo skoro milion ljudi. Međutim, kako dalje, rapidno opada broj.

Inače, bacao novčić po 100 puta i evo rezultata iz tri serije:

1 glava u nizu - 12
1 pismo u nizu - 5
2 glave u nizu - 7
2 pisma u nizu - 12
3 glave u nizu - 4
3 pisma u nizu - 6
4 glave u nizu - 1
5 pisama u nizu - 1
6 pisama u nizu - 1
----------------------
1 glava u nizu - 17
1 pismo u nizu - 14
2 glave u nizu - 5
2 pisma u nizu - 11
3 glave u nizu - 3
3 pisma u nizu - 1
4 glave u nizu - 1
5 pisama u nizu - 1
8 glava u nizu - 1
8 pisama u nizu - 1
-----------------------
1 glava u nizu - 13
1 pismo u nizu - 10
2 glave u nizu - 6
2 pisma u nizu - 8
3 glave u nizu - 2
3 pisma u nizu - 5
4 glave u nizu - 3
4 pisma u nizu - 1
5 pisama u nizu - 1
7 glava u nizu - 1
Re: Zadaci za wannabe pythoniste 15.12.2019. u 04:41 · pre 83 meseca #28
Dok čekamo odgovore ambicioznih pythonista, imam jedno pitanje.
Danas na Sololearn challenge jedno od pitanja je bilo sledeće:

x = [[0], [1]]
print(len('a'.join(list(map(str, x)))))

rešenje je 7

Međutim, meni nikako nije jasno kakva je to magija u pitanju.
Jel može neko da razjasni misteriju?

Pre svega mi ovo "map" zadaje problem, jer ne razumem šta ovde radi. Gledao nek primere i objašnjenje, ali nije mnogo pomoglo u ovom slučaju.
Re: Zadaci za wannabe pythoniste 15.12.2019. u 12:32 · pre 83 meseca #29
Možda te zbunjuju duple, namerno stavljene uglaste zagrade?

Probaj primer bez njih

Code:

x = [0, 1]


Ako te zbunjuje kompletna linija, uvek možeš da razdvojiš funkcije koje pozivaš

Code:


x = [[0], [1]]
print(len('a'.join(list(map(str, x)))))


x = [[0], [1]]
print('a'.join(list(map(str, x))))


x = [[0], [1]]
print(list(map(str, x)))

Potpis
Kako se dele racunarski programi?
Na bagovite (sa greskama) i ispravne (bez gresaka). Ovi drugi su hipoteticki.
***GPL-ovano by @Shadowed

"Ja za email koristim outlook express u virtualnoj mašini, tako da s te strane nijedan linux nije
dorastao XP-u." - pisac
Re: Zadaci za wannabe pythoniste 15.12.2019. u 12:41 · pre 83 meseca #30
Citat:
Pre svega mi ovo "map" zadaje problem, jer ne razumem šta ovde radi.

Izvršava str za svaku stavku iz liste x, npr. str(x[0]), str(x[1]).

Code:

def add(x, y):
    return x + y

list(map(add, [1, 2, 3], [4, 5, 6]))
[5, 7, 9]

list(map(lambda x, y: x+y, [1, 2, 3], [4, 5, 6]))
[5, 7, 9]
Re: Zadaci za wannabe pythoniste 15.12.2019. u 12:55 · pre 83 meseca #31
Koliko je python pozajmio iz funkcionalnog ptogramiranja:

Code:

{- x = [[0], [1]]
print(len('a'.join(list(map(str, x))))) -}
main = do
  let x = [[0],[1]]
  print $ concat $ "a":map show x

Re: Zadaci za wannabe pythoniste 15.12.2019. u 13:20 · pre 83 meseca #32
Samo sto Haskell to moze na vise nacina:
Code:

main = do
  let x = [[0],[1]]
  (print.length.concat) $ "a":map show x


ili ovako:

Code:

main = do
  let x = [[0],[1]]
  (print.length) $ 'a':(concat $ map show x)


Re: Zadaci za wannabe pythoniste 15.12.2019. u 17:41 · pre 83 meseca #33
Citat:
tuxserbia:
Možda te zbunjuju duple, namerno stavljene uglaste zagrade?

Probaj primer bez njih
x = [0, 1]

Razumeo sam da se radi o listi koja u sebi ima dve liste od jednog člana.
Ako uklonim zagrade, onda je to jedna lista [0, 1] i rezultat je drugačiji:

0a1
len = 3

Citat:

Ako te zbunjuje kompletna linija, uvek možeš da razdvojiš funkcije koje pozivaš

Odlična ideja. Hvala!

Code:

x = [[0], [1]]
print(list(map(str, x)))

>>> ['[0]', '[1]']


Code:

print('a'.join(list(map(str, x))))

>>> [0]a[1]


i na kraju:

Code:

print(len('a'.join(list(map(str, x)))))

>>>7


Pa jel moguće da ga na kraju čita kao string '[0]a[1]' koji ima 7 karaktera!?




Re: Zadaci za wannabe pythoniste 15.12.2019. u 20:05 · pre 83 meseca #34
Gledam ovo pa me sramota koliko malo znam. Tri dana sam učio payton, dobio online sertifikat.... i MISLIO SAM da nešto znam. Bruka. Moram još da bistrim vodu. Sad ću jednu fuka vruću pa da se bacim na video tutorijale ili pdf na srpskom, videću. :) :(
Re: Zadaci za wannabe pythoniste 16.12.2019. u 02:51 · pre 83 meseca
izmenjeno 1 put, poslednji put a1234567 16.12.2019. u 03:27
  1. a123456716.12.2019. u 03:27zapis iz teksta poruke
#35
Ako ti je za utehu, nisi jedini.
Ali dan po dan, naučićemo i nas dvojica nešto. :)

Evo vežbe radi jedan ne suviše težak zadatak:

Napravi program u kojem korisnik prvo unese tri integera, a potom ih program ispiše sortirane po veličini (od najmanjeg do najvećeg). Koristi min i max funkciju da nađeš najmanji i najveći broj. Srednju vrednost ćeš utvrditi računajući zbir sve tri vrednosti i onda od njega oduzeti najmanju i najveću.

Eto, probaj pa da vidimo kakva ćemo rešenja pronaći.

Ako zapne, a neće, ja sam moje rešenje stavio ovde:
Re: Zadaci za wannabe pythoniste 16.12.2019. u 09:09 · pre 83 meseca #37
Koliko ja razumem, tvojim metodom ćemo dobiti srednju vrednost

4 + 7 + 8 = 19 / 3 = 6.3333

a nama treba srednji broj po veličini, dakle 7
Odgovori
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme