input() und eingegebene Reihe/String von Symbolen komprimieren

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
Lini
User
Beiträge: 26
Registriert: Freitag 13. November 2020, 00:39

Hallo euch,

ich mache eine exercise auf Python, aber es sind anscheinend Fehler drin.

Code: Alles auswählen

# Schreiben Sie Programm, welches eine eingegebene Reihe von Symbolen komprimiert
# An Eingang wird folgend aussehende Reihe von Symbolen eingegeben:

# aaabbccccdaa

# Zu ausgeben ist ein String. welches aus Symbolen (von eingegebenen String)
# und von der Anzahl der Widerholungen dieser Symbolen besteht. wie z.B.:

# a3b2c4d1a2
# --------------------------------------------------------------

text = input() # Wir erhalten eingegebenen Zeile/String     <= ?!!! I think hier could be an error!!!
               # I expect hier a possibility for input an str., but there isn't any possibility...
               # with this kind of input() - it seems to not run !!

# text = map(int, input().split())    # second option   Wir erhalten eingegebenen String 

first = text[0]   # Speichern von ersten Symbol
count = 0         # Zähler setzen
result = ''       # und resultierende String

for symb in text:
   if symb == first:   # Falls Symbol == gespeicherten Symbol 
        count += 1     # Zähler wird um 1 größer
   else:
        result += first + str(count)    # sonst - speichern Ergebnis
        first = symb                    # und erneuern das gespeicherte Symbol mit seinem Zähler   
        count = 1

result += first + str(count)            # und ergänzen ins Ergebnis das letzte Symbol
print(result)
Vor allem in folgendem Fragment erwarte ich die Eingabe, aber es ist leider keine Eingabemöglichkeit von einer Reihe aus Zahlen.... und Programm scheint lange zu laufen

Ich habe das Fragment

Code: Alles auswählen

text = (input())    # Erhalten String
print(text)
als separates Programm ausprobiert, aber das Ergebnis ist ähnlich...

Was ist hier falsch? Bitte um Hilfe.
Bild
Benutzeravatar
sparrow
User
Beiträge: 4187
Registriert: Freitag 17. April 2009, 10:28

Ich verstehe dein Problem nicht.
Das Programm arbeitet doch wie erwartet?
Hast du mal in die Dokumentation geschaut, wie sich input() verhält?

Mich perlsönlich treibt die Frage um, was eigentlich mit dem String: "aaaa1bvv12dddddaxxxxx" als Eingabe passieren sollte.
Lini
User
Beiträge: 26
Registriert: Freitag 13. November 2020, 00:39

Als erstes erwarte ich eine Indikation der Eingabe von String: "aaaa1bvv12dddddaxxxxx" und die Indikation ist nicht geschah. Programmausführung "Run" scheint lange zu laufen und endet sich nicht solange.

Ich würde selbst die Eingabe so aufschreiben:

text = input("please Enter sequency of Symbols: ")

aber der Aufgabensteller hat in Roh-Code so geschrieben: text = input() und ich versuche es zu verstehen wie es funktioniert.
Benutzeravatar
sparrow
User
Beiträge: 4187
Registriert: Freitag 17. April 2009, 10:28

Naja, er erwartet halt eine Eingabe auf der Tastatur. Ersetz doch die input Zeile mit deiner input Zeile, denn es scheint so, als würdest du nicht sehen, dass eine Eingabe erwartet wird. Das wäre bei deiner Input-Zeile anders.
Benutzeravatar
__blackjack__
User
Beiträge: 13080
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@sparrow: Die leere Eingabe wäre auch interessant. Also weniger allgemein, wie Deine Eingabe, aber bei der vorhandenen Lösung.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Benutzeravatar
__blackjack__
User
Beiträge: 13080
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Ich hatte das ja gerade bei einem anderen Thema benutzt: es gibt da was in `more_itertools`:

Code: Alles auswählen

#!/usr/bin/env python3
from more_itertools import run_length


def main():
    print(
        "".join(
            f"{character}{count}"
            for character, count in run_length.encode(input())
        )
    )


if __name__ == "__main__":
    main()
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Antworten