Znaki in številke z rešitvami
Domača naloga bo kratka. Vse funkcije je potrebno napisati v eni vrstici, kot smo se učili na predavanjih.
Obvezni del
vsebujejo_crko(crka, besede)prejme črko in seznam (ali pa, morda, množico) besed, vrne pa množico besed, ki vsebujejo podano črko. (Če želiš, lahko prej napišeš drugo funkcijo, ta funkcija pa potem uporabi drugo.)kolikokrat_crka(crka, besede)prejme črko in seznam (ali pa, morda, množico) besed, vrne pa slovar, katerega ključi so besede, vrednosti pa število ponovitev te črke v tej besedi. Klickolikokrat_crka("a", ["ana", "berta", "cilka"])vrne{"ana": 2, "berta": 1, "cilka": 1}.vsota7(s)prejme seznam (ali kaj drugega) številk in vrne vsoto vseh številk, ki vsebujejo števko 7. Klicvsota7([5, 17, 2, 7, 71])vrne95(to je, 17 + 7 + 71).ni7(s)prejme seznam (ali kaj drugega) števil in vrneTrue, če nobeno število ne vsebuje števke 7, inFalsesicer. (Za reševanje te naloge je pametno, ne pa popolnoma nujno, prebrati zadnji del zapiskov, za katerega na predavanjih ni več bilo časa).
Dodatni del
vsota_zaporednih(s)dobi seznam števil in vrne seznam vsot zaporednih parov števil v seznamu. Klicvsota_zaporednih([7, 2, 18, 4, 23])vrne[9, 20, 22, 27].ni27(s)vrneTrue, je podobnani7, vendar pusti posamična števila, ki vsebujejo7, ne dovoli pa, da bi dve zaporedni števili vsebovali 7. Primer prepovedanega seznama je[1, 17, 72, 5, 1, 2, 700], ker ima zaporedni par17, 72, ki vsebuje 7.
Rešitev
Rešitve tokrat ne potrebujejo komentarja.
def vsebujejo_crko(crka, besede):
return {beseda for beseda in besede if crka in beseda}
def kolikokrat_crka(crka, besede):
return {beseda: beseda.count(crka) for beseda in besede}
def vsota7(s):
return sum(x for x in s if "7" in str(x))
def ni7(s):
return all("7" not in str(x) for x in s)
def vsota_zaporednih(s):
return [x + y for x, y in zip(s, s[1:])]
def ni27(s):
return not any("7" in str(x) and "7" in str(y) for x, y in zip(s, s[1:]))