Seite 1 von 1

Defintion von Zyklen

Verfasst: Dienstag 24. Dezember 2019, 12:01
von MRO5494
Hallo Leute,

Ich habe folgende Beispiel-Tabelle.

x y
1 2
2 4
3 8
4 9
1 2
2 6
3 7
4 1
1 8
2 8
3 9
4 4

Nun möchte ich definieren, das x= 1-4 immer ein zyklus ist und mir das maximum ausgeben lassen. Es gibt also im Beispiel 3 Zyklen, von denen ich jeweils den Maximalwert von y ausgelesen haben möchte.

Kann mir jemand helfen wie man diese Zyklen definiert, oder nach was ich googeln könnte. Ich bin Python-Anfänger und verliere mich sehr schnell in verschiedenen packages. Ich habe es bisher immer über die Spaltenangabe gelöst, aber ich möchte das mein Programm automatisch erkennt, das 1-4 ein Zyklus ist.

Vielen Dank im Voraus.

Mit freundlichen Grüßen

MRO

Re: Defintion von Zyklen

Verfasst: Dienstag 24. Dezember 2019, 13:14
von pillmuncher
Ich weiß nicht recht, was du mit "Definition von Zyklen" meinst, aber so kannst du die Maximalwerte jedes "Zyklus" ausgeben lassen:

Code: Alles auswählen

#!/usr/bin/env python3

def main():
    table = [[1, 2],
             [2, 4],
             [3, 8],
             [4, 9],
             [1, 2],
             [2, 6],
             [3, 7],
             [4, 1],
             [1, 8],
             [2, 8],
             [3, 9],
             [4, 4]]

    data = iter(table)
    xmax, ymax = next(data)
    for x, y in data:
        if xmax >= x:
            print(ymax)
            xmax = x
            ymax = y
        else:
            ymax = max(y, ymax)
    print(ymax)

if __name__ == '__main__':
    main()
Ergebnis:

Code: Alles auswählen

$ python3 cycle.py
9
7
9

Re: Defintion von Zyklen

Verfasst: Donnerstag 26. Dezember 2019, 15:15
von MRO5494
Dankeschön. Das hat mir sehr geholfen

Re: Defintion von Zyklen

Verfasst: Donnerstag 23. Januar 2020, 16:36
von MRO5494
Hallo,

Ich habe nochmal versucht mich intensiver mit dieser if else Anweisung auseinander zu setzen, verstehe sie aber immer noch nicht hundertprozentig.

Ich habe nun folgende Tabelle:
table = [[1, 2],
[1, 4],
[1, 8],
[1, 9],
[2, 2],
[2, 6],
[2, 7],
[2, 1],
[3, 8],
[3, 8],
[3, 9],
[3, 4]]

und deinen Code wie folgt angepasst:
data = iter(table)
xmax, ymax = next(data)
for x, y in data:
if xmax >= x:
print(ymax)
else:
xmax = x
ymax = max(y, ymax)
print(ymax)

Mein gewünschtes Ergebnis ist wieder 9, 7, 9. Es wird jedoch 2 2 2 2 2 2 8 8 8 8 ausgegeben.

Was mache ich Falsch?

Re: Defintion von Zyklen

Verfasst: Donnerstag 23. Januar 2020, 17:56
von Sirius3
Du hast also den Code von pillmuncher ignoriert, und irgendetwas anderes geschrieben und fragst nun, warum der Code etwas anderes als der von pillmuncher liefert?
Was hast Du Dir für Gedanken gemacht, als Du die Zeilen so geschrieben hast, wie Du sie geschrieben hast?