hallo
coole sache yipyip...danke dir. werd ich ausprobieren
grüsse
In Python Array auslesen und interpretieren?
Klar, bei nur 2 Zuständen reichen boolsche Werte aus.
Ich denke bei diesen Problemstellungen immer an
endliche Automaten, deshalb habe ich mir die Anzahl der Zustände
zunächst offengelassen und deshalb Integer-Werte verwendet.
yipyip
Ich denke bei diesen Problemstellungen immer an
endliche Automaten, deshalb habe ich mir die Anzahl der Zustände
zunächst offengelassen und deshalb Integer-Werte verwendet.
yipyip
Hallo Dill
ja, da ist auch balast dabei aber dieser ist für meine anwendung uninteressant ich möchte einfach später nur den kurzen Text "Relais wurde aktiviert" sehen.
ja, da ist auch balast dabei aber dieser ist für meine anwendung uninteressant ich möchte einfach später nur den kurzen Text "Relais wurde aktiviert" sehen.
Zuletzt geändert von gooogle am Samstag 6. März 2010, 17:46, insgesamt 1-mal geändert.
fff gh
"lookup_seq" ist ein selbstdefinerte Variable:
Bei numerix könntest Du nach Zeile 8 schreiben
oder auch gleich direkt:
(Ist mein Code so unverständlich? .... ...)
yipyip
Code: Alles auswählen
In [2]: a, b, c = [1, 2, 3]
In [3]: lookup_seq = a, c
In [4]: lookup_seq
Out[4]: (1, 3)
Code: Alles auswählen
a, b, c = seq
lookup_seq = a, c
if lookup_seq in events:
....
Code: Alles auswählen
if ((seq[0], seq[2])) in events:
...
yipyip
also mal angenommen ein frame is so aufgebaut:
[startflag, ack, seq, data, crc, endflag]
und data kann die werte 1, 2, 3 annehmen.
dann willst du ernsthaft data folgendermaßen verarbeiten:
[startflag, ack, seq, data, crc, endflag]
und data kann die werte 1, 2, 3 annehmen.
dann willst du ernsthaft data folgendermaßen verarbeiten:
Code: Alles auswählen
if frame == [startflag, ack, seq, 1, crc, endflag]: (...)
elif frame == [startflag, ack, seq, 2, crc, endflag]: (...)
elif frame == [startflag, ack, seq, 3, crc, endflag]: (...)
else: print "w0t?"
http://www.kinderpornos.info
yipyip
danke nein dein code ist übersichtlich aber ich wollte es erstmal ohne Klassen versuchen wie gesagt bin noch amateur in diesem gebiet. habe bislang nur in C programmiert und python für mich noch etwas ungewohnt.
habe versucht beide versionen unter python auszuführen aber erhalte kein ergebnis. gibt es einen trick? oder verwende ich den falschn pyhton editor (Python 3.0 IDLE (GUI))?
Dill
nee..was in den puffer geladen wird, sind nur die daten und die kennezeichnung eines frame anfangs bzw ende
danke nein dein code ist übersichtlich aber ich wollte es erstmal ohne Klassen versuchen wie gesagt bin noch amateur in diesem gebiet. habe bislang nur in C programmiert und python für mich noch etwas ungewohnt.
habe versucht beide versionen unter python auszuführen aber erhalte kein ergebnis. gibt es einen trick? oder verwende ich den falschn pyhton editor (Python 3.0 IDLE (GUI))?
Dill
nee..was in den puffer geladen wird, sind nur die daten und die kennezeichnung eines frame anfangs bzw ende
fff gh
(Arrgh... grad wollte ich die Antwort abschicken, kommt ein
"Failed to connect"...)
Also bei mir mit Python 2.5 funktionierts, auch in Idle
erscheint die stdout-Ausgabe in der Python-Shell.
Mit 3.x habe ich mich noch nicht beschäftigt,
vielleicht reicht es ja, die print-Befehle anzupassen.
yipyip
"Failed to connect"...)
Also bei mir mit Python 2.5 funktionierts, auch in Idle
erscheint die stdout-Ausgabe in der Python-Shell.
Mit 3.x habe ich mich noch nicht beschäftigt,
vielleicht reicht es ja, die print-Befehle anzupassen.
yipyip
Ok, das mit dem
hat Dich etwas auf die falsche Fährte geführt.
(mein Fehler, wollte nur ein einfaches, allgemeines Beispiel geben).
Die Sequenzen können ja beliebige Länge haben.
Im obigen Fall muss die Sequenz aber genau 3 Elemente besitzen.
Deshalb hier noch etwas Experimentiercode, abgeleitet von
numerix' Beispiel:
http://paste.pocoo.org/show/117815/
yipyip
Code: Alles auswählen
a, b, c = seq
(mein Fehler, wollte nur ein einfaches, allgemeines Beispiel geben).
Die Sequenzen können ja beliebige Länge haben.
Im obigen Fall muss die Sequenz aber genau 3 Elemente besitzen.
Deshalb hier noch etwas Experimentiercode, abgeleitet von
numerix' Beispiel:
http://paste.pocoo.org/show/117815/
yipyip
Hallo yipyip
sitze gerade vor dem code und versuche es nachzuvollziehen. ich habe mal den code mit komentaren versehen, damit du siehst ob ich es richtig verstanden gabe
sitze gerade vor dem code und versuche es nachzuvollziehen. ich habe mal den code mit komentaren versehen, damit du siehst ob ich es richtig verstanden gabe
Zuletzt geändert von gooogle am Samstag 6. März 2010, 17:47, insgesamt 1-mal geändert.
fff gh
Habe das jetzt so verstanden, dass Du die Indizes und
deren Anzahl flexibel halten möchtest.
Dann musst Du eben die zu untersuchenden Indizes definieren
und eine Funktion schreiben, die mit deren Hilfe die Sequenz auf
eine Liste der benötigten "lookup-Sequenzen" abbildet.
Habe das hier ziemlich zusammengehackt, hoffe, es
reicht als weiterer Ausgangspunkt.
http://paste.pocoo.org/show/117925/
yipyip
deren Anzahl flexibel halten möchtest.
Dann musst Du eben die zu untersuchenden Indizes definieren
und eine Funktion schreiben, die mit deren Hilfe die Sequenz auf
eine Liste der benötigten "lookup-Sequenzen" abbildet.
Habe das hier ziemlich zusammengehackt, hoffe, es
reicht als weiterer Ausgangspunkt.
http://paste.pocoo.org/show/117925/
yipyip
Zuletzt geändert von yipyip am Dienstag 19. Mai 2009, 00:25, insgesamt 2-mal geändert.
Du konntest schon immer längere Sequenzen analysieren.Was genau muss ich ändern, um auch grössere elemente zu analysieren:
Nur bei
Code: Alles auswählen
lookup_seq = seq[0], seq[2]
da sonst "seq[2]" einen IndexError auswirft.
Es hängt nur davon ab, welchen maximalen Index
Du für die lookup-Sequenz verwenden willst.
Ist dieser zu gross, kann die zu untersuchende Sequenz sofort verworfen werden.
yipyip
Hallo yipyip,
Ich hab es mal ausprobiert und es funktioniert soweit ganz gut
Allerdings wenn man sich den Output ansieht, so sieht man dass beide Tuple Listen angezeigt werden, z.B. (8, 2, 0, 6, 77) (8, 2, 0, 6) . ich bräuchte aber nur das erstere immer, also z.B. (8, 2, 0, 6, 77) --> 144.3 --> Relais on
Ich hab es mal ausprobiert und es funktioniert soweit ganz gut
Allerdings wenn man sich den Output ansieht, so sieht man dass beide Tuple Listen angezeigt werden, z.B. (8, 2, 0, 6, 77) (8, 2, 0, 6) . ich bräuchte aber nur das erstere immer, also z.B. (8, 2, 0, 6, 77) --> 144.3 --> Relais on
Zuletzt geändert von gooogle am Samstag 6. März 2010, 17:47, insgesamt 1-mal geändert.
fff gh
Das Problem ist nicht die Ausgabe
(da muss man doch nur die print-Befehle richtig schreiben),
sondern die Tatsache, dass Dein 'Time'
mit dem event-Dictionary verknüpft ist.
Es sollte aber nur zum 'puffer' gehören.
Der Einfachheit halber habe ich jetzt angenommen,
dass jede Zahl in 'puffer' mit einem Timestamp versehen ist.
Für die Zeit einer Ereignismeldung wird der Timestamp des Markers verwendet.
(Wie das genau bei Dir aussieht und wie Du das anpassen
musst, sei erstmal dahingestellt.)
In 'etwas schöner':
http://paste.pocoo.org/show/118031/
Bücher/Doku? ...gibts doch genug:
Original Doku, Learning Python, Programming Python,
Core Python, A Byte of Python, Dive into Python, ...
...entweder im Internet oder in der Uni-Bib Deines Vertrauens.
yipyip
(da muss man doch nur die print-Befehle richtig schreiben),
sondern die Tatsache, dass Dein 'Time'
mit dem event-Dictionary verknüpft ist.
Es sollte aber nur zum 'puffer' gehören.
Der Einfachheit halber habe ich jetzt angenommen,
dass jede Zahl in 'puffer' mit einem Timestamp versehen ist.
Für die Zeit einer Ereignismeldung wird der Timestamp des Markers verwendet.
(Wie das genau bei Dir aussieht und wie Du das anpassen
musst, sei erstmal dahingestellt.)
In 'etwas schöner':
http://paste.pocoo.org/show/118031/
Bücher/Doku? ...gibts doch genug:
Original Doku, Learning Python, Programming Python,
Core Python, A Byte of Python, Dive into Python, ...
...entweder im Internet oder in der Uni-Bib Deines Vertrauens.
yipyip
Hallo yipyip
danke dir muss mich etwas sammeln, soviele Funktionen und neue Varianten...da muss man sich erst etwas dran gewöhnen
eine frage noch, was genau bedeutet dies:
return [s for s in result if s]
im kommentar steht dass es leere listen rauswirft, aber wie das genau gemacht wird ist mir ein rätsel. komme mit dem s for s in result if s nicht klar heisst das dass eine forschleife erzeugt wird die das result[] durchkämmt und alles was s, also Listen, sind zurückgibt?
danke dir muss mich etwas sammeln, soviele Funktionen und neue Varianten...da muss man sich erst etwas dran gewöhnen
eine frage noch, was genau bedeutet dies:
return [s for s in result if s]
im kommentar steht dass es leere listen rauswirft, aber wie das genau gemacht wird ist mir ein rätsel. komme mit dem s for s in result if s nicht klar heisst das dass eine forschleife erzeugt wird die das result[] durchkämmt und alles was s, also Listen, sind zurückgibt?
fff gh
Das ganze nennt sich "List Comprehension" und ist an die
mathematische Mengennotation angelehnt.
Erster Anlaufpunkt:
http://docs.python.org/tutorial/datastr ... rehensions
In diesem Fall bedeutet das:
Erzeuge eine Liste mit Objekten s aus result,
wobei bool(s) == True gelten soll.
Falls s == [] (die leere Liste), dann hat s den Wahrheitswert 'False',
wird also nicht mit aufgenommen.
Somit werden in unserem Fall nur die Listen gesammelt,
die nicht leer sind und leere Listen (die aufgrund der Schleifenlogik vorkommen können) aussortiert.
yipyip
mathematische Mengennotation angelehnt.
Erster Anlaufpunkt:
http://docs.python.org/tutorial/datastr ... rehensions
In diesem Fall bedeutet das:
Erzeuge eine Liste mit Objekten s aus result,
wobei bool(s) == True gelten soll.
Falls s == [] (die leere Liste), dann hat s den Wahrheitswert 'False',
wird also nicht mit aufgenommen.
Somit werden in unserem Fall nur die Listen gesammelt,
die nicht leer sind und leere Listen (die aufgrund der Schleifenlogik vorkommen können) aussortiert.
yipyip