Blatt5, Durchschnittsfarbe

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Blatt5, Durchschnittsfarbe
Moin,

ich hätte mal eine Frage zur Durchschnittsfarbe.
Wie genau sollen wir hier den Durchsnitt ermitteln?

Es sind ja mehrere Möglichkeiten denkbar.

  • das arithmetische Mittel für jeweils für R, G und B
  • oder jeweils (Min + Max) / 2 (würde ich mal vermuten)

Die zweite Variante hat bei allen Testfällen bis auf diesen hier gegriffen:

[color=darkviolet]Der Aufruf color_average
([(3, 1, 253, 0, 2),
(0, 2, 254, 1, 2),
(0, 1, 255, 2, 2),
(253, 1, 0, 0, 0),
(254, 1, 0, 1, 0),
(255, 1, 0, 2, 0)]) liefert das Ergebnis
[(128, 2, 128, 0, 2),
(128, 2, 128, 1, 2),
(128, 2, 128, 2, 2),
(128, 2, 128, 0, 0),
(128, 2, 128, 1, 0),
(128, 2, 128, 2, 0)], richtig wäre aber
[(128, 1, 127, 0, 2),
(128, 1, 127, 1, 2),
(128, 1, 127, 2, 2),
(128, 1, 127, 0, 0),
(128, 1, 127, 1, 0),
(128, 1, 127, 2, 0)].[/color]

Das Problem ist, dass die in der Aufgabenstellung genannte Funktion round() bei genau x.5 aufrundet. Hier sollte aber abrunden werden.

Nun bin ich mir nicht sicher ob ich das mit der Durschnittsfarbe richtig interpretiert habe.

Danke
Gruß
Rotbart


in der aufgabenstellung steht explizit „Mittelwert“. also wenn man deine definitionen hernimmt, macht intuitiv die zweite nicht viel sinn (warum nur minimum und maximum bei einem mittelwert berücksichtigen?)

damit kommst du zumindest auch auf die zahlenwerte in dem testcase.

„Verwenden Sie dabei die Python Funktion round […]“
ja, [m]round[/m] funktioniert so, dass auf- oder abgerundet wird.
ich sehe in der aufgabenstellung nichts davon, dass du innerhalb dieser teilaufgabe ausschießlich abrunden sollst…


Hey,

die Zweite wäre eine abweichende Definition des arithmetischen Mittels names Bereichsmittel.
https://de.wikipedia.org/wiki/Mittelwert#Bereichsmittel

Da ich ja bei beiden Murx rauskam habe ich nachgefragt, um ein Missverständnis der Aufgabe auszuschließen.
Das kann ich recht gut.

Dann wahrscheinlich ein Fehler im Code.

Danke

Gruß


ich würde sagen, dass man darauf kommen könnte. :wink:

schaut man sich mal die englische version von median-cut auf wikipedia an:
https://en.wikipedia.org/wiki/Median_cut:

ferner…
https://en.wikipedia.org/wiki/Average:

zu deinem problem:
die öffentlichen testcases beinhalten grundsätzlich eher oberflächliche fälle. du kannst dich nicht darauf verlassen, dass deine eigene lösung komplett richtig funktioniert nur anhand dessen, ob alle testcases erfolgreich durchlaufen. es ist im sinne des übungsbetriebes, eigenständig seinen code auf korrektes verhalten zu prüfen. dafür ist es durchaus angegebracht hierzu eigenständig testcases zu entwerfen und diese in der hierfür vorgesehenen [m]main[/m] funktion in der jeweiligen code-datei einzufügen und zu testen. siehe dazu auch „Fehlerbehandlung“ Folie 39 ff. in 01_pythonintro2-v1.pdf.

oftmals sind sich studenten anfangs nicht sicher, ob der code genau das macht, was er theoretisch machen sollte. ein guter ansatz ist dann sich testcases auszudenken, jene auf papier durchrechnet, im eigenen programm laufen lässt und anschließend vergleicht. teilergebnisse können in python ja ganz gut mittels [m]print(variable)[/m] ausgegeben werden (nennt sich übrigens tatsächlich Print debugging: https://en.wikipedia.org/wiki/Debugging#Techniques).