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

@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

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

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

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);
        }
    }
}
Antworten