lehrkraefte:blc:informatik:glf20:programmieren:listen2

This is an old revision of the document!


Ergänzung Listen

Mehrdimensionale Listen

Eine Liste ist ein sehr flexibler Datentyp. Es kann alles mögliche zu einer Liste hinzugefügt werden. Insbesondere können die Elemente einer Liste wieder Listen sein. So können “mehrdimensionale” Listen erstellt werden.

liste = [[1,2],[3,4,5]]

Bei einer mehrdimensionalen Liste kann ähnlich wie bei einer Eindimensionalen ein spezifisches Element, oder Elementbereich ausgegeben werden.

print(liste[0][1])

Kopieren Sie den unterstehenden Code in TigerJython. Was macht der Code? Was wird ausgegeben?

from random import *

liste = []
for i in range(5):
    temp = []
    for j in range(3):
        temp.append(randint(1,100))
    liste.append(temp)

print(liste)

Versuchen Sie die Ausgabe so zu ändern, dass die Liste wie eine Matrix ausgegeben wird. In diesem Fall 5×3.

Was wird nach dem Ausführen des Programms auf der Konsole stehen?
schulklasse2a = ['Anna','Max','Mia','Gustav']
schulklasse2b = schulklasse2a
schulklasse2a[3] = 'Hans'
print(schulklasse2b)
You Scored % - /

Erklärung

Erklärung

Variablen verweisen auf Objekte. Wenn nun eine Variable auf eine Andere zugewiesen wird, zeigen beide Variablen auf das gleiche Objekt. Auf welches Objekt eine Variable verweist kann mit folgendem Befehl herausgefunden werden:

print(id(schulklasse2a))
print(id(schulklasse2b))

Beide Variablen (schulklasse2a und schulklasse2b) zeigen auf das gleiche Objekt. Jede Änderung an einer der beiden Listen hat eine Auswirkung auf die andere Liste. Dieses Problem kann umgangen werden, wenn die Listen kopiert werden. Dies kann mit folgendem Code bewerkstelligt werden:

schulklasse2b = schulklasse2a[:]

Kopfrechen-Trainer

Erstellen Sie ein Programm, welches den Benutzer nach einfachen Rechnungen fragt. Speichern Sie dabei die Fragen und Antworten in einer Liste. Wählen Sie eine Abbruchbedingung (Beispielsweise Eingabe von 'q') aus, danach soll ausgegeben werden wie viele Fragen richtig beantwortet wurden.

* Überlegen Sie sich, wo Probleme entstehen könnten

Ergänzen Sie den Kopfrechen-Trainer mit einer Angabe der Startzeit, Endzeit und der Differenz. Folgender Code hilft Ihnen dabei:

import time
from datetime import datetime

start = datetime.now()
time.sleep(2)
end = datetime.now()

print (end - start)

Lösungvorschläge

Lösungvorschläge

#Ergänzen Sie die Liste der Schülerinnen und Schüler um fünf Namen.

schulklasse = ['Anna','Max','Mia','Gustav','Paula','Hugo','Petra','Fritz','Emily']


#Schreiben Sie nun ein Programm, welches jeden zweiten Namen aus der Liste ausgibt.
#Option 1: For-Schleife

for student in range(0,len(schulklasse),2):
    print(schulklasse[student])


#Option 2: While-Schleife

counter = 0
while counter < len(schulklasse):
    print(schulklasse[counter])
    counter += 2
#Legen Sie eine Liste mit Namen “zahlen” an, die mindestens 10 Elemente enthält.
zahlen = [3,7,1,67,98,34,76,56,90,32]


#Geben Sie das siebte Element der Liste aus.
print(zahlen[6])


#Geben Sie die Elemente zwei bis acht als Liste aus.
print(zahlen[1:7])


#Geben Sie die Elemente zwei bis acht als einzelne Elemente aus
#Option 1:
counter = 1
while counter < 7:
    print(zahlen[counter])
    counter += 1

#Option 2:
for zahl in range(1,7):
    print(zahlen[zahl])


#Fügen Sie die Zahlen 15, 23 und 95 zur Liste hinzu.
zahlen.append(15)
zahlen.append(23)
zahlen.append(95)


#Löschen Sie das dritte Element aus der Liste.
zahlen.pop(2)


#Löschen Sie die Zahl 23 aus der Liste.
zahlen.remove(23)
betrag = 480  # oder   betrag=inputInt("Bitte Betrag eingeben")
noten = [200,100,50,20,10]
for note in noten:
    if betrag>=note:
        anzahl = int(betrag/note)
        print("%d %ser Noten" % (anzahl,note))
        betrag -= note*anzahl
        
if betrag>0:
    print("Es ist noch ein Betrag von %d übrig" % betrag)
betrag = 488.35  # oder   betrag=inputInt("Bitte Betrag eingeben")
noten = [200,100,50,20,10,5,2,1,0.5,0.2,0.1,0.05]
for note in noten:
    if betrag>=note:
        anzahl = int(betrag/note)
        if(note > 5):
            print("%d %ser Noten" % (anzahl,note))
        else:
            print("%d %ser Münzen" % (anzahl,note))
        betrag -= note*anzahl
        
if betrag>0:
    print("Es ist noch ein Betrag von %d übrig" % betrag)
print("Guten Tag")
liste = []

while True:
    eingabe = input("Bitte geben Sie eine positive Zahl ein")
    if eingabe == 'q' :
        break
    else:
        liste.append(eingabe)

print("Folgende Liste wird nun sortiert:")
print(liste)
#Ergänzung zur vorigen Aufgabe, Liste muss mitgegeben werden
#Version 1
for i in range(len(liste)):
    for j in range(i,len(liste)):
        if liste[i] > liste[j]:
            liste[i], liste[j] = liste[j], liste[i]

print(liste)
#Ergänzung zur vorigen Aufgabe, Liste muss mitgegeben werden
#Version 2

sortedList = []

while len(liste)>0:
    minValue = liste[0]
    minIndex = 0
    counter = 0
    
    for element in liste:
        if element < minValue:
            minValue = element
            minIndex = counter
        counter += 1
    sortedList.append(liste[minIndex])
    liste.pop(minIndex)

print(sortedList)
        
  • lehrkraefte/blc/informatik/glf20/programmieren/listen2.1605713686.txt.gz
  • Last modified: 2020/11/18 16:34
  • by mirco.triner