Seite 1 von 1

Länge eines Strings funktioniert nicht?

Verfasst: Mittwoch 8. Juni 2022, 17:23
von disc
Also, ich muss für programmieren HÜ die Länge eines Strings herausfinden

Ich hätte ja len(meineFormel) gemacht aber irgendwie kommt entweder 0 heraus oder das
TypeError: object of type 'type' has no len()

In diesem Fall habe ich halt im Internet zuerst nachgeschaut und überall steht das len(formel) normalerweise funktionieren sollte
in meinem Fall is die Formel halt

s = str(input("Welchen Text möchtest du verschlüsseln? = "))
s und wird von nem input bestimmt

und hier
for i in range(len(s)):
is die Stelle mit der Fehlermeldung

Mir fällt so jz nicht wirklich ein was falsch sein könnte weswegen ich hier um Hilfe frage
Danke!

Habs gefunden

Verfasst: Mittwoch 8. Juni 2022, 17:43
von disc
Ich habe nach 13-mal gefunden was es war
Entschuldigung falls das hier jz irgendwie jemanden gestört hat

Trotzdem Danke!!

Re: Länge eines Strings funktioniert nicht?

Verfasst: Mittwoch 8. Juni 2022, 17:46
von Sirius3
0 und TypeError sind ja zwei ziemlich verschiedene Sachen.
Anhand Deines Code-Fragments kann man den Fehler nicht rekonstruieren. Poste Deinen gesamten Code und die komplette Fehlermeldung inklusive Traceback. In Deinem Code kommt `formel` nämlich gar nicht vor.
`input` liefert bereits einen String, den nochmal per `str` zu konvertieren ist unsinnig.
`s` ist ein schlechter Variablenname, weil nichtssagend, wie einbuchstabige Variabelnnamen so oft. `text` wäre hier passender.

Re: Länge eines Strings funktioniert nicht?

Verfasst: Donnerstag 9. Juni 2022, 07:54
von ThomasL
Beide Posts sehen mir aus wie von einem Bot zusammen gesetzt. Der nächste Beitrag ist dann wohl wieder einer mit einem Link.

Re: Länge eines Strings funktioniert nicht?

Verfasst: Donnerstag 9. Juni 2022, 08:05
von sparrow
@disc: Dir for-Schleife sieht auch komisch aus. Man iteriert in Python direkt über die Elemente eines iterierbaren Objektes. Braucht man zusätzlich einen Index verwendet man enumerate.

Re: Länge eines Strings funktioniert nicht?

Verfasst: Donnerstag 9. Juni 2022, 08:17
von __blackjack__
@disc: Die Schleife dort ist in Python ein „anti pattern“ weil man direkt über die Elemente von Sequenzen iterieren kann, ohne den Umweg über einen Laufindex. Also statt:

Code: Alles auswählen

    text = input("Welchen Text möchtest Du verschlüsseln? > ")
    
    for i in range(len(text)):
        ...
Kann man direkt über die Zeichen von `text` iterieren:

Code: Alles auswählen

    text = input("Welchen Text möchtest Du verschlüsseln? > ")
    
    for character in text:
        ...
Sollte man *zusätzlich* eine laufende ganze Zahl zu jedem Zeichen benötigen, gibt es die `enumerate()`-Funktion:

Code: Alles auswählen

    text = input("Welchen Text möchtest Du verschlüsseln? > ")
    
    for i, character in enumerate(text):
        ...
Sollte hier der Laufindex dann nur verwendet werden um auf eine andere Sequenz zuzugreifen, also zwei (oder mehr) sozusagen ”parallele” Datenstrukturen zuzugreifen, verwendet man stattdessen die `zip()`-Funktion:

Code: Alles auswählen

    text = input("Welchen Text möchtest Du verschlüsseln? > ")
    
    for character, key_value in zip(text, key_values):
        ...