Programiranje v Pythonu
Re: Programiranje v Pythonu
Očitno je biu res to problem, hvala
Re: Programiranje v Pythonu
Živjo, kako bi pa to rešil?
3) Sestavite funkcijo potrebnoKupiti(recept, shramba), ki vrne slovar
sestavin s pripadajočimi količinami, ki jih moramo še dokupiti, da bomo
lahko skuhali jed po danem receptu.
>>> potrebnoKupiti({'jajca': 3, 'moka': 500}, {'moka': 1000, 'jajca': 6, 'sladkor': 1000})
{}
>>> potrebnoKupiti({'jajca': 3, 'moka': 500}, {'moka': 1000, 'sladkor': 1000})
{'jajca': 3}
>>> potrebnoKupiti({'jajca': 3, 'moka': 500}, {'moka': 100})
{'jajca': 2, 'moka': 400}
Naj začnem s praznim slovarjem?
Hvala
3) Sestavite funkcijo potrebnoKupiti(recept, shramba), ki vrne slovar
sestavin s pripadajočimi količinami, ki jih moramo še dokupiti, da bomo
lahko skuhali jed po danem receptu.
>>> potrebnoKupiti({'jajca': 3, 'moka': 500}, {'moka': 1000, 'jajca': 6, 'sladkor': 1000})
{}
>>> potrebnoKupiti({'jajca': 3, 'moka': 500}, {'moka': 1000, 'sladkor': 1000})
{'jajca': 3}
>>> potrebnoKupiti({'jajca': 3, 'moka': 500}, {'moka': 100})
{'jajca': 2, 'moka': 400}
Naj začnem s praznim slovarjem?
Hvala
Re: Programiranje v Pythonu
Ja, zacnes s praznim slovarjem, gres po receptu tocno tako kot prej, s tem da v primeru, da shramba sploh nima na zalogi (prvi "false" v prejsnjem programu), dodas v rezultat vnos z isto kolicino kot v receptu, ce pa je na zalogi (drugi "false"), pa izraunas razliko, in ce je negativna, razliko dodas na spisek.
Re: Programiranje v Pythonu
def potrebnoKupiti(recept,shramba):
slovar={}
for sestavina,kolicina in recept.items():
if not sestavina in shramba:
return slovar["sestavina"]=recept[sestavina]
if kolicina > shramba[sestavina]:
return slovar["sestavina"]=recept[sestavina]-shramba[sestavina]
else:
return slovar
kaj je tukaj narobe?
slovar={}
for sestavina,kolicina in recept.items():
if not sestavina in shramba:
return slovar["sestavina"]=recept[sestavina]
if kolicina > shramba[sestavina]:
return slovar["sestavina"]=recept[sestavina]-shramba[sestavina]
else:
return slovar
kaj je tukaj narobe?
Re: Programiranje v Pythonu
Sploh ne gres skozi recept, ampak na prvi sestavini klices "return" in skocis iz funkcije. Tukaj filas spisek, tako da moras skozi cel seznam in sele na koncu vrnit rezultat, ko dodas vse kar je treba.
Koda: Izberi vse
def potrebnoKupiti(recept,shramba):
slovar={}
for sestavina,kolicina in recept.items():
if not sestavina in shramba:
slovar["sestavina"]=recept[sestavina]
if kolicina > shramba[sestavina]:
slovar["sestavina"]=recept[sestavina]-shramba[sestavina]
return slovar
Re: Programiranje v Pythonu
Tudi to ne dela...if kolicina > shramba[sestavina]:
KeyError: 'jajca'
KeyError: 'jajca'
Re: Programiranje v Pythonu
Ja, pomisli kaj bi lahko to napako povzrocilo. Pravi ti, da nimas jajc. To ti takoj da mislit, da se drugi if stavek testira tudi kadar sestavine (jajc) sploh ni v shrambi. V prejsnjem programu je bil v prvem if stavku "return" in za to ni bilo treba skrbet (ker ce sestavine ni bilo, si takoj izstopil iz funkcije in drugi test ni nikoli prisel na vrsto). Tokrat pa nimas "return" in se for zanka naprej vrti. Tako da moras testirat neenakost samo v primeru, ko sestavina je v shrambi:
Koda: Izberi vse
def potrebnoKupiti(recept,shramba):
slovar={}
for sestavina,kolicina in recept.items():
if not sestavina in shramba:
slovar["sestavina"]=recept[sestavina]
elif kolicina > shramba[sestavina]:
slovar["sestavina"]=recept[sestavina]-shramba[sestavina]
return slovar
Re: Programiranje v Pythonu
Aha, razumem...pa moral sem izpustiti narekovaje, torej: slovar[sestavina]
Re: Programiranje v Pythonu
Ja to pa itak, sicer enostavno isces sestavino po imenu "sestavina"
Re: Programiranje v Pythonu
prosim za malo pomoči
Sestavi funkcijo sifriraj(sifra, beseda), ki vrne besedo, zašifrirano
z dano šifro. Predpostavite lahko, da vse črke v besedi nastopajo v
šifri.
Napisal sem:
def sifriraj(sifra,beseda):
for crka in beseda:
return sifra[crka]
Vem, da to zašifrira le prvo črko...kako naj to popravim?
Sestavi funkcijo sifriraj(sifra, beseda), ki vrne besedo, zašifrirano
z dano šifro. Predpostavite lahko, da vse črke v besedi nastopajo v
šifri.
Napisal sem:
def sifriraj(sifra,beseda):
for crka in beseda:
return sifra[crka]
Vem, da to zašifrira le prvo črko...kako naj to popravim?
Re: Programiranje v Pythonu
Ce spet vrnes iz funkcije z "return" pri prvem obratu zanke.
Re: Programiranje v Pythonu
Kam premaknem return?
Re: Programiranje v Pythonu
Na konec, ko bos rezultat funkcije pripravljen.
Re: Programiranje v Pythonu
Zdej pa res ne razumem:).
Re: Programiranje v Pythonu
return konca izvajanje funkcije in vrne rezultat. Najprej moras poracunat rezultat. Kar hoces, je sestavit rezultat, in ga vrnit ko je pripravljen.
Koda: Izberi vse
def sifriraj(sifra,beseda):
sifrirano=""
for crka in beseda:
sifrirano+=sifra[crka]
return sifrirano