Seite 2 von 2

Re: Turtle: Binärwerte in Matrizen in Pixel umwandeln

Verfasst: Samstag 14. April 2012, 21:40
von MikeOrMichael
Die Funktion ist toll: sie gibt einen genauen Index von den Werten und der Position, danke :)

Code: Alles auswählen

def px(matrix, x, y):
     paint_mapping = {0: paint_black, 1: paint_white}
             for x, row in enumerate(matrix):
                     for y, bcolor in enumerate(row):
                             print(bcolor, x, y)

px(matrix, 25, 25)
1 0 0
0 0 1
1 0 2
0 0 3
1 1 0
0 1 1
0 1 2
1 1 3

def px(matrix, x, y):
        paint_mapping = {0: paint_black, 1: paint_white}
        for x, row in enumerate(matrix):
                for y, bcolor in enumerate(row):
                        print(bcolor)

px(matrix, 10, 10)
1
0
1
0
1
0
0
1

for x, row in enumerate(matrix):
	print(row)

	
[1, 0, 1, 0]
[1, 0, 0, 1]
Tut mir leid,dass ich noch frage: die Funktion paint_mapping, sie sorgt dafür, dass für den Wert 0/1 paint_white/black zugeordnet wird; aber ich habe nirgendwo die Bedeutung der { } ? Ich habe leider nichts dazu gefunden. Ist das ein Kürzel für eine Funktion ?

Re: Turtle: Binärwerte in Matrizen in Pixel umwandeln

Verfasst: Samstag 14. April 2012, 22:17
von BlackJack
@MikeOrMichael: Du hast noch keine Wörterbücher (`dict`) kennen gelernt? Solltest Du schleunigst nachholen, denn das ist neben Listen der wohl wichtigste Containerdatentyp unter den Grundtypen von Python.

Re: Turtle: Binärwerte in Matrizen in Pixel umwandeln

Verfasst: Samstag 14. April 2012, 23:29
von MikeOrMichael
@BlackJack: Ich habe mich informiert. Wirklich sehr nützlich mit den Keys und den Items. Gibt es egrenzungen bei der Anzahl der Items pro Keys ?

An alle: Hyperions Funktion hat funktioniert ! Ohne hängen, ohne nichts. Das Problem ist: jetzt hat Python mir die Matrix (oder das Array) um 90° Ost gedreht :oops: . Ich glaube, da ist eine Variable, die dafür sorgt. Das ist die Funktion:

Code: Alles auswählen

def px(matrix, x, y):
        paint_mapping = {0: paint_white, 1: paint_black}
        for x, row in enumerate(matrix):
                for y,bcolor in enumerate(row):
                        paint_mapping[bcolor](x, y)
Kann es sein, dass die Argumente (x, y) in Zeile 1 und die Variablen x und y in den Schleifen eigentlich was anderes darstellen ?

Re: Turtle: Binärwerte in Matrizen in Pixel umwandeln

Verfasst: Sonntag 15. April 2012, 12:42
von Leonidas
MikeOrMichael hat geschrieben:@BlackJack: Ich habe mich informiert. Wirklich sehr nützlich mit den Keys und den Items. Gibt es egrenzungen bei der Anzahl der Items pro Keys ?
Ja, an einen Key geht nur ein Objekt.

(Und das darf beliebiges sein, Liste, Dict, eigene Klassen, Tupel)

Re: Turtle: Binärwerte in Matrizen in Pixel umwandeln

Verfasst: Sonntag 15. April 2012, 15:53
von MikeOrMichael
@Leonidas: Danke dir.

An alle: Problem gelöst !!!

Ich habe herausgefunden, dass bei der Funktion, egal welche ich Koordianten eingebe, er immer wieder auf (0, 0) als Grundpunkt zurückgeht. Es lag alles daran, da die Anfangsarguemnte (x, y), welche die Koordianten des Startpunktes darstellen, später zu den Argumenten der Matrix wurde, sprich x = Reihe und y = Kolonne.
Und da der Anfangspunkt der Matrix auch immer 0, 0 ist, hat er die [x][y] Werte als gleiche Koordianten benutzt. Ich habe einfach nur neue Variablen benutzt und diese dann hinzugefügt bzw. substrahiert (und bei paint_ kommt noch ein offset von *10 dazu):

Code: Alles auswählen

def _paint(x, y, bcolor):
    speed('fastest')
    up()
    goto (x*10, y*10)
    down()
    color(bcolor)
    fillcolor(bcolor)
    i = 0
    begin_fill()
    while i < 4:
        forward(10)
        right(90)
        i = i + 1
    end_fill()

def px(matrix, x, y):
        paint_mapping = {0: paint_white, 1: paint_black}
        for m, row in enumerate(matrix):
                for n,bcolor in enumerate(row):
                        paint_mapping[bcolor](x + n, y - m)
Vielen vielen Dank an alle !!! Besonders an Hyperion für seine tolle Funktion :mrgreen: .
Ihr habt mich wirklich gerettet und mir das Leben vereinfacht.
Ich werde jetzt Python weiterstudieren, da gibts noch vieeeeeel zu tun.
Im Abschluss: Nie wieder C++ ! :D

Re: Turtle: Binärwerte in Matrizen in Pixel umwandeln

Verfasst: Montag 16. April 2012, 12:00
von Hyperion
MikeOrMichael hat geschrieben: Im Abschluss: Nie wieder C++ ! :D
Na dann haben wir die Welt ja ein wenig besser gemacht... :twisted:

SCNR ;-)

Re: Turtle: Binärwerte in Matrizen in Pixel umwandeln

Verfasst: Mittwoch 18. April 2012, 15:18
von Dobi
Langsamer ist nicht immer besser... :twisted:
SCNR either ;-)

Re: Turtle: Binärwerte in Matrizen in Pixel umwandeln

Verfasst: Mittwoch 18. April 2012, 15:58
von Hyperion
Dobi hat geschrieben:Langsamer ist nicht immer besser... :twisted:
In Python geht vieles schneller! ;-)