Programiranje v Pythonu

Ko tudi učitelj ne more pomagati...
Odgovori
Soulfighter
Prispevkov: 8
Pridružen: 8.9.2012 17:00

Re: Programiranje v Pythonu

Odgovor Napisal/-a Soulfighter »

V bistvu print (a//b, "ost.", a%b), če smo pikolovski :wink:, ampak hvala za nasvet, je pomagalo. :)

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

Re: Programiranje v Pythonu

Odgovor Napisal/-a Aniviller »

fmf napisal/-a: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,...
No ja narcisi=set() daj, pa bo delalo. Saj vidiš da se je pritožil nad tem, da je "narcisi" bil slovar namesto množica.

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

Re: Programiranje v Pythonu

Odgovor Napisal/-a fmf »

Še vedno ne dela:

Izraz narcisoidi({'Ana' : {'Bine','Cene'},
'Bine' : set(),
'Cene' : {'Bine'},
'Davorka' : {'Davorka'},
'Eva' : {'Bine'}})
vrne None namesto {'Davorka'} (različna tipa).
- Izraz narcisoidi({}) vrne None namesto set() (različna tipa).
- Izraz narcisoidi({'Ana':{'Ana','Bine'}}) vrne None namesto {'Ana'} (različna tipa).

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

Re: Programiranje v Pythonu

Odgovor Napisal/-a Aniviller »

Najbrž si pozabil "return narcisi" ko si zapakiral v funkcijo. Začasna spremenljivka še ne pomeni da funkcija ve kaj vrnit :)

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

Re: Programiranje v Pythonu

Odgovor Napisal/-a fmf »

Tako je...na to vedno pozabim.

Hvala

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

Re: Programiranje v Pythonu

Odgovor Napisal/-a fmf »

Kaj pa, če moram vrniti množico ljubljenih?

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

Re: Programiranje v Pythonu

Odgovor Napisal/-a Aniviller »

Ma dodajaš jih v množico:

Koda: Izberi vse

def ljubljeni(d):
  zacasni=set()
  for clovek in d.keys():
    zacasni=set.union(zacasni,d[clovek])
  return zacasni
oziroma brezveze je komplicirat s ključi, ker lahko greš direktno po vnosih v slovar:

Koda: Izberi vse

def ljubljeni(d):
  zacasni=set()
  for ljudje in d.values():
    zacasni=set.union(zacasni,values)
  return zacasni

Spet imaš še hitrejšo varianto, ker lahko samo združiš d.values():

Koda: Izberi vse

def ljubljeni(d):
  return set.union(*d.values())
pri tem je * malo zabavna sintaksa, ki tabelo spremeni v zaporedne argumente. V stilu, če je
x=[1,2,3]
potem je
f(x)=f( [1,2,3] )
in
f(*x)=f(1,2,3)
Kjer prvi primer dobi en argument, ki je tabela, drugi primer pa dobi elemente kot argumente. V zgornjem primeru to pomeni, da unija dobi za argumente vse množice v slovarju.

Krajše pa se najbrž celo ne da :)

Poglej si vse načine, kako it po slovarju. Če rabiš, greš lahko po ključih in vnosih naenkrat, preko
for (key,value) in d.items(): #ali iteritems, ki je nekako manj potraten
Zadnjič spremenil Aniviller, dne 16.10.2013 21:01, skupaj popravljeno 1 krat.

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

Re: Programiranje v Pythonu

Odgovor Napisal/-a fmf »

Hvala...druga varianta ne dela....ker "values" ni definiran

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

Re: Programiranje v Pythonu

Odgovor Napisal/-a Aniviller »

Aja ups, "ljudje" namesto "values" :)
Malo preberi kaj pišem, po smislu, ne samo kopije.
Zadnjič spremenil Aniviller, dne 16.10.2013 21:07, skupaj popravljeno 1 krat.

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

Re: Programiranje v Pythonu

Odgovor Napisal/-a fmf »

Hm...zanimivo...še eno vprašanje...zakaj pri tej nalogi ne moremo uporabiti metode get?

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

Re: Programiranje v Pythonu

Odgovor Napisal/-a Aniviller »

Saj jo, get je skoraj isto kot [], z razliko da lahko default podaš če ga ni... samo to je jemanje eno po eno :) Je grše kot vse tri variante.

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

Re: Programiranje v Pythonu

Odgovor Napisal/-a fmf »

Neki me glede zapisa niza zanima....

Sestavite funkcijo limona(n), ki za parameter dobi naravno število n
in vrne niz oblike "Imaš n limon."', pri čemer mora biti seveda vse
pravilno sklanjano.

def limona(n):
if n%10==1:
return ("Imaš", n, "limono.")
else:
return None

Kako naj zapišem niz brez vejic?

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

Re: Programiranje v Pythonu

Odgovor Napisal/-a Aniviller »

Sej to ni niz, to je fiksni vektor treh komponent. Lahko ga sestaviš naivno:

"Imaš"+str(n)+"limono."

ali pa preko kakšne izmed funkcij tipa printf (recimo format).

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

Re: Programiranje v Pythonu

Odgovor Napisal/-a fmf »

Hvala....sem si malo pogledal format in je dosti zakomplicirana zadeva vidim...

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

Re: Programiranje v Pythonu

Odgovor Napisal/-a fmf »

def limona(n):
if n%100==1:
return "Imaš "+ str(n) +" limono."
if n%100==2:
return "Imaš "+ str(n) +" limoni."
if n%100==3:
return "Imaš "+ str(n) +" limone."
else:
return "Imaš "+str(n)+" limon."

Kaj naj bi blo tle narobe?

Odgovori