Seite 1 von 2
Aufgaben in der Schule
Verfasst: Mittwoch 11. März 2009, 21:42
von baGX
Hallo, ich habe erst vor kurzen mit Python angefangen und wir haben in der Schule eine Aufgabe bekommen zu Python die wie folgt lautet.
Entwickle ein Python Programm, das aus einer vogegeben Liste, bestehend aus Integer-Werten, das größte und das kleinste Element ausgibt.
PS: Wir nehmen grad Listen in Python durch. Wäre echt net wenn ihr mir helfen könntet.
Edit (Leonidas): Verschoben. Ist schließlich keine "Idee".
Verfasst: Mittwoch 11. März 2009, 21:44
von INFACT
sollte doch funktionieren mit Integern...
oder habe ich das falsch verstanden?
INFACT
Verfasst: Mittwoch 11. März 2009, 21:47
von baGX
Hallo INFACT,
ja also aus integer Werten soll gemacht werden.
Verfasst: Mittwoch 11. März 2009, 21:59
von cofi
@INFACT Nur sollte man dabei keine built-ins überschreiben
@baGX
http://www.python-forum.de/topic-1689.html
Ansonsten kannst du dich auch vertrauensvoll an die offizielle Dokumentation wenden ( ->
http://docs.python.org/)
Das ist zwar der eleganteste Weg die Aufgabe zu lösen, aber ich glaube aber ehrlich gesagt nicht, dass der Lehrer das im Sinn hatte.
Verfasst: Donnerstag 12. März 2009, 08:26
von ms4py
Ja ich denke auch, dass der einen Algorithmus sehen will
Code: Alles auswählen
min = list[0]
max = list[0]
for item in list:
if item > max:
max = item
if item < min:
min = item
Normal mach ich ja keine Hausaufgaben, aber mir war danach...
Verfasst: Donnerstag 12. März 2009, 11:20
von sea-live
ihr ünerschreibt alle build ins die beispile sind damit nicht gerade
hilfreich
wi wärs mit sinnvollen variablen namen auserhalb der buildins
z.b maximalwert
minimalwert
oder ähnliches
Verfasst: Donnerstag 12. März 2009, 16:01
von Blade Runner
Verfasst: Donnerstag 12. März 2009, 16:11
von HWK
Blade Runner hat geschrieben:
Dazu braucht man sorted nicht, es reicht liste.sort().
MfG
HWK
Verfasst: Donnerstag 12. März 2009, 16:19
von 10111
Also ich kenne auch solche Hausaufgaben. Da geht's i.d.R. darum, alles "zu Fuß" zu machen. Das übt ungemein das grundsätzliche Verständnis, wie ein Algorithmus funktioniert. Da das Beispiel so einfach ist, beteilige ich mich auch mal.
Code: Alles auswählen
# Erst mal eine unsortierte Liste.
liste = [2, 8, 9, 3, 1, 10, 7, 6]
# Der minimale / maximale Wert wird auf das erste Element der Liste gesetzt.
minwert = maxwert = liste[0]
# Jetzt wird geschaut, ob die Listenelemente kleiner oder größer
# sind als die akt. Werte und entsprechend angepasst.
for wert in liste:
if wert<minwert:
minwert = wert
if wert>maxwert:
maxwert = wert
print minwert, maxwert
EDIT: Upps, hab eben erst gesehen, dass ice2k3 das schon so gelöst hat. Egal. Doppelt hält besser.
Verfasst: Donnerstag 12. März 2009, 16:26
von Blade Runner
HWK hat geschrieben:Dazu braucht man sorted nicht, es reicht liste.sort().
Das macht doch hier keinen Unterschied.
10111, das ist genau ice2k3s Lösung.
Verfasst: Donnerstag 12. März 2009, 16:33
von Hyperion
Die Frage ist, wieso mann das überhaupt hier fertig gelöst gepostet hat. So lernt der OP sicherlich nix!
Verfasst: Donnerstag 12. März 2009, 16:39
von Blade Runner
Naja, er kann sich einen Ansatz raussuchen und erweitern ... also "nichts lernen" kann man so nicht sagen.
Wobei sich das erweitern hier in Grenzen hält ... aber allgemein.
Verfasst: Donnerstag 12. März 2009, 17:21
von problembär
Hehe, min() und max() kannte ich noch nicht, der Lehrer aber offensichtlich auch nicht
.
Verfasst: Donnerstag 12. März 2009, 17:26
von Leonidas
Wo wir schon dabei sind, offensichtlich unsinnigen Code zu posten:
Code: Alles auswählen
def recmax(iterable):
if len(iterable) == 1:
return iterable[0]
else:
tailmax = recmax(iterable[1:])
if iterable[0] >= tailmax:
return iterable[0]
else:
return tailmax
Verfasst: Donnerstag 12. März 2009, 20:18
von numerix
problembär hat geschrieben:Hehe, min() und max() kannte ich noch nicht, der Lehrer aber offensichtlich auch nicht
.
Das muss nicht sein.
Es ist durchaus sinnvoll aus didaktischen Gründen, einen Algorithmus schreiben zu lassen, der das größte/kleinste Element liefert, ohne dafür eine builtin-function zu verwenden. Auch wenn den meisten hier die dahinter stehende Idee - über die Liste iterieren und immer mit dem bis dahin größten/kleinsten Element vergleichen - so trivial erscheint, dass es schmerzt: Für einen Schüler, der das algorithmische Denken noch lernen muss, kann das durchaus anspruchsvoll sein.
Die Tatsache, dass das "Problem" hier überhaupt auftaucht, bestätigt das.
Verfasst: Donnerstag 12. März 2009, 20:21
von BlackJack
@Leonidas: Der Name `iterable` ist unpassend. Wenn es wirklich für beliebige `iterable` funktionieren soll (ungetestet):
Code: Alles auswählen
def minmax(iterable):
values = iter(iterable):
try:
min_value, max_value = values.next()
except StopIteration:
raise ValueError('empty iterable')
for value in values:
min_value = min(min_value, value)
max_value = max(max_value, value)
return (min_value, max_value)
Verfasst: Donnerstag 12. März 2009, 21:49
von HWK
Blade Runner hat geschrieben:HWK hat geschrieben:Dazu braucht man sorted nicht, es reicht liste.sort().
Das macht doch hier keinen Unterschied.
10111, das ist genau ice2k3s Lösung.
Das macht schon einen Unterschied. Warum soll man unnötigerweise eine neue Liste erzeugen, wenn ich bereits eine Liste besitze, die ich an Ort und Stelle sortieren kann?
MfG
HWK
Verfasst: Donnerstag 12. März 2009, 22:03
von BlackJack
Zum Beispiel weil die Leute von einer Funktion die Minimum und Maximum einer Liste bestimmt, vielleicht erwarten, das diese Funktion die Liste nicht einfach so umsortiert!? `min()` und `max()` machen das ja auch nicht.
Verfasst: Donnerstag 12. März 2009, 22:30
von HWK
Aber das vorgeschlagene
macht ja genau das. Und da ist doch
, was zum selben Ergebnis führt, offensichtlich weniger aufwendig, da es keine neue Liste erzeugt.
MfG
HWK
Verfasst: Donnerstag 12. März 2009, 22:34
von Blade Runner
HWK hat geschrieben:Aber das vorgeschlagene
macht ja genau das.
Ich war zu faul
zu schreiben.