Aufgaben in der Schule

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
baGX
User
Beiträge: 2
Registriert: Mittwoch 11. März 2009, 21:37
Kontaktdaten:

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".
INFACT
User
Beiträge: 385
Registriert: Freitag 5. Dezember 2008, 16:08

Code: Alles auswählen

>>> def minmax(list):
	print min(list)
	print max(list)
sollte doch funktionieren mit Integern...
oder habe ich das falsch verstanden?
baGX
User
Beiträge: 2
Registriert: Mittwoch 11. März 2009, 21:37
Kontaktdaten:

Hallo INFACT,
ja also aus integer Werten soll gemacht werden.
Benutzeravatar
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.
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Ja ich denke auch, dass der einen Algorithmus sehen will :wink:

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...
sea-live
User
Beiträge: 440
Registriert: Montag 18. Februar 2008, 12:24
Wohnort: RP

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
Benutzeravatar
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]
:wink:
[quote="Roy Batty"]All those moments will be lost in time, like tears in rain ... time to die.[/quote]
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Blade Runner hat geschrieben:

Code: Alles auswählen

liste = sorted(liste)
print liste[0], liste[-1]
Dazu braucht man sorted nicht, es reicht liste.sort().
MfG
HWK
10111
User
Beiträge: 22
Registriert: Samstag 21. Februar 2009, 01:34

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. :?
Benutzeravatar
Blade Runner
User
Beiträge: 21
Registriert: Montag 23. Februar 2009, 11:41

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.
[quote="Roy Batty"]All those moments will be lost in time, like tears in rain ... time to die.[/quote]
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Die Frage ist, wieso mann das überhaupt hier fertig gelöst gepostet hat. So lernt der OP sicherlich nix!
Benutzeravatar
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. :wink:
[quote="Roy Batty"]All those moments will be lost in time, like tears in rain ... time to die.[/quote]
problembär

Hehe, min() und max() kannte ich noch nicht, der Lehrer aber offensichtlich auch nicht :lol:.
Leonidas
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
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

problembär hat geschrieben:Hehe, min() und max() kannte ich noch nicht, der Lehrer aber offensichtlich auch nicht :lol:.
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.
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)
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

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
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.
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Aber das vorgeschlagene

Code: Alles auswählen

liste = sorted(liste)
macht ja genau das. Und da ist doch

Code: Alles auswählen

liste.sort()
, was zum selben Ergebnis führt, offensichtlich weniger aufwendig, da es keine neue Liste erzeugt.
MfG
HWK
Benutzeravatar
Blade Runner
User
Beiträge: 21
Registriert: Montag 23. Februar 2009, 11:41

HWK hat geschrieben:Aber das vorgeschlagene

Code: Alles auswählen

liste = sorted(liste)
macht ja genau das.
Ich war zu faul

Code: Alles auswählen

kopie = sorted(liste)
zu schreiben. ;)
[quote="Roy Batty"]All those moments will be lost in time, like tears in rain ... time to die.[/quote]
Antworten