Impressum
< Arrays 1 Inhalt Arrays 3 - Suchen >

Einfache Algorithmen auf Arrays in Python

Arrays und for-Schleifen

Da die Elemente eines Arrays mit ganzen Zahlen angesprochen werden, eignen sich for-Schleifen um alle Array-Elemente zu durchlaufen:
werte = [11, 21, 3, 6]
for i in range(len(werte)):
    print(werte[i])
In Kombination sind Arrays und for-Schleifen in der Lage, beliebig große Datenmengen mit gleich viel Zeilen Code zu verarbeiten.

Zwei Array-Elemente vertauschen

Um zwei Elemente im Array zu vertauschen benötigt man einen Dreiecks-Tausch über eine Hilfsvariable.
Das ist falsch:
werte = [11, 21, 3, 6]
werte[1]= werte[3] # hier wird werte[1] übeschrieben: [11, 6, 3, 6]
werte[3]= werte[1] # und somit erhält man [11, 6, 3, 6]

so geht es richtig:
werte = [11, 21, 3, 6]
hilfsvar = werte[1] # werte[1] zwischenspeichern
werte[1]= werte[3]  # werte[1] mit werte[3] überschreiben [11, 6, 3, 6]
werte[3]= hilfsvar  # werte[3] mit dem zwischengespeicherten Wert füllen [11, 6, 3, 21]

Beliebig viele Zahlen einlesen und speichern

Oft ist nicht bekannt, wie viele Werte ein Benutzer eingeben wird. Mit einem Array kann man diese Problem aber behandeln.
Hierzu fügt man alle Eingaben mit append in ein Array ein.
Der Beispiel-Code zeigt exemplarisch wie dies möglich ist:
Dieses Programm liest so lange Zahlen vom Benutzer ein, bis eine 0 eingegeben wird.
Alle eingegebenen Werte sind im Array werte gespeichert und können später im Programm verarbeitet werden.
werte = []

zahl = 1
while zahl!=0:
    eingabe = input("Zahl: ")
    zahl = int(eingabe)
    werte.append(zahl)

Suchen im Array

Um zu überprüfen, ob ein Wert in einem Array enthalten ist, geht man wie folgt vor:
Dieses Programm liest so lange Zahlen vom Benutzer ein, bis eine 0 eingegeben wird.
Alle eingegebenen Werte sind im Array werte gespeichert und können später im Programm verarbeitet werden.
namen = ["Ada", "Bea", "Ben", "Bob", "Amy", "Jim", "Kai", "Ali", "Tim", "Ina", "Ann", "Lee"]

gibtsdie = input("Name: ")   # Benutzer gibt gesuchten Namen ein

gefunden = False             # gefunden wird initialisiert
for i in range(len(namen)):  # Schleife über den Array
    if namen[i]==gibtsdie:   # ist der aktuelle Name der gesuchte?
        gefunden = True      # wenn ja: gefunden wird wahr

if gefunden==True:           # Nach der Schleife kann man gefunden verwenden ;)
    print("Ja die gibt's")
else:
    print("Nein die gibt's nicht")
        

Aufgaben

  1. Vertauschen:
    Beginnen Sie mit dem Array: namen = ["Ada", "Bea", "Bob", "Amy", "Kai", "Ali", "Tim", "Ina", "Ann", "Lee"]
    1. Vertauschen Sie das erste mit dem letzten Element.


    2. Vertauschen Sie das 0. mit dem 1. Element, das 1. mit dem 2. Element, das 2. mit dem 3. ... bis zum 8. mit dem 9.


  2. Füllen Sie ein Array mit den elf Zahlen von 0 bis 10.
    Starten Sie hierfür mit einem leeren Array und füllen Sie es mit einer for-Schleife.
    1. Nehmen Sie jeden Wert im Array mal 3 und speichern ihn am selben Index
    2. Addieren Sie zu jedem Array-Element 2 hinzu
    3. Ihr Array beinhaltet jetzt die y-Werte für die Gerade f(x)=3x+2 für x=0, ...., 10 aber warum ist das so?

  3. Summe aller Array-Elemente:
    Beginnen Sie mit dem Array: werte = [9,3,-4,6,11,-2,3]
    Berechnen Sie die Summe aller Array-Elemente.
    Damit es für andere Arrays auch funktioniert, verwenden Sie natürlich eine for-Schleife.
    Geben Sie die Summe am Ende aus.


  4. Summe aller positiven Array-Elemente:
    Beginnen Sie mit dem Array: werte = [9,3,-4,6,11,-2,3]
    Berechnen Sie die Summe aller positiven Array-Elemente.
    Geben Sie die Summe am Ende aus.


  5. Summe aller Gewinne/Verluste:
    Beginnen Sie mit dem Array: werte = [9,3,-4,6,11,-2,3]
    Berechnen Sie die Summe aller Gewinne (Werte>0) in der Variable gewinn und aller Verluste (Werte<0) in der Variable verlust.
    Geben Sie am Ende den Gewinn, den Verlust und die Gesamtsumme aus.
  6. Schreiben Sie ein Unterprogramm swap( array, i, j)
    Welches die Elemente array[i] und array[j] vertauscht.
    Testen Sie das Unterprogramm mit einem Array und unterschiedlichen Indizes.
  7. Nehmen Sie den Code von oben um beliebig viele Zahlen einzulesen.
    Ihr Unterprogramm swap können Sie hier auch verwenden.

    <copy>
    werte = []

    zahl = 1
    while zahl!=0:
        eingabe = input("Zahl: ")
        zahl = int(eingabe)
        werte.append(zahl)
    </copy>
    Das Array werte soll nach jeder Eingabe sortiert sein, gehen Sie dazu wie folgt vor
  8. Nehmen Sie folgenden Code:

    def swap(array, i, j):
        h = array[i]
        array[i] = array[j]
        array[j] = h

    todo = ["aufstehen", "waschen", "frühstücken", "zur Schule", "aufmerksam schauen","behaupten das man Info liebt", "essen", "Sozialkontakte pflegen", "schlafen"]

    Der Benutzer soll jetzt beliebig viele Zahlen eingeben können.
    Nach jeder Eingabe soll der Eintrag mit diesem Index aus todo entfernt werden:
  9. Überlegen Sie sich eigene Programmideen und setzten Sie diese um.