Opet gotovani. U zadnje vrijeme barem 3 dnevno.
Python - pomoć oko zadatka
- poruka: 131
- |
- čitano: 81.846
- |
- moderatori:
Lazarus Long, XXX-Man, vincimus
1. zadatak
G = int(input('Unesi godinu:'))
print('Godina {}. pripada {}. stoljeću.'.format(G, ((G - 1) // 100) + 1))
2. zadatak
from itertools import cycle
N = int(input('Broj koraka:'))
print('Nakon {} koraka natjecatelj se popeo {} stuba.'.format(N, sum(stepenice for korak, stepenice in zip(range(N), cycle(range(1, 4))))))
mnogo hvala, nov sam u pythonu i želio bih naučiti više o njemu, Vi ste mi puno pomogli
mnogo hvala, nov sam u pythonu i želio bih naučiti više o njemu, Vi ste mi puno pomogli
Nadam se da shvacas da ce bilo kojem profesoru biti jasno da ono nije tvoj kod posto nije na razini pocetnika...
Vjeruj mi, to je riješeno
1.Martina je za rodendan svoje prijatelje pozvala na druzenje. Narucili su pizzu koja je bila narezana na K dijelova. Ako Martinu i njezine prijatelje oznacimo brojevima od 1 do N, komad pizze najprije je uzela osoba 1, pa osoba 2 i tako dalje do osobe N, nakon cega je novi komad pizze ponovno uzela osoba 1, pa osoba 2 i tako dalje redom... Zadatak je odgovoriti na pitanje: koja je osoba uzela posljednji komad?
2. Slucajno odaberi broj N (koji ima paran broj znamenki) te ga podijeli po sredini kako bi dobila 2 nova broja s jednakim brojem znamenki. Na kraju oduzmi manji od veceg tako dobivenog broja. Napisi program koji ce za zadani prirodan broj ispisati razliku dobivenih brojeva.
3. Kresimir je od mame dobio N bajadera. Kresimir je jednu bajaderu dao tati, jednu mami, jednu sestri, a ostatak je sam pojeo. Koliko je bajadera POJEO Kresimir?
bili netko znao nesto od ovoga napisati u jeziku pythona
Program učitava N brojeva s tipkovnice (svaki broj je u svom retku). Ispisuje najmanji pozitivni broj.
Primjer:
Ulaz:
4
-11
1
0
2
Izlaz:
1
Program upisuje N brojeva u jednom retku (brojevi su odvojeni jednim praznim mjestom). Ispisuje sumu dvoznamenkastih brojeva.
Primjer:
Ulaz:
2 3 11 4 15
Izlaz:
26
Program učitava dva niza imena. Svaki niz učitava u jednom retku. Ispisuje novi niz u kojem se nalaze sva imena sortirana u uzlaznom poretku.
Primjer:
Ulaz:
Ana Marko Iva
Pero Luka
Izlaz:
Ana Iva Luka Marko Pero
Marko voli istraživati kartaške igre. Jedna od njih je takva da igrač izvlači kartu po kartu s vrha špila te radi sljedeće:
- svaku drugu kartu izbaci iz špila počevši od 2.
- ako je zadnja karta 3, 6 ili 9 igrač je pobjednik
Napišite program koji učitava niz od N karata te ispisuje je li igrač pobjednik.
Primjer:
Ulaz:
2 1 3 4 6 5
Izlaz:
Igrač je pobjednik
Uradio sam prva dva da te motivišem da ostale uradiš sam
Prvi:
import sys
print("Unesite brojeve")
najmanji = sys.maxsize
unos = 0
while True:
unos = input()
if unos == "kraj":
break
if int(unos) < int(najmanji) and int(unos) > 0:
najmanji = unos
print (najmanji)
Drugi mozda ovako
print("Unesite brojeve")
unos = input()
brojevi = sum([int(broj) for broj in unos.split(" ") if int(broj) > 9 and int(broj) < 100])
print (brojevi)
Prvi zadatak nemam jer nije jasno navedeno kad treba prestati s unosom brojeva.
Pitanje 2
print(sum(int(broj) for broj in input().split() if len(broj) == 2))
Pitanje 3
print(' '.join(sorted(input().split() + input().split())))
Pitanje 4
print('Igrač je pobjednik' if (input().split()[::2][-1] in ['3', '6', '9']) else 'Igrač nije pobjednik')
Ako bi neko znao rjesiti, bio bih mu veoma zahvalan.
1) Napisati funkciju koja odredjuje najkraci put konja po sahovskoj table koja povezuje dva data polja table.
2)Definisati funkciju join(dat1, dat2).Argumenti funkcije su datoteke.Svrha funkcije je da formira novu datoteku na osnovu dat1 I dat2,tako sto ce nadovezati sadrzaj druge na sadrzaj prve prema zajednickim poljima.
3)Napisati funkciju koja za argumente prihvata naziv datoteke,karakter i korak(cio broj).
Program treba da izmijeni datoteku,tako sto ce na svim pozicijama ciji je indeks djeljiv korakom izmijeniti postojeci karakter onim karakterom koji je proslijedjen kao argument funkciji.
Ako bi neko znao rjesiti, bio bih mu veoma zahvalan.
1) Napisati funkciju koja odredjuje najkraci put konja po sahovskoj table koja povezuje dva data polja table.
2)Definisati funkciju join(dat1, dat2).Argumenti funkcije su datoteke.Svrha funkcije je da formira novu datoteku na osnovu dat1 I dat2,tako sto ce nadovezati sadrzaj druge na sadrzaj prve prema zajednickim poljima.
3)Napisati funkciju koja za argumente prihvata naziv datoteke,karakter i korak(cio broj).
Program treba da izmijeni datoteku,tako sto ce na svim pozicijama ciji je indeks djeljiv korakom izmijeniti postojeci karakter onim karakterom koji je proslijedjen kao argument funkciji.
Nisi se udostojio napisati ni koji jezik hoces, a kamoli sam probati rijesti zadatke...
Joj, ekipa tko ih šljivi...sve hoće na gotovo...Ako netko hoće neka im riješava zadatke, al' kako narod veli kako pomoći siromahu....baci ga u raku....
Tako će najbolje naučiti.
Prvi zadatak ("Napisati funkciju koja odredjuje najkraci put konja po sahovskoj table koja povezuje dva data polja table."):
def neighbours(pos):
col = ord(pos[0])
row = ord(pos[1])
candidates = ((chr(row + d_r), chr(col + d_c)) for d_r, d_c in
[(2, -1), (2, 1), (-2, -1), (-2, 1), (1, -2), (1, 2), (-1, -2), (-1, 2)])
return (c + r for r, c in candidates if '1' <= r <= '8' and 'a' <= c <= 'h')
def bfs(start, goal):
if start == goal:
return start
queue = [[start]]
visited = {start}
while queue:
path = queue.pop(0)
for neighbour in neighbours(path[-1]):
if neighbour == goal:
return ' '.join(path + [neighbour])
if neighbour not in visited:
queue.append(path + [neighbour])
visited.add(neighbour)
print(bfs('a1', 'a1')) # a1
print(bfs('a1', 'c2')) # a1 c2
print(bfs('a1', 'b2')) # a1 b3 a5 c4 b2
print(bfs('a1', 'h8')) # a1 b3 a5 b7 d8 f7 h8
Treći zadatak:
def funkcija(naziv_datoteke, karakter, korak):
with open(naziv_datoteke, 'r+') as f:
podaci = f.read()
f.seek(0)
f.write(''.join(znak if i % korak else karakter for i, znak in enumerate(podaci, 1)))
Pozdrav svima imam nekoliko zadataka koji su mi hitni za školu pa ako mi netko možze poslati rješenja na mail:mata.hr@hotmail.com
1.Napiši program koji će ispisati 3 znamenkaste brojeve čija je suma prve dvije znamenke djeljiva s 3.
2.Nparavite program koji će brojati koliko je unešenih prostih brojeva. Program će primati za unos cjele brojeve dokle god ne unesete broj 16
3. Napravite program koji će za 5 učitanih unesenih brojeva ispisati onaj čiji je zbroj znamenaka najveći
Unaprijed hvala
1.
print('\n'.join(str(i) for i in range(100, 1000) if (i // 100 + i // 10 % 10) % 3 == 0))
2.
broj_prostih = 0
while True:
broj = int(input('Unesi broj:'))
if broj == 16:
break
if broj > 1 and all(broj % i for i in range(2, broj)):
broj_prostih += 1
print('Broj unešenih prostih brojeva:', broj_prostih)
3.
print(max((input('Unesi broj:') for _ in range(5)), key=lambda x: sum(int(c) for c in x)))
Ako Vam nebi bio problem prvi i treci da mi napišete kao i drugi bez ovih sum,key=lambda pošto sa time još nismo učili. Hvala !
1.Napiši program koji će ispisati 3 znamenkaste brojeve čija je suma prve dvije znamenke djeljiva s 3.
2.Nparavite program koji će brojati koliko je unešenih prostih brojeva. Program će primati za unos cjele brojeve dokle god ne unesete broj 16
3.Napravite program koji će za 5 učitanih unesenih brojeva ispisati onaj čiji je zbroj znamenaka najveći
Ako netko moze pomoći nekoristeći one funkcije sum,lambda..
Znači, dobio sam nove zadatke, ali ovaj put sam se sam potrudio riješiti zadatke.
1. Znamo da postoje četiri godišnja doba: proljeće, ljeto, jesen i zima. Iz službenih podataka Državnog hidrometeorološkog zavoda za 2013. godinu možemo zaključiti sljedeće: zima je trajala od 1. siječnja do 19. ožujka te od 21. prosinca do 31. prosinca; proljeće je počelo 20. ožujka te trajalo do 20. lipnja; ljeto je počelo 21. lipnja te trajalo do 21. rujna; jesen je počela 22. rujna te je trajala do 20. prosinca. Napiši program koji za jedan konkretan i ispravan datum u 2013. godini ispisuje koje je godišnje doba u tom trenutku bilo u tijeku.
Evo sad koliko sam ja uspio riješiti.
input (D)
input (M)
if (M < 3) print ('Zima')
if (M = 3) i (D < 20)
print ('Zima')
else
print ('Proljece')
if (M > 3) i (M < 6) print ('Proljece')
if (M = 6) i (D < 21)
print ('Proljece')
else
print ('Ljeto')
if (M > 6) i (M < 9) print ('Ljeto')
if (M = 9) i (D < 22)
print ('Ljeto')
else
print ('Jesen')
if (M > 9) i (M < 12) print ('Jesen')
if (M = 12) i (D < 21)
print ('Jesen')
else
print ('Zima')
Znam da sam jako blizu tog zadatka, ali mi nešto fali.
Isto je is s drugim.
2. Za svaku od N fotografija moramo provjeriti ima li na vanjskom tvrdom disku, u trenutku pokušaja spremanja, dovoljno prostora da se ona cijela spremi na njega. Ako nema, tada ćemo neku pomoćnu varijablu povećati za jedan. Ako ima, smanjit ćemo veličinu raspoloživog prostora na disku za veličinu te slike.
input(disk)
input(N)
koliko = 0
for i in range (1, N + 1)
input (slika)
if disk - slika < 0
koliko = koliko + 1
else
disk = disk – slika
print(koliko)
To je to. Vrlo bi cijenio da mi netko pomogne. Unaprijed hvala.
Moraš razlikovati sljedeće:
if(x == 1)
print("1")
else
print("Nije 1")
Ako je x = 1, ispiši "1". Inače, ispiši "Nije 1".
if(x == 1)
print("1")
elif(x == 2)
print("2")
else
print("Nije ni 1 ni 2")
Ako je x=1, ispiši "1". Ako nije 1, je li x=2? Ako je ispiši "2". Inače, ispiši "Nije ni 1 ni 2".
Prouči detaljnije tu: https://www.tutorialspoint.com/python/python_if_else.htm [5 minuta]
Također, moraš razlikovati = i ==. Jedna jednakost je pridruživanje, npr. varijabli X želiš pridružiti broj 5, onda pišeš X = 5. Ako se pitaš je li X jednak 5, onda pišeš X == 5 (Natrag dobivas True/False).
Kad to shvatiš, biti će ti jasno što griješiš i znati ćeš ispravno riješiti zadatke :)
Hvala, i to je također pomoglo, ali ono što mene primarno zanima (i problem s kojim se suočavam u ovom zadatku) jest syntax error. Što je to i kako ispraviti? Našao sam na nekoj stranici da je to (najčešće) problem sa print naredbama, ali nemam pojma kako to ispraviti. Također sam u prethodnom pitanju označio dijelove koda na kojima imam "Invalid Syntax" greške.
Pogledaj još jedan puta link koji sam ti poslao. Tamo ti se lijepo objašnjava sintaksa if/else naredbi:
if expression:
statement(s)
else:
statement(s)
Prouči još jednom i napiši svoj kod po tome. Ako nakon toga budeš imao pitanja, tu sam.
Pozdrav,
Nadam se da mi netko može pomoći.
Od broja upisanog od korisnika želim ispisati prvi veći broj i prvi manji broj od svih permutacija broja unesenog od strane korisnika.
Probao sam naći rješenje, ali više stvarno nemam ideje :)
Permutacije mi nije problem dobiti, ali neznam kako da for petljom (ili nekom drugom) dođem do točno prvog većeg/manjeg broja.
import itertools
print ('Please enter a number')
userInput = input()
simpleList = []
userList = list(itertools.permutations(userInput))
print("\n")
print('Permutations are following:')
for i in userList:
simpleList.append("".join(i))
for i in simpleList:
print(i)
print('Of all permutations first greater number than user input is: ')
#First greater number
print('Of all permutations first lower number than user input is: ')
#First lower number
Hvala unaprijed
Pozdrav,
Nadam se da mi netko može pomoći.
.....
Riješio na ovaj način
import itertools
print ('Please enter a number')
userInput = input()
simpleList = []
userList = list(itertools.permutations(userInput))
simpleList= []
for i in userList:
simpleList.append(int("".join(i)))
list.sort(simpleList)
userInput = int(userInput)
print(simpleList,)
if (len(simpleList)) >= 3:
print('First lower number is:')
print(simpleList[simpleList.index(userInput)-1])
print('First greater number is:')
print(simpleList[simpleList.index(userInput)+1])
else:
print("Number don't have enough digits for permutations")
Nije loše, ali predlažem par izmjena.
Input funkcija može prikazati prompt pa ti ne treba print:
userInput = input('Please enter a number:')
Varijablu simpleList ne treba dvaput inicijalizirati, a listu permutacija možeš staviti direktno u for petlju:
simpleList = []
for i in itertools.permutations(userInput):
simpleList.append(int("".join(i)))
Ova tri retka možeš pretvoriti u one-liner pomoću list comprehensiona ako ti je dovoljno čitljivo:
simpleList = [int("".join(i)) for i in itertools.permutations(userInput)]
Listu simpleList je bolje sortirati pozivom metode same instance (umjesto "naopako", pozivom metode klase s instancom kao argumentom)
simpleList.sort()
Preostaje samo manji detalj oko zadnjeg bloka s ispisim rezultata - ne radi ako je uneseni broj prvi ili zadnji.
1. Ako se upiše 123 program ispisuje da je prvi manji broj 321: indeks 123 u nizu permutacija [123, 132, 213, 231, 312, 321] je 0 pa je simpleList[0 - 1] zadnji (najveći) element liste.
2. Ako se upiše 321 program puca sa "list index out of range" kod ispisa prvog većeg broja: indeks 321 u nizu permutacija [123, 132, 213, 231, 312, 321] je 5 pa simpleList[5 + 1] generira exception.
Jednostavnije je prije ispisa provjeriti da li je indeks prvi/zadnji:
inputIndex = simpleList.index(userInput)
if inputIndex - 1 >= 0:
print('First lower number is:', simpleList[inputIndex - 1])
if inputIndex + 1 < len(simpleList):
print('First greater number is:', simpleList[inputIndex + 1])
Odlične izmjene, jako mi se sviđa način rješenja.
Čudno mi je da Comparison operatorom ne mogu postaviti uvjet u slučaju kada je permutacija user inputa jednaka incijalnom inputu.
Npr. kada je broj 966 u pitanju.
if inputIndex + 1 < len(simpleList):
print('First greater number is:', simpleList[inputIndex + 1])
elif inputIndex + 1 == len(simpleList):
print('Permutation have same value as user input!')
else:
print('There are no greater number!')
Zna li netko što propuštam ?
Program javlja "First greater number is: 966", a ti (pretpostavljam) očekuješ "Permutation have same value as user input!".
Funkcija itertools.permutations daje permutacije po poziciji, a ne po vrijednosti. Za broj 966 simpleList ima 6 elemenata [669, 669, 696, 696, 966, 966] (tj. lista sadrži duplikate). Metoda liste index daje poziciju prvog itema za zadanu vrijednost pa je inputIndex = 4. To je predzadnji (boldani) item pa ti se kao rezultat ispisuje slijedeći (zadnji) broj - koji je isto 966.
Ili izbaci duplikate iz simpleList, ili kod ispisa većeg broja provjeri da li je jednak userInput-u.
Pozdrav. Nov sam na forumu, pa bi mi trebala pomoc. Naime, imam problem oko jednog zadatka i nikako ne mogu da ga rijesim.
Isprogramirati rad GUI-a,tako sto ce prije otvaranja samog GUI-a korisnik morati da unese broj n.Kad se GUI prikaze,korisniku na raspolaganje treba da budu checkbox-ovi formata nxn(u matricnom obliku).Otvaranje nekog checkbox-a program treba da oznaci sve checkbox-ove koji se nalaze u vrsti i koloni u kojoj se nalazi oznaceni checkbox.
Problem je u tome sto ne znam kako da napravim funkciju koja ce oznacitii vrstu i kolonu koja treba biti oznacena.
Ako za GUI koristiš paket tkinter jedan način je da napraviš funkciju koja prima redak i stupac pa označuje sve Checkbutton-e u istom retku i istom stupcu. Problem što Checkbutton-ov parametar command prima samo funkcije bez parametara možeš riješiti pomoću functools.partial:
from functools import partial
def oznaci(redak, stupac):
...
for redak in range(n):
for stupac in range(n):
Checkbutton(..., command=partial(oznaci, redak, stupac))