Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
gf_informatik:programmieren_iii [2026-01-12 06:53] hofgf_informatik:programmieren_iii [2026-02-10 08:12] (aktuell) hof
Zeile 19: Zeile 19:
 |Element| `'a'` | `'b'` | `'c'` | `'d'` | `'e'` | |Element| `'a'` | `'b'` | `'c'` | `'d'` | `'e'` |
  
-Beachte, dass das erste Element den **Index 0** hat!+Beachte, dass das erste Element den **Index 0** hat((Warum beginnt die Nummerierung bei 0? [[wp>Zero-based_numbering]] und [[https://www.cs.utexas.edu/~EWD/transcriptions/EWD08xx/EWD831.html|Edsger W. Dijkstra]] geben ein paar Anhaltspunkte.))!
  
 ==== Selektion und Modifikation ==== ==== Selektion und Modifikation ====
Zeile 184: Zeile 184:
 </code> </code>
  
-<nodisp 2>+<nodisp 1>
 ++++Lösung:| ++++Lösung:|
 <html><bottom-editor> <html><bottom-editor>
Zeile 221: Zeile 221:
 Definiere eine Funktion `mittelwert(numbers)`, welcher eine Liste mit Zahlen übergeben wird. Von diesen Zahlen wird dann der Mittelwert berechnet und zurückgegeben. Übergibt man zum Beispiel eine Liste mit Schulnoten, so erhält man den Notendurchschnitt zurück. Zeige den Durchschnittswert dann in einem formatierten String an, z.B. "Der Mittelwert ist 4.46". Definiere eine Funktion `mittelwert(numbers)`, welcher eine Liste mit Zahlen übergeben wird. Von diesen Zahlen wird dann der Mittelwert berechnet und zurückgegeben. Übergibt man zum Beispiel eine Liste mit Schulnoten, so erhält man den Notendurchschnitt zurück. Zeige den Durchschnittswert dann in einem formatierten String an, z.B. "Der Mittelwert ist 4.46".
  
-<nodisp 2>+<nodisp 1>
 ++++Lösung:| ++++Lösung:|
 <html><bottom-editor> <html><bottom-editor>
Zeile 239: Zeile 239:
  
 Programmiere eine Funktion `liste_haeufigste(liste)`: Gibt eine Liste zurück, die alle Elemente enthält, die am häufigsten vorkommen. Neben dieser Liste wird auch eine Zahl ausgegeben, die angibt, wie oft diese Elemente in der Liste vorkommen. Programmiere eine Funktion `liste_haeufigste(liste)`: Gibt eine Liste zurück, die alle Elemente enthält, die am häufigsten vorkommen. Neben dieser Liste wird auch eine Zahl ausgegeben, die angibt, wie oft diese Elemente in der Liste vorkommen.
 +
 +<nodisp 1>
 +++++Lösung:|
 +<html><bottom-editor>
 +def liste_anzahl(liste, x):
 +    count = 0
 +    for elem in liste:
 +        if elem == x:
 +            count = count + 1
 +    return count
 +
 +def liste_haeufigste(liste):
 +    max_anzahl = 0    # die Häufigkeit des bisherigen Siegers
 +    sieger = []       # die bisherigen Sieger
 +    for element in liste:
 +        anzahl = liste_anzahl(liste, element)
 +        if anzahl > max_anzahl:
 +            # Neuer Sieger
 +            max_anzahl = anzahl
 +            sieger = [element]
 +        elif anzahl == max_anzahl and element not in sieger:
 +            # Gleich häufig wie bisheriger Sieger
 +            sieger.append(element)
 +    return sieger, max_anzahl
 +
 +numbers = [3,1,5,4,9,4,8,3,1,2,4,9]
 +print(liste_haeufigste(numbers))
 +</bottom-editor></html>
 +++++
 +</nodisp>
  
  
Zeile 321: Zeile 351:
 Der Parameter `m` hat im ersten Durchlauf den Wert `0`. In jedem weiteren Durchlauf wird er um `10` erhöht, solange er kleiner ist als der Endwert `101`. Ersetzen wir die Zahl `101` durch `110`, so ist das Resultat genau das gleiche. Erst mit `111` ist die grösste ausgegebene Zahl `110`. Der Parameter `m` hat im ersten Durchlauf den Wert `0`. In jedem weiteren Durchlauf wird er um `10` erhöht, solange er kleiner ist als der Endwert `101`. Ersetzen wir die Zahl `101` durch `110`, so ist das Resultat genau das gleiche. Erst mit `111` ist die grösste ausgegebene Zahl `110`.
  
-#### Positionen einer Liste aufzählen+#### Indirekte for-Schleife
 `range()` ist zusammen mit `len()` äusserst praktisch, um alle gültigen Positionen (Indices) einer Liste aufzuzählen: `range()` ist zusammen mit `len()` äusserst praktisch, um alle gültigen Positionen (Indices) einer Liste aufzuzählen:
  
Zeile 338: Zeile 368:
 === Aufgabe I1 === === Aufgabe I1 ===
  
-Du hast hoffentlich herausgefunden, wie man in einer quadratischen Spirale die Abstände zwischen den Linien kleiner und grösser machen kann. Zeichne nun in eine Figur zwei solche Spiralen ähnlich wie im Bild. Zeichne dazu mit einer for-Schleife die eine. Versetze dann die Position deiner Turtle mit `setxund `sety` (oder `setpos`) und zeichne die Zweite Spirale mit einer neuen for-Schleife.+Du hast hoffentlich herausgefunden, wie man in einer quadratischen Spirale die Abstände zwischen den Linien kleiner und grösser machen kann. Zeichne nun in eine Figur zwei solche Spiralen ähnlich wie im Bild. Zeichne dazu mit einer for-Schleife die eine. Versetze dann die Position deiner Turtle mit `teleport` und zeichne die zweite Spirale mit einer neuen for-Schleife.
  
 {{ :gf_informatik_1m_20_21:spiralen_duo.png?250 |}} {{ :gf_informatik_1m_20_21:spiralen_duo.png?250 |}}
Zeile 361: Zeile 391:
 </code> </code>
  
-<nodisp 2>+<nodisp 1>
 ++++Lösung:| ++++Lösung:|
 <code python> <code python>
Zeile 380: Zeile 410:
 </code> </code>
  
-<nodisp 2>+<nodisp 1>
  
 ++++Lösung| ++++Lösung|
Zeile 401: Zeile 431:
  
 === Aufgabe I6 === === Aufgabe I6 ===
-Finde den Index (die Position) von `"Bebraham"` in der folgenden Liste. Nutze eine `for ... in range` Schleife, bei der die `range` über die Länge der Liste geht, wie [[#positionen_einer_liste_aufzaehlen|hier]] erklärt.+Finde den Index (die Position) von `"Bebraham"` in der folgenden Liste. Nutze eine `for ... in range` Schleife, bei der die `range` über die Länge der Liste geht, wie [[#indirekte_for-schleife|hier]] erklärt.
  
 `['Cebraham', 'Debraham', 'Bebraham', 'Abraham']` `['Cebraham', 'Debraham', 'Bebraham', 'Abraham']`
  
-<nodisp 2>+**Zusatzaufgabe:** Schreibe eine Funktion `suchen(l, query)` die in einer beliebigen Liste `l` nach dem Element `query` sucht und dessen Index zurückgibt! 
 + 
 +<nodisp 1>
 ++++Lösung| ++++Lösung|
 <code python> <code python>
Zeile 412: Zeile 444:
     if names[index] == 'Bebraham':     if names[index] == 'Bebraham':
         print(index)         print(index)
 +
 +# Als Funktion:
 +def suchen(l, query):
 +    for index in range(len(l)):
 +        if l[index] == query:
 +            return index
 +
 +print(suchen(names, "Bebraham"))
 </code> </code>
 ++++ ++++
Zeile 421: Zeile 461:
    
 **Teil 2**: Ändere die Funktion so, dass der Teiler über ein Funktionsargument gewählt werden kann. **Teil 2**: Ändere die Funktion so, dass der Teiler über ein Funktionsargument gewählt werden kann.
-Der Aufruf reihensumme(5) soll beispielsweise die Summe der Fünferreihe von 5 bis 50 berechnen und 275 zurückgeben. +Der Aufruf `reihensumme(5)soll beispielsweise die Summe der Fünferreihe von 5 bis 50 berechnen und 275 zurückgeben. 
 Der Aufruf ohne Argument soll weiterhin die Siebnerreihe addieren. Der Aufruf ohne Argument soll weiterhin die Siebnerreihe addieren.
  
-<nodisp 2>+<nodisp 1>
 ++++Lösung| ++++Lösung|
 <code python> <code python>
Zeile 443: Zeile 483:
 **Teil 1**: Schreibe eine Funktion `reverse(liste)`, die eine neue Liste erstellt und die Elemente von `liste` in umgekehrter Reihenfolge darin abspeichert und die umgekehrte Liste zurückgibt. Die eingebauten Funktionen `reverse` und `reversed` dürfen nicht benützt werden - verwende stattdessen eine [[#schrittweite|negative Schrittweite]] für `range`. **Teil 1**: Schreibe eine Funktion `reverse(liste)`, die eine neue Liste erstellt und die Elemente von `liste` in umgekehrter Reihenfolge darin abspeichert und die umgekehrte Liste zurückgibt. Die eingebauten Funktionen `reverse` und `reversed` dürfen nicht benützt werden - verwende stattdessen eine [[#schrittweite|negative Schrittweite]] für `range`.
  
-<nodisp 2>+<nodisp 1>
 ++++Lösung| ++++Lösung|
 <code python> <code python>
  • gf_informatik/programmieren_iii.1768200785.txt.gz
  • Zuletzt geändert: 2026-01-12 06:53
  • von hof