Programiranje v Pythonu
Re: Programiranje v Pythonu
def kam_pa_kam(ukazi):
prevod={'F': 0, 'L': 1, 'B': 2, 'R': 3} #no lahko to tudi z if stavki, ki so lahko notri, ali pa v pomožni funkciji
i=0
x,y=0,0
smer=0 #na začetku gre gor
for i in ukazi:
smer += prevod
if smer==0:
y+=1
elif smer == 1:
x +=-1
elif smer==3 :
x += 1
else :
y += -1
return (x,y)
Samo to ni uredu, da smeri prištevam x in y....smer je samo ena spremenljivka kot ste jo vi označili. Bi dau kodo v verbatim okolju, samo ne prime nekaj
prevod={'F': 0, 'L': 1, 'B': 2, 'R': 3} #no lahko to tudi z if stavki, ki so lahko notri, ali pa v pomožni funkciji
i=0
x,y=0,0
smer=0 #na začetku gre gor
for i in ukazi:
smer += prevod
if smer==0:
y+=1
elif smer == 1:
x +=-1
elif smer==3 :
x += 1
else :
y += -1
return (x,y)
Samo to ni uredu, da smeri prištevam x in y....smer je samo ena spremenljivka kot ste jo vi označili. Bi dau kodo v verbatim okolju, samo ne prime nekaj
Re: Programiranje v Pythonu
Saj ne mešaš x in y s smerjo. Smer je oznaka smeri neba (v bistvu kot v enotah 90 stopinj), in glede na smer neba se odločiš ali se premakneš v x ali v y smer. Izgleda v redu. Tisti "code" okolje meni čisto lepo deluje.
Re: Programiranje v Pythonu
očitno je še neka napaka...
- Izraz kam_pa_kam('LFF') vrne (-3, 0) namesto (-2, 0) (numerična napaka).
- Izraz kam_pa_kam('RFRFRFRF') vrne (2, -6) namesto (0, 0) (numerična napaka).
- Izraz kam_pa_kam('FRFLFRFLFRFLFRF') vrne (2, -11) namesto (4, 4) (numerična napaka).
- Izraz kam_pa_kam('LFF') vrne (-3, 0) namesto (-2, 0) (numerična napaka).
- Izraz kam_pa_kam('RFRFRFRF') vrne (2, -6) namesto (0, 0) (numerična napaka).
- Izraz kam_pa_kam('FRFLFRFLFRFLFRF') vrne (2, -11) namesto (4, 4) (numerična napaka).
Re: Programiranje v Pythonu
Ja seveda, jaz sem ti samo glavno idejo narekoval... manjka ti modulo 4, in pa podrobno branje navodil, ki ti pove, da L in R samo vrtita in sploh ne premakneta želve. V tem primeru nekako izgubi smisel tisto prevajanje in seštevanje smeri, saj imaš samo dva primera, ni več kaj poenostavit... in ostaneš na temle:
Koda: Izberi vse
def kam_pa_kam(ukazi):
x,y = 0,0
smer=0 #najprej gor
for i in ukazi:
#dajmo si kar v naprej naprej/nazaj določit
korak=1
if i == 'L':
smer = (smer+1)%4
continue #ce se vrtimo, ne delamo korakov
elif i == 'R':
smer = (smer-1)%4
continue #ce se vrtimo, ne delamo korakov
elif i== 'F':
korak=1
elif i== 'B':
korak=-1
else:
print("ukaz "+i+" nima pomena\n")
continue
#sicer pa hodimo
if smer == 0:
y += korak
elif smer == 1:
x -= korak
elif smer == 2:
y -= korak
else:
x += korak
return (x,y)
Re: Programiranje v Pythonu
Točno ja...hvala:).
eno bi še imel iz Pythona, če lahko(3.naloga)
Ljubezen nam je vsem v pogubo
#
# Socialno omrežje zaljubljenosti podamo s slovarjem, ki ime osebe
# preslika v množico vseh, v katere je oseba zaljubljena (ena oseba
# je lahko zaljubljena v več oseb). Na primer, slovar
#
# s = {'Ana' : {'Bine','Cene'},
# 'Bine' : set(),
# 'Cene' : {'Bine'},
# 'Davorka' : {'Davorka'},
# 'Eva' : {'Bine'}}
#
# nam pove, da je Ana zaljubljena v Bineta in Cenete, Bine ni
# zaljubljen, Cene ljubi Bineta, Davorka samo sebe in Eva Bineta.
#######################################################################@@#
##################################################################@000012#
# 1) Sestavite funkcijo narcisoidi(d), ki sprejme slovar zaljubljenih
# in vrne _monžico_ tistih, ki ljubijo same sebe.
##################################################################000012@#
def narcisoidi(d):
narcisi=set()
for clovek in d.keys():
if clovek in d[clovek]:
narcisi.add(clovek)
return narcisi
##################################################################@000013#
# 2) Sestavite funkcijo ljubljeni(d), ki sprejme slovar zaljubljenih
# in vrne _množico_ tistih, ki so ljubljeni.
##################################################################000013@#
def ljubljeni(d):
zacasni=set()
for clovek in d.keys():
zacasni=set.union(zacasni, d[clovek])
return zacasni
##################################################################@000014#
# 3) Sestavite funkcijo pari(d), ki sprejme slovar zaljubljenih
# in vrne _množico_ vseh parov, ki so srečno ljubljeni. Vsak
# par naj se pojavi samo enkrat in sicer tako, da je sta zaljubljenca
# našteta po abecedi. Na primer, če sta Ana in Bine zaljubljena,
# dodamo par ('Ana','Bine').
##################################################################000014
eno bi še imel iz Pythona, če lahko(3.naloga)
Ljubezen nam je vsem v pogubo
#
# Socialno omrežje zaljubljenosti podamo s slovarjem, ki ime osebe
# preslika v množico vseh, v katere je oseba zaljubljena (ena oseba
# je lahko zaljubljena v več oseb). Na primer, slovar
#
# s = {'Ana' : {'Bine','Cene'},
# 'Bine' : set(),
# 'Cene' : {'Bine'},
# 'Davorka' : {'Davorka'},
# 'Eva' : {'Bine'}}
#
# nam pove, da je Ana zaljubljena v Bineta in Cenete, Bine ni
# zaljubljen, Cene ljubi Bineta, Davorka samo sebe in Eva Bineta.
#######################################################################@@#
##################################################################@000012#
# 1) Sestavite funkcijo narcisoidi(d), ki sprejme slovar zaljubljenih
# in vrne _monžico_ tistih, ki ljubijo same sebe.
##################################################################000012@#
def narcisoidi(d):
narcisi=set()
for clovek in d.keys():
if clovek in d[clovek]:
narcisi.add(clovek)
return narcisi
##################################################################@000013#
# 2) Sestavite funkcijo ljubljeni(d), ki sprejme slovar zaljubljenih
# in vrne _množico_ tistih, ki so ljubljeni.
##################################################################000013@#
def ljubljeni(d):
zacasni=set()
for clovek in d.keys():
zacasni=set.union(zacasni, d[clovek])
return zacasni
##################################################################@000014#
# 3) Sestavite funkcijo pari(d), ki sprejme slovar zaljubljenih
# in vrne _množico_ vseh parov, ki so srečno ljubljeni. Vsak
# par naj se pojavi samo enkrat in sicer tako, da je sta zaljubljenca
# našteta po abecedi. Na primer, če sta Ana in Bine zaljubljena,
# dodamo par ('Ana','Bine').
##################################################################000014
Re: Programiranje v Pythonu
A nisva to dala skozi že par mesecev nazaj?
Na najbolj naiven način greš lahko kar po vseh parih in pogledaš če se ujemata. Za ta namen je namesto kar surovega iteriranja (for človek in spisek) lažje it kar po indeksih. Jaz bi si najprej naredil seznam ljudi:
ljudje=s.keys()
ljudje.sort() #če tu sortiraš, je vrstni red potem že v redu
in potem
Na najbolj naiven način greš lahko kar po vseh parih in pogledaš če se ujemata. Za ta namen je namesto kar surovega iteriranja (for človek in spisek) lažje it kar po indeksih. Jaz bi si najprej naredil seznam ljudi:
ljudje=s.keys()
ljudje.sort() #če tu sortiraš, je vrstni red potem že v redu
in potem
Koda: Izberi vse
for i in range(len(ljudje)):
for j in range(i+1,len(ljudje)):
if ljudje[i] in s[ljudje[j]] and ljudje[j] in s[ljudje[i]]:
#izpis
Re: Programiranje v Pythonu
Ok, hvala...za to funkcijo sort nisem vedel...
Re: Programiranje v Pythonu
Python je od programskih jezikov najbližje temu, da mu samo rečeš kaj hočeš in se zgodi. Če si zamisliš nek algoritem in napišeš kar misliš, marsikdaj že kar dela. Pythonu rečejo tudi "executable pseudo-code" Sicer pa seveda google odgovori v eni potezi če nekaj iščeš. stackoverflow.com je ponavadi med prvimi zadetki.
Re: Programiranje v Pythonu
Ja, sej google je skrajna varianta, ponavadi ni podobnih primerov.
Pri tej 3. nalogi je tale vrstica mal čudna: if ljudje in d[ljudje[j]] and ljudje[j] in d[ljudje]
Ključi slovarja ne podpirajo indeksiranja...
Pri tej 3. nalogi je tale vrstica mal čudna: if ljudje in d[ljudje[j]] and ljudje[j] in d[ljudje]
Ključi slovarja ne podpirajo indeksiranja...
Re: Programiranje v Pythonu
Sej nisem mislil da celo nalogo googlaš. Googlaš kar rabiš. Recimo da rabiš sort. Ali da rabiš način, kako dobit ključe slovarja ali kako iterirat po spisku, obrnit vrstni red seznama,... v tem stilu.Ja, sej google je skrajna varianta, ponavadi ni podobnih primerov.
Sicer tista vrstica... ne bi smela bit problem, če si prav predstavljam. "ljudje" bi moral biti list, ker ga dobiš iz .keys(), in bi moral podpirat indeksiranje, če ne ga pa lahko narediš z list(ljudje) če si v dvomih. Po drugi strani mora ljudje[j] dat ven ime človeka, ki bi ga moral slovar d[] sprejet kot argument. In potem bi operator "in" moral preverit, če je stvar notri (pa naj bo d[človek] "list" ali pa "set"). Če si v dvomih, lahko še tega pretvoriš v set ali list eksplicitno. Če nič ne dela, si naredi print(ljudje) in print(ljudje) da vidiš kje je problem. Mogoče so tipi napačni.
Re: Programiranje v Pythonu
Ja, sem poskusil (list(d.keys()). Na koncu dam return ljudje....
Samo ta funkcija ne bo vrnila parov, kot je zahtevano v nalogi
Samo ta funkcija ne bo vrnila parov, kot je zahtevano v nalogi
Re: Programiranje v Pythonu
Ja ok, tega ti nisem pisal, nekam si jih moraš beležit ja. Ko najdeš par, dodaš (ljudje,ljudje[j]) v nek seznam, ki ga počasi gradiš in na koncu vrneš.fmf napisal/-a:Ja, sem poskusil (list(d.keys()). Na koncu dam return ljudje....
Samo ta funkcija ne bo vrnila parov, kot je zahtevano v nalogi
Re: Programiranje v Pythonu
zdej sem pa že blizu....
return sem verjetno narobe zamaknil?
Koda: Izberi vse
def pari(d):
ljudje=list(d.keys())
sorted(ljudje)
seznam=[]
for i in range(len(ljudje)):
for j in range(i+1,len(ljudje)):
if ljudje[i] in d[ljudje[j]] and ljudje[j] in d[ljudje[i]]:
seznam.append((ljudje[i],ljudje[j]))
return seznam
Re: Programiranje v Pythonu
ZELO narobe zamaknil, takoj ti vrne ko najde prvi par. Izven "for" zank mora bit.
Re: Programiranje v Pythonu
Kako naj zamaknem retrun, da bo izven for zank?