Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Zadaci za wannabe pythoniste

[es] :: Python :: Zadaci za wannabe pythoniste

Strane: 1 2 3 4 5 ... Dalje > >>

[ Pregleda: 50997 | Odgovora: 629 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

a1234567

Član broj: 46801
Poruke: 297
136.228.174.*



+3 Profil

icon Zadaci za wannabe pythoniste09.12.2019. u 02:58 - pre 52 meseci
Za ambiciozne pyhtoniste početnike materijala na engleskom koliko hoćeš, ali na srpskom slabo. Pa evo da ja kao isti takav početnik nešto doprinesem po tom pitanju, dok se ovi iskusniji ne reše da stvar preuzmu u svoje ruke.

U tu svrhu sam rešio da postavljam ovde zadatke iz knjige po kojoj radim, pa možda još nekom bude od koristi. Dakle, to je knjiga Al Sweigart: Automate The Boring Stuff With Python - Practical Programming For Total Beginners (No Starch Press, 2019). Da bi bilo zanimljivije, zamislio sam da postavim prvo output na ekranu koji treba da proizvede program. Na osnovu njega bi trebalo napisati kod. Naravno, u početku su to (za mnoge ovde) jednostavne stvari, ali kasnije će siguran sam naići i prave poslastice, da ne kažem korisne komplikacije :)

Koga bude zanimalo, nek postavi ovde svoje rešenje. A ja ću posle nekoliko dana postaviti i rešenje iz knjige, pa da uporedimo. Vidim da često pominju kako je isti zadatak moguće u pythonu rešiti na više načina, pa da vidimo koliko takvih rešenja ima. To je verujem odlična lekcija za proširivanje programerskih vidika :)

Eto zabave za sve prave i wannabe pythoniste. Uživajte!
 
Odgovor na temu

a1234567

Član broj: 46801
Poruke: 297
136.228.174.*



+3 Profil

icon Re: Zadaci za wannabe pythoniste09.12.2019. u 03:04 - pre 52 meseci
Dobro, posle akademskog uvoda, evo i konkretnog zadatka za danas.

Zadatak broj 1: Pogađanje zamišljenog broja

Ispis ekrana je sledeći. Koji je kod?

Zamislio sam jedan broj između 1 i 20.
Šta misliš koji je?

Unesi neki broj: 4
Tvoj broj je suviše mali.

Unesi neki broj: 17
Tvoj broj je suviše mali.

Unesi neki broj: 20
Tvoj broj je suviše velik.

Unesi neki broj: 18
Tvoj broj je suviše mali.

Unesi neki broj: 19
Bravo majstore! Pogodio si moj broj u 5 pokušaja!
 
Odgovor na temu

a1234567

Član broj: 46801
Poruke: 297
136.228.174.*



+3 Profil

icon Re: Zadaci za wannabe pythoniste09.12.2019. u 03:13 - pre 52 meseci
Da bi posao bio lakši, evo početnih redova koda:

# Ovo je igra pogađanja brojeva.
import random
tajniBroj = random.randint(1, 20)
print('Zamislio sam jedan broj između 1 i 20.')

E sad je pesma :)
 
Odgovor na temu

mjanjic
Šikagou

Član broj: 187539
Poruke: 2679



+690 Profil

icon Re: Zadaci za wannabe pythoniste09.12.2019. u 23:46 - pre 52 meseci
To možeš i u JS u nekoliko linija koda, Python je interesantan za nešto ozbiljnije, tipa programčić koji će da predvidi koji ćeš broj uneti ako te pita da uneseš broj između 1 i 20 :)
Blessed are those who can laugh at themselves, for they shall never cease to be amused.
 
Odgovor na temu

a1234567

Član broj: 46801
Poruke: 297
136.228.174.*



+3 Profil

icon Re: Zadaci za wannabe pythoniste10.12.2019. u 00:57 - pre 52 meseci
E dobro, pošto nas je Janjić ohrabrio (hvala mu!), možemo da krenemo dalje.

Ovde sam postavio rešenje zadatka broj 1.
 
Odgovor na temu

a1234567

Član broj: 46801
Poruke: 297
136.228.174.*



+3 Profil

icon Re: Zadaci za wannabe pythoniste10.12.2019. u 01:44 - pre 52 meseci
I da ne dangubimo, evo odmah i zadatka broj 2, koji se tiče korišćenja funkcija.

Reč je o nizu brojeva nazvanom "3x+1 problem" ili "Collatzov niz" (nazvan po nemačkom matematičaru Lotharu Collatzu, 1910-1990). Ja kad sam prvi put pročitao zadatak, nije mi baš bilo jasno, jer sam još od osnovne škole alergičan na matematiku :))), ali na drugo čitanje se malo razbistrilo. A zadatak je sledeći:

Napiši funkciju u nazovi je collatz(). Ona ima jedan parametar nazvan broj. Funkcija radi tako što za neki zadati broj, ako je paran, računa broj // 2 vrednost. Ako je uneti broj neparan, tada collatz() izračunava 3 * broj + 1 vrednost.

Kad si napravio tu funkciju, napiši program koji ti omogućuje da uneseš bilo koji pozitivan integer i potom stalno poziva funkciju collatz() na taj broj, sve dok funkcija ne dobije na kraju vrednost 1.

Neverovatno ili ne, ovo radi za svaki integer, jer pre ili kasnije, koristeći ovaj metod stižemo do 1! Čak ni matematičari nemaju pojma zašto je to tako. Zato se Collatzov niz naziva i "najjednostavniji nerešivi matematički problem".

Ne zaboravi da vrednost unetu na input() kovertuješ u integer pomoću int() funkcije. Inače će ostati string vrednost.

Hint: Integer broj je paran ako broj % 2 == 0, a neparan je ako broj % 2 == 1.

I na kraju, ispis programa na ekranu je nešto ovako:

Unesi broj:
3
10
5
16
8
4
2
1


Ajd sad, srećna radnja pythonisti.

PS. Janjić može ovo da rešava i u JS (al na drugom topiku), pa da uporedimo.

 
Odgovor na temu

Branimir Maksimovic

Član broj: 64947
Poruke: 5534
82.117.201.26



+1064 Profil

icon Re: Zadaci za wannabe pythoniste10.12.2019. u 14:42 - pre 52 meseci
U matematici se konvergiranje ka nekom broju stalno koristi. Recimo najpoznatija je newton rafson metoda konvergencije tangente ka 0 zato
sto se koristi za izracunavanje deljenja preko mnozenja i sabiranja u svrhu optimizacije na Intel procesorima. Imas neki moj uradak na podforumu
programiranje u asembleru.
 
Odgovor na temu

a1234567

Član broj: 46801
Poruke: 297
136.228.174.*



+3 Profil

icon Re: Zadaci za wannabe pythoniste11.12.2019. u 01:03 - pre 52 meseci
Hvala, Branimire, na poruci.
Imaš li rešenje za postavljeni zadatak?
 
Odgovor na temu

Branimir Maksimovic

Član broj: 64947
Poruke: 5534
109.72.51.23



+1064 Profil

icon Re: Zadaci za wannabe pythoniste11.12.2019. u 06:51 - pre 52 meseci
Ja rezignirano odbijam da pisem python, eto ti Rust:

Code:

fn main()->Result<(),String> {
    let args:Vec<_> = std::env::args().collect();
    let collatz = |n:i64|->i64 {
        if n & 1 == 1 {
            3*n+1
        } else {
            n/2
        }
    };
    let mut n = args[1].parse::<i64>().unwrap();
    while n != 1 { 
        println!("{}",n);
        n = collatz(n); 
    }
    Ok(())
}


Code:

~/examples >>> ./collatz 3                                                                                                                                                                                      
3
10
5
16
8
4
2

 
Odgovor na temu

bojan_bozovic

Član broj: 29028
Poruke: 3292
87.116.176.*

Sajt: angelstudio.org


+392 Profil

icon Re: Zadaci za wannabe pythoniste11.12.2019. u 07:21 - pre 52 meseci
Evo, u Adi.

Code:

with Ada.Text_IO;
with Ada.Integer_Text_IO;

use Ada.Text_IO;
use Ada.Integer_Text_IO;

procedure Collatztest is
   procedure Collatz (Arg : in out Integer) is
   begin
      if (Arg mod 2) = 0 then
         Arg := Arg / 2;
      else
         Arg := 3 * Arg + 1;
      end if;
      Ada.Integer_Text_IO.Put (Arg);
   end Collatz;
   Argument : Integer;
begin
   Ada.Text_IO.Put_Line ("Unesi celobrojnu vrednost:");
   Ada.Integer_Text_IO.Get (Argument);
   while Argument /= 1 loop
      Collatz (Argument);
   end loop;
   Ada.Text_IO.New_Line;
end Collatztest;



Moze i kao taj Rust kod da radi, malo drugaciji bi kod bio, uz Ada.Command_Line


[Ovu poruku je menjao bojan_bozovic dana 11.12.2019. u 09:14 GMT+1]
 
Odgovor na temu

a1234567

Član broj: 46801
Poruke: 297
136.228.174.*



+3 Profil

icon Re: Zadaci za wannabe pythoniste11.12.2019. u 08:22 - pre 52 meseci
Citat:
Ja rezignirano odbijam da pisem python, eto ti Rust:

Branimire, ko/šta te tako rezigniralo!?
Python je baš lep jezik :)


Citat:
Evo, u Adi.

Hvala, Bojane na trudu. Nisam probao, ali verujem da radi.

Jedino se pythonisti ne oglašavaju :)
Ali dobro, dok pripale mašinu, pa dok krenu... mi već na zadatku broj 5! :))
 
Odgovor na temu

Branimir Maksimovic

Član broj: 64947
Poruke: 5534
82.117.201.26



+1064 Profil

icon Re: Zadaci za wannabe pythoniste11.12.2019. u 10:50 - pre 52 meseci
"Branimire, ko/šta te tako rezigniralo!?"

Brzina Pythona. Ako hoces nesto ozbiljno da uradis
sve moras da radis preko nekog drugog jezika.
Python koristis samo kao lepak poziva f-ja drugog jezika.
 
Odgovor na temu

a1234567

Član broj: 46801
Poruke: 297
136.228.174.*



+3 Profil

icon Re: Zadaci za wannabe pythoniste11.12.2019. u 14:21 - pre 52 meseci
Dobro je, ja sam onda bezbedan. Dok ne stignem dotle, (ako ikada?) ima još dosta vode mutnim Dunavom da proteče. :)
 
Odgovor na temu

Branimir Maksimovic

Član broj: 64947
Poruke: 5534
109.72.51.23



+1064 Profil

icon Re: Zadaci za wannabe pythoniste11.12.2019. u 20:01 - pre 52 meseci
a vidi haskell tek sto je lep ;)

Code:

import System.Environment

main = do
    (n:[]) <- getArgs
    let callatz n = if n `mod` 2 == 0 then n `div` 2 else n * 3 + 1
        go n | n /= 1 = do
                   print n
                   go $ callatz n
             | otherwise = return n
    go $ read n


E sad napisi ti u pitonu...
 
Odgovor na temu

a1234567

Član broj: 46801
Poruke: 297
136.228.174.*



+3 Profil

icon Re: Zadaci za wannabe pythoniste12.12.2019. u 03:13 - pre 52 meseci
Pre svega je kratko, a ja volim minimalizam :)

Mada nisam siguran da je baš po standardu pisanje te petlje if - then u jednom redu. Zbog čitljivosti koda. Barem koliko sam shvatio to ne preporučuje python "pravopis".

Moje rešenje za zadatak br. 2 dajem u posebnom postu...
 
Odgovor na temu

a1234567

Član broj: 46801
Poruke: 297
136.228.174.*



+3 Profil

icon Re: Zadaci za wannabe pythoniste12.12.2019. u 03:14 - pre 52 meseci
Moje rešenje za zadatak br. 2: Collatzov niz možete pronaći
na ovom linku

Ima li još koje?
 
Odgovor na temu

Branimir Maksimovic

Član broj: 64947
Poruke: 5534
109.72.51.23



+1064 Profil

icon Re: Zadaci za wannabe pythoniste12.12.2019. u 05:17 - pre 52 meseci
Kad vec nitpikujes za if, ne ide ti print u collatz, to treba da bude f-ja koja obracunava vrednosti i ne radi nista vise
osim toga to radis redundantno.

 
Odgovor na temu

a1234567

Član broj: 46801
Poruke: 297
136.228.174.*



+3 Profil

icon Re: Zadaci za wannabe pythoniste12.12.2019. u 06:19 - pre 52 meseci
Hvala na komentaru. Početničke greške. Kao što i dolikuje jednom pravom početniku

Bože, kako je lepo biti početnik! Rasterećen si opsesije da moraš biti savršen.
To valjda dođe kasnije
 
Odgovor na temu

a1234567

Član broj: 46801
Poruke: 297
136.228.174.*



+3 Profil

icon Re: Zadaci za wannabe pythoniste12.12.2019. u 06:44 - pre 52 meseci
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.
 
Odgovor na temu

a1234567

Član broj: 46801
Poruke: 297
136.228.174.*



+3 Profil

icon Re: Zadaci za wannabe pythoniste12.12.2019. u 07:44 - pre 52 meseci
Evo stiže i zadatak broj 3: Nabrajanje!
Sasvim je jednostavan.
Unesemo četiri artikla i program ih na kraju izlista. S tim što iza svakog ubaci zarez, a pre poslednjeg artikla stavi veznik "i", kao što je i red.

Evo ispis ekrana. Boldom je označen unos, a plavim konačni ispis.

Unesi četiri artikla
prvi: so
drugi: biber
treći: hleb
cetvrti: voda
so, biber, hleb i voda


Naravno, ovo u Rustu ne mož da uradiš ni u ludilu, a o Adi i Haskellu ne vredi ni govoriti :D


 
Odgovor na temu

[es] :: Python :: Zadaci za wannabe pythoniste

Strane: 1 2 3 4 5 ... Dalje > >>

[ Pregleda: 50997 | Odgovora: 629 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.