Elke oefening kan worden opgelost met de theorie/technieken die tot en met dit hoofdstuk zijn overlopen. Echter worden in de voorbeeldoplossingen soms meer geavanceerde technieken gebruikt die tot een meer elegante oplossingen leiden. Noteer bovendien dat er steeds verschillende oplossingen mogelijk zijn.

H04.1

Go low

s = input()
print(s.lower())

Klinkt dat goed?

s = input().lower()
teller = 0
for x in s:
    if x in "aeuio":
        teller += 1
print(teller)

Confidentieel 1

import string

s = input().lower()
r = ""
for el in s:
    if el in string.ascii_lowercase:
        r = r + "#"
    else:
        r = r + el
print(r)

Confidentieel 2

import string

s = input().lower()
v = input()
r = ""
for el in s:
    if el in string.ascii_lowercase:
        r = r + v
    else:
        r = r + el
print(r)

Len

s = input()
print(len(s))

Zeg eens aa

s = input()
s = s.replace("a", "o").replace("A", "O")
print(s)

H04.2

Tik Tak 3

t1 = input()
h1 = int(t1[:2])
m1 = int(t1[-2:])


t2 = input()
h2 = int(t2[:2])
m2 = int(t2[-2:])

while h1 != h2 or m1 != m2:
    print(f"{h1:02d}:{m1:02d}")
    m1 += 1
    if m1 == 60:
        h1 += 1
        m1 = 0
print(f"{h1:02d}:{m1:02d}")

Tik Tak 4

t1 = input()
t2 = input()
if t2 < t1:
    t2, t1 = t1, t2

h1 = int(t1[:2])
m1 = int(t1[-2:])


h2 = int(t2[:2])
m2 = int(t2[-2:])

while h1 != h2 or m1 != m2:
    print(f"{h1:02d}:{m1:02d}")
    m1 += 1
    if m1 == 60:
        h1 += 1
        m1 = 0
print(f"{h1:02d}:{m1:02d}")

Go low 2

s = input()
c = input()
if c == "low":
    print(s.lower())
else:
    print(s.upper())

Confidentieel 3

s = input("rapport: ")
v = input("confidentieel woord: ")
vervang = input("vervangend teken: ")
vervang = vervang * len(v)
s = s.replace(v, vervang)
print(s)

Sterke wachtwoorden hulp

import string

w = input()
score = 0
up = False
low = False
dig = False
special = False
for el in w:
    if el in string.ascii_uppercase:
        up = True
    elif el in string.ascii_lowercase:
        low = True
    elif el in string.digits:
        dig = True
    else:
        special = True
if len(w) >= 8:
    score += 1
x = (up, low, dig, special)
score += x.count(True)

if score == 5:
    print("sterk")
elif score < 3:
    print("zwak")
else:
    print("matig")

Sterke wachtwoorden

# aantal testgevallen inlezen
t = int(input())

# bepaal voor elk testgeval de sterkte van het wachtwoord
for _ in range(t):
    # wachtwoord inlezen
    wachtwoord = input()
    
    # nagaan hoeveel voorwaarden voldaan zijn voor het wachtwoord
    voorwaarden = [0] * 5
    if len(wachtwoord) < 8:
        voorwaarden[0] = 0
    else:
        voorwaarden[0] = 1
    for karakter in wachtwoord:
        if karakter.islower():
            voorwaarden[1] = 1
        elif karakter.isupper():
            voorwaarden[2] = 1
        elif karakter.isdigit():
            voorwaarden[3] = 1
        else:
            voorwaarden[4] = 1
    v = sum(voorwaarden)
    
    # sterkte van het wachtwoord uitschrijven
    if v == 5:
        print('sterk')
    elif v > 2:
        print('matig')
    else:
        print('zwak')

1D vier op een rij

spel = input()
X = False
O = False
if "XXXX" in spel:
    X = True
if "OOOO" in spel:
    O = True

if X and O:
    print("Beide hebben vier op een rij.")
elif X:
    print("X is gewonnen.")
elif O:
    print("O is gewonnen.")
else:
    print("Niemand is gewonnen.")

Gouden raad van tante Kaat

import string

s = input().lower()
r = ""
for el in s:
    if el in string.ascii_lowercase:
        r = r + el
print(r)

Palindroomzinnen

# aantal testgevallen inlezen
t = int(input())

for _ in range(t):
    # zin inlezen
    zin = input()
    
    # zin omvormen tot zin die enkel bestaat uit kleine letters
    enkelLetters = ''
    for char in zin:
        if char.isalpha():
            enkelLetters += char.lower()
            
    # bepalen of zin een palindroom is of niet
    if enkelLetters == enkelLetters[::-1]:
        print('palindroomzin')
    else:
        print('geen palindroomzin')

Toevallige getallen

# getal inlezen
getal = input()

# product van woordlengtes berekenen
product = 1
factor = 0
for karakter in getal:
    if karakter.isalpha():
        factor += 1
    elif factor:
        product *= factor
        factor = 0

# laatste factor verwerken (indien nodig)
if factor:
    product *= factor

# product uitschrijven
print(product)

Verscheurde getallen

def verscheurd(getal):
   
    # getal omzetten naar een string indien dit nog niet het geval zou zijn
    getal = str(getal)
    
    # alle mogelijke combinaties uitproberen om het gegeven woord in twee 
    # helften te scheuren die elk uit minstens één cijfer bestaan
    for pos in range(1, len(getal)):
        deel1, deel2 = int(getal[:pos]), int(getal[pos:])
        if (deel1 + deel2) ** 2 == int(getal):
            return True

    # geen verscheurd getal omdat geen enkele geldige combinatie gevonden werd        
    return False

# getal inlezen en bepalen of het al dan niet verscheurd is
negatie = '' if verscheurd(input()) else 'niet '
print(f'{negatie}verscheurd')

Makkie

# gegeven getal inlezen
getal = input()

# procedure herhalen totdat het getal 123 bekomen wordt
while getal != '123':
    
    # aantal even en oneven cijfers bepalen
    even, oneven = 0, 0
    for cijfer in getal:
        if int(cijfer) % 2:
            oneven += 1
        else:
            even += 1
            
    # drie getallen samenvoegen om zo een nieuw getal te vormen
    getal = f'{even}{oneven}{len(getal)}'
    
    # nieuw getal uitschrijven
    print(getal)