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".
Aufgaben in der Schule
Code: Alles auswählen
>>> def minmax(list):
print min(list)
print max(list)
oder habe ich das falsch verstanden?
Hallo INFACT,
ja also aus integer Werten soll gemacht werden.
ja also aus integer Werten soll gemacht werden.
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
@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.
@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.
Ja ich denke auch, dass der einen Algorithmus sehen will
Normal mach ich ja keine Hausaufgaben, aber mir war danach...
Code: Alles auswählen
min = list[0]
max = list[0]
for item in list:
if item > max:
max = item
if item < min:
min = item
- Blade Runner
- User
- Beiträge: 21
- Registriert: Montag 23. Februar 2009, 11:41
Code: Alles auswählen
liste = sorted(liste)
print liste[0], liste[-1]
[quote="Roy Batty"]All those moments will be lost in time, like tears in rain ... time to die.[/quote]
Dazu braucht man sorted nicht, es reicht liste.sort().Blade Runner hat geschrieben:Code: Alles auswählen
liste = sorted(liste) print liste[0], liste[-1]
MfG
HWK
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.
EDIT: Upps, hab eben erst gesehen, dass ice2k3 das schon so gelöst hat. Egal. Doppelt hält besser.
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
- Blade Runner
- User
- Beiträge: 21
- Registriert: Montag 23. Februar 2009, 11:41
Das macht doch hier keinen Unterschied.HWK hat geschrieben:Dazu braucht man sorted nicht, es reicht liste.sort().
10111, das ist genau ice2k3s Lösung.
[quote="Roy Batty"]All those moments will be lost in time, like tears in rain ... time to die.[/quote]
- Blade Runner
- User
- Beiträge: 21
- Registriert: Montag 23. Februar 2009, 11:41
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.
Wobei sich das erweitern hier in Grenzen hält ... aber allgemein.
[quote="Roy Batty"]All those moments will be lost in time, like tears in rain ... time to die.[/quote]
Hehe, min() und max() kannte ich noch nicht, der Lehrer aber offensichtlich auch nicht .
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
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
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Das muss nicht sein.problembär hat geschrieben:Hehe, min() und max() kannte ich noch nicht, der Lehrer aber offensichtlich auch nicht .
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.
@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)
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?Blade Runner hat geschrieben:Das macht doch hier keinen Unterschied.HWK hat geschrieben:Dazu braucht man sorted nicht, es reicht liste.sort().
10111, das ist genau ice2k3s Lösung.
MfG
HWK
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.
Aber das vorgeschlagenemacht ja genau das. Und da ist doch , was zum selben Ergebnis führt, offensichtlich weniger aufwendig, da es keine neue Liste erzeugt.
MfG
HWK
Code: Alles auswählen
liste = sorted(liste)
Code: Alles auswählen
liste.sort()
MfG
HWK
- Blade Runner
- User
- Beiträge: 21
- Registriert: Montag 23. Februar 2009, 11:41
Ich war zu faulHWK hat geschrieben:Aber das vorgeschlagenemacht ja genau das.Code: Alles auswählen
liste = sorted(liste)
Code: Alles auswählen
kopie = sorted(liste)
[quote="Roy Batty"]All those moments will be lost in time, like tears in rain ... time to die.[/quote]