Programiranje v Pythonu

Ko tudi učitelj ne more pomagati...
Odgovori
fmf
Prispevkov: 210
Pridružen: 28.6.2012 16:02

Re: Programiranje v Pythonu

Odgovor Napisal/-a fmf »

Živjo, eno nalogco bi meu iz permutacij:

Sestavite funkcijo slike(permutacija, x, n), ki vrne zaporedje slik,
ki ga dobimo, če začnemo s številom x in na njem n-krat uporabimo
permutacijo permutacija.

>>> slike({1: 3, 2: 4, 3: 2, 4: 1}, 1, 2)
[1, 3, 2]

Hvala!

Uporabniški avatar
Aniviller
Prispevkov: 7263
Pridružen: 15.11.2004 18:16

Re: Programiranje v Pythonu

Odgovor Napisal/-a Aniviller »

Lahko gres z rekurzijo:

Koda: Izberi vse

def slike(permutacija,x,n):
   if n==1:
    return [x]
   elsif n==2:
     return [x,permutacija[x]]
   else:
     preostanek=slike(permutacija,permutacija[x],n-1)
     preostanek.insert(0,x)
     return preostanek 
V principu n==2 ne rabis ampak se mi zdi malo butasto rekurzijo klicat za tisti primer :)

fmf
Prispevkov: 210
Pridružen: 28.6.2012 16:02

Re: Programiranje v Pythonu

Odgovor Napisal/-a fmf »

Hvala...je še ena napaka, ker vrne napačno dolžino seznama...glede na protiprimere, ki mi jih vrne v Idle-u(vrne seznam dolžine 2) se mi zdi, da funckija dela samo za n=1 in n=2...

Uporabniški avatar
Aniviller
Prispevkov: 7263
Pridružen: 15.11.2004 18:16

Re: Programiranje v Pythonu

Odgovor Napisal/-a Aniviller »

Ok razen elif/elsif popravka pri meni dela:

Koda: Izberi vse

print(slike({1: 3, 2: 4, 3: 2, 4: 1}, 1, 3))
[1, 3, 2]

print(slike({1: 3, 2: 4, 3: 2, 4: 1}, 1, 5))
[1, 3, 2, 4, 1]

fmf
Prispevkov: 210
Pridružen: 28.6.2012 16:02

Re: Programiranje v Pythonu

Odgovor Napisal/-a fmf »

Lepo prosim za malo pomoči pri naslednji nalogi...
Collatzovo zaporedje
#
# Naj bo $a_0$ naravno število. Za vsak indeks $i$ definiramo: Če je
# število $a_i$ sodo, je $a_{i+1}=a_i/2$, sicer pa je $a_{i+1}=3a_i+1$.
#
# Collazova domneva pravi, da za vsako naravno število $n$ Collatzovo
# zaporedje z začetnim členom $a_0=n$ vsebuje število $1$. Najmanjši
# indeks $i$, za katerega je $a_i=1$, imenujemo indeks ustavitve
# Collatzovega zaporedja.

1.)Napišite program, ki bo za dani začetni člen n izpisal naslednji člen
# Collatzovega zaporedja.

moja rešitev:

def collatz(k):
if k%2==0:
return k//2
else:
return 3*k+1

Kaj je tukaj narobe?

Uporabniški avatar
Aniviller
Prispevkov: 7263
Pridružen: 15.11.2004 18:16

Re: Programiranje v Pythonu

Odgovor Napisal/-a Aniviller »

Jaz ne vidim nic narobe. Enko verjetno hoces zunaj lovit ko klices to funkcijo.

fmf
Prispevkov: 210
Pridružen: 28.6.2012 16:02

Re: Programiranje v Pythonu

Odgovor Napisal/-a fmf »

Napako mi vrne

Podnaloga 1 ni prestala vseh testov:
- Izpisati morate le eno celo število.

Uporabniški avatar
Aniviller
Prispevkov: 7263
Pridružen: 15.11.2004 18:16

Re: Programiranje v Pythonu

Odgovor Napisal/-a Aniviller »

Funkcija ze v redu dela, mogoce moras za to avtomatsko testiranje tako napisat, da ne samo definiras funkcijo ampak napises cel program, ki na vhodu sprejme stevilo, ga poslje v to funkcijo ki jo imas, in resitev izpise. Ker ce definiras samo funkcijo, ne mores pricakovat da bo avtomatika uganila kako jo klicat.

fmf
Prispevkov: 210
Pridružen: 28.6.2012 16:02

Re: Programiranje v Pythonu

Odgovor Napisal/-a fmf »

Začnem s k=0 in dam na koncu print(k)?

Uporabniški avatar
Aniviller
Prispevkov: 7263
Pridružen: 15.11.2004 18:16

Re: Programiranje v Pythonu

Odgovor Napisal/-a Aniviller »

Ma po moje ni to... malo sem pomislil, da bi se to testiralo avtomaticno kot

python moja_koda.py 15
ali
moja_koda.py 15
ce si na operacijskem sistemu s katerim se da delat...
in bi dobil ven 46. Ampak dvomim da je to, ker sem siguren da na windowsih se to ne pricakuje.

A to je neko spletno avtomatsko preverjanje? Ali imas polno navodilo oziroma navodila, v kaksni obliki hocejo to imet? Ker sama funkcija, ce jo jaz prepisem v svoj python in pozenem, vrne tocno to kar pricakujes.

fmf
Prispevkov: 210
Pridružen: 28.6.2012 16:02

Re: Programiranje v Pythonu

Odgovor Napisal/-a fmf »

######################################################################@@#
# 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.

Kako naj naredim prvo nalogo?

Uporabniški avatar
Aniviller
Prispevkov: 7263
Pridružen: 15.11.2004 18:16

Re: Programiranje v Pythonu

Odgovor Napisal/-a Aniviller »

Pa to je še najlažje kar si lahko izmisliš. Ena, naivna varianta je, da enostavno inicializiraš prazno množico
narcisi=set()
in greš z zanko skozi:
for clovek in s.keys():
if clovek in s[clovek]:
narcisi.add(clovek)

Da se pa celo v eni vrstici, če uporabljaš tiste konstruktorje:
narcisi=set([ clovek for clovek in s.keys() if clovek in s[clovek] ])

Soulfighter
Prispevkov: 8
Pridružen: 8.9.2012 17:00

Re: Programiranje v Pythonu

Odgovor Napisal/-a Soulfighter »

Tole me bo sram napisat, ampak če ti programiranje res ne leži ... :oops:

Naloga zahteva, da napišeš program, ki za vhodni števili izračuna in izpiše celoštevilčni rezultat deljenja in ostanek pri deljenju.
npr. 23, 5 [vhodna podatka]; celoštevilčni rezultat deljenja: 4; rezultat: 3

Za prvi dve vrstici napišem
a = int(input("Vnesi deljenec: "))
b = int(input("Vnesi delitelj: "))
potem pa se mi ne sanja (še za ti dve vrstici nisem 100 %).

Vem, da se % uporablja za celoštevilčni ostanek pri deljenju, kako to vpisati v program pa ne vem. :|

Uporabniški avatar
Aniviller
Prispevkov: 7263
Pridružen: 15.11.2004 18:16

Re: Programiranje v Pythonu

Odgovor Napisal/-a Aniviller »

Ja noben se ne rodi pameten, beri dokumentacijo, zato je tam :)
V Pythonu je // operator za celoštevilsko deljenje
Sicer pa potem samo
print(a//b)

fmf
Prispevkov: 210
Pridružen: 28.6.2012 16:02

Re: Programiranje v Pythonu

Odgovor Napisal/-a fmf »

def narcisoidi(d):
narcisi={}
for clovek in d.keys():
if clovek in d[clovek]:
narcisi.add(clovek)

Pri tej kodi mi napiše: 'dict' object has no attribute 'add'

Ne dela mi tudi z join, append,...

Odgovori