Extra

Deze pagina bevat uitvoerbare code.

Potjeslatijn

Opdracht: Potjeslatijn

Stap 1: piglet_latin(s)

def piglet_latin(s):
    """Vertaalt het woord s naar potjeslatijn, met hoogstens één beginmedeklinker."""
    if s == "":
        return ""
    elif s[0] in "aeiou":
        return s + "hee"
    else:
        return s[1:] + s[0] + "ee"


assert piglet_latin("") == ""
assert piglet_latin("aap") == "aaphee"
assert piglet_latin("noot") == "ootnee"
assert piglet_latin("straat") == "traatsee"

Stap 2: initial_consonants(s)

def initial_consonants(s):
    """Geeft de medeklinkers waarmee s begint."""
    if s == "" or s[0] in "aeiou":
        return ""
    else:
        return s[0] + initial_consonants(s[1:])


assert initial_consonants("straat") == "str"
assert initial_consonants("noot") == "n"
assert initial_consonants("aap") == ""
assert initial_consonants("") == ""

Stap 3: pig_latin(s)

De y gevolgd door een medeklinker telt als klinker; die tak staat daarom vóór de aanroep van initial_consonants. Een y gevolgd door een klinker is voor initial_consonants gewoon een medeklinker.

def pig_latin(s):
    """Vertaalt het woord s naar potjeslatijn."""
    if s == "":
        return ""
    elif s[0] in "aeiou":
        return s + "hee"
    elif s[0] == "y" and len(s) > 1 and s[1] not in "aeiou":
        return s + "hee"
    else:
        start = initial_consonants(s)
        return s[len(start) :] + start + "ee"


assert pig_latin("") == ""
assert pig_latin("aap") == "aaphee"
assert pig_latin("noot") == "ootnee"
assert pig_latin("straat") == "aatstree"
assert pig_latin("ypsilon") == "ypsilonhee"
assert pig_latin("yoghurt") == "oghurtyee"