(gelöst)Problem beim interieren in einer for-Schleife

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.
BlackJack

Beitragvon BlackJack » Montag 15. September 2008, 20:48

@Schaf220: Deine Darstellung der Daten ist übrigens suboptimal, weil der Bytewert von 'š' von der verwendeten Kodierung abhängt. Nicht jeder verwendet cp1252.

Code: Alles auswählen

def unpack(data):
    result = list()
    data = iter(data)
    for character in data:
        if ord(character) > 127:
            result.append(data.next() * (ord(character) - 127))
        else:
            result.append(character)
    return ''.join(result)

def main():
    packed_data = 'rldtxtabcd\x9aEabcd'
    print unpack(packed_data)
abgdf

Beitragvon abgdf » Montag 15. September 2008, 21:00

Ach so, jetzt ist's schon fertig ...

Hatte sowieso nicht genau verstanden, wie das gemeint war.
War (dicht am Original) soweit:

Code: Alles auswählen

l = ["r", "l", "d", "t", "x", "t", "a", "b", "c", "d", "s", "E", "a", "b", "c", "d"]

l2 = l[:]

for i in range(0, len(l) - 1, 1):
    l2[i + 1] = ord(l[i]) * l[i + 1]

for i in l2:
    print i

Gruß
sea-live
User
Beiträge: 440
Registriert: Montag 18. Februar 2008, 12:24
Wohnort: RP

Beitragvon sea-live » Dienstag 16. September 2008, 08:26

DANKE an die Moderatoren für die ausführlich hilfestellung und das Eindrucksvolle aufzeigen der OOp Sprachorientierten Programmierung

Leute wie ich und auch warscheinlich Schaf220 die von der ablauforitierten seite kommen
denken in diesen sachen in die falsche richtung.
BlackJack

Beitragvon BlackJack » Dienstag 16. September 2008, 10:44

Also ich sehe da jetzt nicht besonders viel OOP-spezifisches. Meine Lösung ist doch "ablauforientiert". Mal abgesehen von der Polymorhie bietet das nicht so besonders viel mehr als dieses (ungetestete) C-Schnippsel:

Code: Alles auswählen

void unpack(void)
{
    int byte, count, i;
   
    while ((byte = get_byte()) != -1) {
        if (byte & 0x80) {
            count = byte & 0x7f;
            byte = get_byte();
            for (i = 0; i < count; ++i) put_byte(byte);
        } else {
            put_byte(byte);
        }
    }
}

Wer ist online?

Mitglieder in diesem Forum: werdas34