ÜbungBaut auf Katas: Erste Funktionen auf
icon: bi-signpost-split kind: uebung duration: 1 Doppelstunde languages: [ruby, python, javascript] idea: Je nach Wert etwas anderes tun curriculum: "Sek I: Algorithmisches Problemlösen (algorithmische Grundstrukturen: Verzweigung)" requires: [kata-functions]

Katas: Verzweigungen

Du schreibst Funktionen, die je nach Wert etwas anderes tun: mit if und else, mit Vergleichen und mit and und or. Bis zu FizzBuzz, einer berühmten Aufgabe aus Vorstellungsgesprächen.

1. Wenn, dann

Eine Funktion kann je nach Wert etwas anderes tun. Diese hier sagt, ob eine Temperatur zum Baden reicht:

def weather(degrees)
  if degrees >= 25
    'Baden!'
  elsif degrees >= 15
    'Spazieren'
  else
    'Lesen'
  end
end

puts weather(28)

Ruby prüft die Bedingungen der Reihe nach und nimmt die erste, die stimmt. Verglichen wird mit ==, !=, <, <=, > und >=; zwei Bedingungen verbinden && (beide) und || (mindestens eine), ! dreht eine um. Ein Vergleich ist selbst ein Wert, true oder false: degrees >= 25 kann eine Funktion auch direkt zurückgeben.

def weather(degrees):
    if degrees >= 25:
        return 'Baden!'
    elif degrees >= 15:
        return 'Spazieren'
    else:
        return 'Lesen'

print(weather(28))

Python prüft die Bedingungen der Reihe nach und nimmt die erste, die stimmt. Verglichen wird mit ==, !=, <, <=, > und >=; zwei Bedingungen verbinden and (beide) und or (mindestens eine), not dreht eine um. Ein Vergleich ist selbst ein Wert, True oder False: degrees >= 25 kann eine Funktion auch direkt zurückgeben.

function weather(degrees) {
  if (degrees >= 25) {
    return 'Baden!';
  } else if (degrees >= 15) {
    return 'Spazieren';
  } else {
    return 'Lesen';
  }
}

console.log(weather(28));

JavaScript prüft die Bedingungen der Reihe nach und nimmt die erste, die stimmt. Verglichen wird mit ===, !==, <, <=, > und >=; das kürzere == gibt es auch, aber es hält '5' == 5 für wahr. Zwei Bedingungen verbinden && (beide) und || (mindestens eine), ! dreht eine um. Ein Vergleich ist selbst ein Wert, true oder false: degrees >= 25 kann eine Funktion auch direkt zurückgeben.

2. Einstieg

Aufgabe 1Gerade oder ungeradeEinstieg

Schreib eine Funktion even(n), die true zurückgibt, wenn eine Zahl gerade ist, sonst false: even(4) ergibt true, even(7) ergibt false. Ohne even? und odd?.

Tipp

Eine gerade Zahl lässt bei der Division durch 2 keinen Rest. Den Rest liefert %.

Aufgabe 1Gerade oder ungeradeEinstieg

Schreib eine Funktion even(n), die True zurückgibt, wenn eine Zahl gerade ist, sonst False: even(4) ergibt True, even(7) ergibt False.

Tipp

Eine gerade Zahl lässt bei der Division durch 2 keinen Rest. Den Rest liefert %.

Aufgabe 1Gerade oder ungeradeEinstieg

Schreib eine Funktion even(n), die true zurückgibt, wenn eine Zahl gerade ist, sonst false: even(4) ergibt true, even(7) ergibt false.

Tipp

Eine gerade Zahl lässt bei der Division durch 2 keinen Rest. Den Rest liefert %. Verglichen wird in JavaScript mit ===.

Aufgabe 2Die größere ZahlEinstieg

Schreib eine Funktion max_of_two(a, b), die die größere der beiden Zahlen zurückgibt: max_of_two(3, 7) ergibt 7. Ohne max: mit if.

Aufgabe 2Die größere ZahlEinstieg

Schreib eine Funktion max_of_two(a, b), die die größere der beiden Zahlen zurückgibt: max_of_two(3, 7) ergibt 7. Ohne max: mit if.

Aufgabe 2Die größere ZahlEinstieg

Schreib eine Funktion maxOfTwo(a, b), die die größere der beiden Zahlen zurückgibt: maxOfTwo(3, 7) ergibt 7. Ohne Math.max: mit if.

Aufgabe 3Der BetragEinstieg

Der Betrag einer Zahl ist ihr Abstand von 0: Er ist nie negativ. Schreib eine Funktion absolute(n): absolute(-5) ergibt 5, absolute(5) ergibt 5. Ohne abs.

Aufgabe 3Der BetragEinstieg

Der Betrag einer Zahl ist ihr Abstand von 0: Er ist nie negativ. Schreib eine Funktion absolute(n): absolute(-5) ergibt 5, absolute(5) ergibt 5. Ohne abs.

Aufgabe 3Der BetragEinstieg

Der Betrag einer Zahl ist ihr Abstand von 0: Er ist nie negativ. Schreib eine Funktion absolute(n): absolute(-5) ergibt 5, absolute(5) ergibt 5. Ohne Math.abs.

Aufgabe 4Volljährig?Einstieg

In Deutschland ist man mit 18 Jahren volljährig. Schreib eine Funktion adult(age), die true oder false zurückgibt: adult(30) ergibt true, adult(12) ergibt false.

Aufgabe 4Volljährig?Einstieg

In Deutschland ist man mit 18 Jahren volljährig. Schreib eine Funktion adult(age), die True oder False zurückgibt: adult(30) ergibt True, adult(12) ergibt False.

Aufgabe 4Volljährig?Einstieg

In Deutschland ist man mit 18 Jahren volljährig. Schreib eine Funktion adult(age), die true oder false zurückgibt: adult(30) ergibt true, adult(12) ergibt false.

3. Übung

Jetzt gibt es mehr als zwei Möglichkeiten. Schreib dir die Grenzen auf, bevor du programmierst, und prüf genau die Werte, die auf einer Grenze liegen.

Aufgabe 5SchaltjahreÜbung

Ein Jahr ist ein Schaltjahr, wenn es durch 4 teilbar ist, außer volle Jahrhunderte wie 1900. Davon sind wieder die ausgenommen, die durch 400 teilbar sind: 2000 war ein Schaltjahr. Schreib eine Funktion leap_year(year), die sagt, ob ein Jahr ein Schaltjahr ist.

Tipp

Geh 1996, 1900 und 2000 von Hand durch: Welche Regel entscheidet jeweils?

Nächster Tipp

Prüf von der speziellsten Regel zur allgemeinsten: erst 400, dann 100, dann 4.

Nächster Tipp

Mit && und || geht es auch in einer Zeile: durch 4 teilbar und (nicht durch 100 teilbar oder durch 400 teilbar).

Aufgabe 5SchaltjahreÜbung

Ein Jahr ist ein Schaltjahr, wenn es durch 4 teilbar ist, außer volle Jahrhunderte wie 1900. Davon sind wieder die ausgenommen, die durch 400 teilbar sind: 2000 war ein Schaltjahr. Schreib eine Funktion leap_year(year), die sagt, ob ein Jahr ein Schaltjahr ist.

Tipp

Geh 1996, 1900 und 2000 von Hand durch: Welche Regel entscheidet jeweils?

Nächster Tipp

Prüf von der speziellsten Regel zur allgemeinsten: erst 400, dann 100, dann 4.

Nächster Tipp

Mit and und or geht es auch in einer Zeile: durch 4 teilbar und (nicht durch 100 teilbar oder durch 400 teilbar).

Aufgabe 5SchaltjahreÜbung

Ein Jahr ist ein Schaltjahr, wenn es durch 4 teilbar ist, außer volle Jahrhunderte wie 1900. Davon sind wieder die ausgenommen, die durch 400 teilbar sind: 2000 war ein Schaltjahr. Schreib eine Funktion leapYear(year), die sagt, ob ein Jahr ein Schaltjahr ist.

Tipp

Geh 1996, 1900 und 2000 von Hand durch: Welche Regel entscheidet jeweils?

Nächster Tipp

Prüf von der speziellsten Regel zur allgemeinsten: erst 400, dann 100, dann 4.

Nächster Tipp

Mit && und || geht es auch in einer Zeile: durch 4 teilbar und (nicht durch 100 teilbar oder durch 400 teilbar).

Aufgabe 6Punkte und NotenÜbung

In einer Klassenarbeit gibt es höchstens 100 Punkte. Ab 92 Punkten gibt es eine 1, ab 81 eine 2, ab 67 eine 3, ab 50 eine 4, ab 30 eine 5, darunter eine 6. Schreib eine Funktion grade(points), die die Note zurückgibt: grade(85) ergibt 2.

Tipp

Was ist grade(85), was grade(81), was grade(80)? Schreib die drei auf, bevor du programmierst.

Nächster Tipp

if … elsif … else prüft der Reihe nach und nimmt die erste Bedingung, die stimmt. In welcher Reihenfolge müssen die Grenzen stehen?

Aufgabe 6Punkte und NotenÜbung

In einer Klassenarbeit gibt es höchstens 100 Punkte. Ab 92 Punkten gibt es eine 1, ab 81 eine 2, ab 67 eine 3, ab 50 eine 4, ab 30 eine 5, darunter eine 6. Schreib eine Funktion grade(points), die die Note zurückgibt: grade(85) ergibt 2.

Tipp

Was ist grade(85), was grade(81), was grade(80)? Schreib die drei auf, bevor du programmierst.

Nächster Tipp

if … elif … else prüft der Reihe nach und nimmt die erste Bedingung, die stimmt. In welcher Reihenfolge müssen die Grenzen stehen?

Aufgabe 6Punkte und NotenÜbung

In einer Klassenarbeit gibt es höchstens 100 Punkte. Ab 92 Punkten gibt es eine 1, ab 81 eine 2, ab 67 eine 3, ab 50 eine 4, ab 30 eine 5, darunter eine 6. Schreib eine Funktion grade(points), die die Note zurückgibt: grade(85) ergibt 2.

Tipp

Was ist grade(85), was grade(81), was grade(80)? Schreib die drei auf, bevor du programmierst.

Nächster Tipp

if … else if … else prüft der Reihe nach und nimmt die erste Bedingung, die stimmt. In welcher Reihenfolge müssen die Grenzen stehen?

Aufgabe 7Eintritt ins SchwimmbadÜbung

Im Schwimmbad zahlen Kinder unter 6 Jahren nichts, Kinder und Jugendliche unter 18 zahlen 5 Euro, Seniorinnen und Senioren ab 65 zahlen 6 Euro, alle anderen 9 Euro. Schreib eine Funktion ticket_price(age): ticket_price(12) ergibt 5.

Tipp

Zeichne einen Zahlenstrahl von 0 bis 100 und trag die Grenzen ein. Welche Bereiche gibt es?

Nächster Tipp

Prüf die Bereiche von unten nach oben: unter 6, unter 18, dann ab 65.

Aufgabe 7Eintritt ins SchwimmbadÜbung

Im Schwimmbad zahlen Kinder unter 6 Jahren nichts, Kinder und Jugendliche unter 18 zahlen 5 Euro, Seniorinnen und Senioren ab 65 zahlen 6 Euro, alle anderen 9 Euro. Schreib eine Funktion ticket_price(age): ticket_price(12) ergibt 5.

Tipp

Zeichne einen Zahlenstrahl von 0 bis 100 und trag die Grenzen ein. Welche Bereiche gibt es?

Nächster Tipp

Prüf die Bereiche von unten nach oben: unter 6, unter 18, dann ab 65.

Aufgabe 7Eintritt ins SchwimmbadÜbung

Im Schwimmbad zahlen Kinder unter 6 Jahren nichts, Kinder und Jugendliche unter 18 zahlen 5 Euro, Seniorinnen und Senioren ab 65 zahlen 6 Euro, alle anderen 9 Euro. Schreib eine Funktion ticketPrice(age): ticketPrice(12) ergibt 5.

Tipp

Zeichne einen Zahlenstrahl von 0 bis 100 und trag die Grenzen ein. Welche Bereiche gibt es?

Nächster Tipp

Prüf die Bereiche von unten nach oben: unter 6, unter 18, dann ab 65.

Aufgabe 8Die größte von dreienÜbung

Schreib eine Funktion max_of_three(a, b, c), die die größte von drei Zahlen zurückgibt: max_of_three(3, 1, 5) ergibt 5. Ohne max.

Tipp

Probier deine Lösung von Hand mit 3, 1, 5, mit 1, 5, 3 und mit 5, 3, 1.

Nächster Tipp

Ein Weg: Merk dir die größte bisher, fang mit a an, und vergleiche sie dann mit b und mit c.

Aufgabe 8Die größte von dreienÜbung

Schreib eine Funktion max_of_three(a, b, c), die die größte von drei Zahlen zurückgibt: max_of_three(3, 1, 5) ergibt 5. Ohne max.

Tipp

Probier deine Lösung von Hand mit 3, 1, 5, mit 1, 5, 3 und mit 5, 3, 1.

Nächster Tipp

Ein Weg: Merk dir die größte bisher, fang mit a an, und vergleiche sie dann mit b und mit c.

Aufgabe 8Die größte von dreienÜbung

Schreib eine Funktion maxOfThree(a, b, c), die die größte von drei Zahlen zurückgibt: maxOfThree(3, 1, 5) ergibt 5. Ohne Math.max.

Tipp

Probier deine Lösung von Hand mit 3, 1, 5, mit 1, 5, 3 und mit 5, 3, 1.

Nächster Tipp

Ein Weg: Merk dir die größte bisher, fang mit a an, und vergleiche sie dann mit b und mit c.

Ausprobieren: Vertausch in einer deiner Lösungen zwei Zweige mit elsif, elif oder else if und drück Ausführen. Bei welchen Werten macht die Reihenfolge einen Unterschied, und bei welchen nicht?

4. Knobelei

Aufgabe 9FizzBuzzKnobelei

Ein englisches Zählspiel, und eine berühmte Aufgabe in Vorstellungsgesprächen für Programmierer: Man zählt reihum, aber statt einer Zahl, die durch 3 teilbar ist, sagt man »Fizz«, statt einer, die durch 5 teilbar ist, »Buzz«, und wenn sie durch beide teilbar ist, »FizzBuzz«. Schreib eine Funktion fizzbuzz(n), die zurückgibt, was man bei n sagt, als Text: fizzbuzz(9) ergibt 'Fizz', fizzbuzz(7) ergibt '7'.

Tipp

Was sagt man bei 3, bei 5, bei 15 und bei 7? Welche Zahlen sind durch 3 und durch 5 teilbar?

Nächster Tipp

Die Reihenfolge der Bedingungen entscheidet: Was durch 15 teilbar ist, ist auch durch 3 teilbar.

Aufgabe 9FizzBuzzKnobelei

Ein englisches Zählspiel, und eine berühmte Aufgabe in Vorstellungsgesprächen für Programmierer: Man zählt reihum, aber statt einer Zahl, die durch 3 teilbar ist, sagt man »Fizz«, statt einer, die durch 5 teilbar ist, »Buzz«, und wenn sie durch beide teilbar ist, »FizzBuzz«. Schreib eine Funktion fizzbuzz(n), die zurückgibt, was man bei n sagt, als Text: fizzbuzz(9) ergibt 'Fizz', fizzbuzz(7) ergibt '7'.

Tipp

Was sagt man bei 3, bei 5, bei 15 und bei 7? Welche Zahlen sind durch 3 und durch 5 teilbar?

Nächster Tipp

Die Reihenfolge der Bedingungen entscheidet: Was durch 15 teilbar ist, ist auch durch 3 teilbar.

Aufgabe 9FizzBuzzKnobelei

Ein englisches Zählspiel, und eine berühmte Aufgabe in Vorstellungsgesprächen für Programmierer: Man zählt reihum, aber statt einer Zahl, die durch 3 teilbar ist, sagt man »Fizz«, statt einer, die durch 5 teilbar ist, »Buzz«, und wenn sie durch beide teilbar ist, »FizzBuzz«. Schreib eine Funktion fizzbuzz(n), die zurückgibt, was man bei n sagt, als Text: fizzbuzz(9) ergibt 'Fizz', fizzbuzz(7) ergibt '7'.

Tipp

Was sagt man bei 3, bei 5, bei 15 und bei 7? Welche Zahlen sind durch 3 und durch 5 teilbar?

Nächster Tipp

Die Reihenfolge der Bedingungen entscheidet: Was durch 15 teilbar ist, ist auch durch 3 teilbar.

Aufgabe 10Was für ein Dreieck?Knobelei

Aus drei Stäben der Längen a, b und c lässt sich nur dann ein Dreieck legen, wenn je zwei zusammen länger sind als der dritte. Schreib eine Funktion triangle(a, b, c), die 'keins' zurückgibt, wenn es nicht geht, sonst 'gleichseitig' (alle drei gleich lang), 'gleichschenklig' (zwei gleich lang) oder 'ungleichseitig'.

Tipp

Lege die Beispiele im Kopf: 3, 4, 5 geht, 1, 2, 5 nicht. Was ist mit 1, 2, 3?

Nächster Tipp

Erst prüfen, ob es überhaupt ein Dreieck ist (alle drei Paare), dann von gleichseitig zu ungleichseitig.

Nächster Tipp

Ein Gerüst:

def triangle(a, b, c)
  return 'keins' if # hier: eine Bedingung für jedes Paar, mit ||
  return 'gleichseitig' if # …
  # …
end
Aufgabe 10Was für ein Dreieck?Knobelei

Aus drei Stäben der Längen a, b und c lässt sich nur dann ein Dreieck legen, wenn je zwei zusammen länger sind als der dritte. Schreib eine Funktion triangle(a, b, c), die 'keins' zurückgibt, wenn es nicht geht, sonst 'gleichseitig' (alle drei gleich lang), 'gleichschenklig' (zwei gleich lang) oder 'ungleichseitig'.

Tipp

Lege die Beispiele im Kopf: 3, 4, 5 geht, 1, 2, 5 nicht. Was ist mit 1, 2, 3?

Nächster Tipp

Erst prüfen, ob es überhaupt ein Dreieck ist (alle drei Paare), dann von gleichseitig zu ungleichseitig.

Nächster Tipp

Ein Gerüst:

def triangle(a, b, c):
    if ...:  # eine Bedingung für jedes Paar, mit or
        return 'keins'
    if ...:
        return 'gleichseitig'
    # …
Aufgabe 10Was für ein Dreieck?Knobelei

Aus drei Stäben der Längen a, b und c lässt sich nur dann ein Dreieck legen, wenn je zwei zusammen länger sind als der dritte. Schreib eine Funktion triangle(a, b, c), die 'keins' zurückgibt, wenn es nicht geht, sonst 'gleichseitig' (alle drei gleich lang), 'gleichschenklig' (zwei gleich lang) oder 'ungleichseitig'.

Tipp

Lege die Beispiele im Kopf: 3, 4, 5 geht, 1, 2, 5 nicht. Was ist mit 1, 2, 3?

Nächster Tipp

Erst prüfen, ob es überhaupt ein Dreieck ist (alle drei Paare), dann von gleichseitig zu ungleichseitig.

Nächster Tipp

Ein Gerüst:

function triangle(a, b, c) {
  if (/* eine Bedingung für jedes Paar, mit || */) return 'keins';
  if (/* … */) return 'gleichseitig';
  // …
}
Aufgabe 11Ein rechter WinkelKnobelei

Drei Seiten bilden ein rechtwinkliges Dreieck, wenn die Quadrate der beiden kürzeren zusammen das Quadrat der längsten ergeben (Pythagoras): 3² + 4² = 5². Schreib eine Funktion pythagorean(a, b, c), die das prüft, in welcher Reihenfolge die Seiten auch kommen.

Tipp

Teste mit 5, 3, 4: Welche Seite ist hier die längste?

Nächster Tipp

Entweder du prüfst alle drei Möglichkeiten, welche Seite die längste ist, mit ||, oder du sortierst die drei Seiten erst.

Aufgabe 11Ein rechter WinkelKnobelei

Drei Seiten bilden ein rechtwinkliges Dreieck, wenn die Quadrate der beiden kürzeren zusammen das Quadrat der längsten ergeben (Pythagoras): 3² + 4² = 5². Schreib eine Funktion pythagorean(a, b, c), die das prüft, in welcher Reihenfolge die Seiten auch kommen.

Tipp

Teste mit 5, 3, 4: Welche Seite ist hier die längste?

Nächster Tipp

Entweder du prüfst alle drei Möglichkeiten, welche Seite die längste ist, mit or, oder du sortierst die drei Seiten erst.

Aufgabe 11Ein rechter WinkelKnobelei

Drei Seiten bilden ein rechtwinkliges Dreieck, wenn die Quadrate der beiden kürzeren zusammen das Quadrat der längsten ergeben (Pythagoras): 3² + 4² = 5². Schreib eine Funktion pythagorean(a, b, c), die das prüft, in welcher Reihenfolge die Seiten auch kommen.

Tipp

Teste mit 5, 3, 4: Welche Seite ist hier die längste?

Nächster Tipp

Entweder du prüfst alle drei Möglichkeiten, welche Seite die längste ist, mit ||, oder du sortierst die drei Seiten erst.

5. Extras Extra

Ein Extra für Schnelle: Die Seite ist ohne dieses Kapitel vollständig.

Aufgabe 12Schere, Stein, PapierExtra

Zwei spielen Schere, Stein, Papier: Stein schlägt Schere, Schere schlägt Papier, Papier schlägt Stein. Schreib eine Funktion rock_paper_scissors(first, second), die 1 zurückgibt, wenn die erste Hand gewinnt, 2, wenn die zweite gewinnt, und 0 bei einem Unentschieden: rock_paper_scissors('Stein', 'Schere') ergibt 1. Geht es mit weniger als neun Fällen?

Tipp

Wer gewinnt, hängt nur davon ab, welche Hand die andere schlägt. Eine Tabelle (ein Hash) { 'Stein' => 'Schere', … } sagt das für jede Hand.

Aufgabe 12Schere, Stein, PapierExtra

Zwei spielen Schere, Stein, Papier: Stein schlägt Schere, Schere schlägt Papier, Papier schlägt Stein. Schreib eine Funktion rock_paper_scissors(first, second), die 1 zurückgibt, wenn die erste Hand gewinnt, 2, wenn die zweite gewinnt, und 0 bei einem Unentschieden: rock_paper_scissors('Stein', 'Schere') ergibt 1. Geht es mit weniger als neun Fällen?

Tipp

Wer gewinnt, hängt nur davon ab, welche Hand die andere schlägt. Ein Dictionary {'Stein': 'Schere', …} sagt das für jede Hand.

Aufgabe 12Schere, Stein, PapierExtra

Zwei spielen Schere, Stein, Papier: Stein schlägt Schere, Schere schlägt Papier, Papier schlägt Stein. Schreib eine Funktion rockPaperScissors(first, second), die 1 zurückgibt, wenn die erste Hand gewinnt, 2, wenn die zweite gewinnt, und 0 bei einem Unentschieden: rockPaperScissors('Stein', 'Schere') ergibt 1. Geht es mit weniger als neun Fällen?

Tipp

Wer gewinnt, hängt nur davon ab, welche Hand die andere schlägt. Ein Objekt { Stein: 'Schere', … } sagt das für jede Hand.

Aufgabe 13BrotExtra

Ein Zählspiel aus der Grundschule: Man zählt reihum, aber statt einer Zahl, die durch 3 teilbar ist oder eine 3 enthält, sagt man »Brot«. Bei 13 heißt es also »Brot«, obwohl 13 nicht durch 3 teilbar ist. Schreib eine Funktion bread(n), die zurückgibt, was man bei n sagt, als Text: bread(6) ergibt 'Brot', bread(31) ergibt 'Brot', bread(7) ergibt '7'.

Tipp

Zwei Fragen: Ist n durch 3 teilbar? Steht in n eine 3? Wenn eine davon mit Ja beantwortet wird, heißt es »Brot«.

Nächster Tipp

Ob eine Ziffer in einer Zahl steht, siehst du am Text der Zahl: n.to_s macht aus 13 den Text '13', und include? fragt, ob ein Text einen anderen enthält.

Aufgabe 13BrotExtra

Ein Zählspiel aus der Grundschule: Man zählt reihum, aber statt einer Zahl, die durch 3 teilbar ist oder eine 3 enthält, sagt man »Brot«. Bei 13 heißt es also »Brot«, obwohl 13 nicht durch 3 teilbar ist. Schreib eine Funktion bread(n), die zurückgibt, was man bei n sagt, als Text: bread(6) ergibt 'Brot', bread(31) ergibt 'Brot', bread(7) ergibt '7'.

Tipp

Zwei Fragen: Ist n durch 3 teilbar? Steht in n eine 3? Wenn eine davon mit Ja beantwortet wird, heißt es »Brot«.

Nächster Tipp

Ob eine Ziffer in einer Zahl steht, siehst du am Text der Zahl: str(n) macht aus 13 den Text '13', und '3' in text fragt, ob der Text eine 3 enthält.

Aufgabe 13BrotExtra

Ein Zählspiel aus der Grundschule: Man zählt reihum, aber statt einer Zahl, die durch 3 teilbar ist oder eine 3 enthält, sagt man »Brot«. Bei 13 heißt es also »Brot«, obwohl 13 nicht durch 3 teilbar ist. Schreib eine Funktion bread(n), die zurückgibt, was man bei n sagt, als Text: bread(6) ergibt 'Brot', bread(31) ergibt 'Brot', bread(7) ergibt '7'.

Tipp

Zwei Fragen: Ist n durch 3 teilbar? Steht in n eine 3? Wenn eine davon mit Ja beantwortet wird, heißt es »Brot«.

Nächster Tipp

Ob eine Ziffer in einer Zahl steht, siehst du am Text der Zahl: String(n) macht aus 13 den Text '13', und includes fragt, ob ein Text einen anderen enthält.

Weiter geht es mit Wiederholungen: Funktionen, die etwas viele Male tun.