Seite 1 von 1

Buchstaben umtauschen

Verfasst: Montag 19. April 2021, 19:27
von Obliviin
Hallo,

ich lerne gerade Python und bin noch ziemlich unerfahren,darum bitte ich um Hilfe.
Der Code sollte ein Wort als Input nehmen (später vielleicht mehr) und die Positionen der Buchstaben umändern. Leider funktioniert es nicht, und eine Fehlermeldung kriege ich auch nicht.

import random

user = input("Gib ein Wort ein")

word = list(user)

password = [ ]

if len(word) == 1:

position = [i for i ,letters in enumerate(word)]

for index in position:

password[random.choice(index)]= letters

password = " ".join(password)

print(password)

Re: Buchstaben umtauschen

Verfasst: Dienstag 20. April 2021, 06:45
von Sirius3
Dass jede zweite Zeile eine Leerzeile ist, macht den Code schwer lesbar. Eingerückt wird immer mit 4 Leerzeichen pro Ebene, nicht 2.

Code: Alles auswählen

import random

user = input("Gib ein Wort ein")
word = list(user)
password = [ ]

if len(word) == 1:
    position = [i for i ,letters in enumerate(word)]
    for index in position:
        password[random.choice(index)] = letters
        password = " ".join(password)
        print(password)
Das Programm macht nur dann etwas, wenn Du ein Wort mit genau einem Buchstaben eingibst. So hast Du es programmiert.
Läßt man die if-Abfrage weg, dann kommen viele Fehler. `letters` ist nur innerhalb der Listcomprehension definiert. `letters` ist ein falscher Name für EINEN Buchstaben.
`position` sollte `positions` heißen, weil ja mehrere Positionen in der Liste enthalten sind, oder sind das doch Indizes?
In Python kann man bei Listen nicht auf beliebige Indizes zugreifen, dazu muß man erst die Liste mit Werten füllen. `index` ist eine Zahl, und mit einer Zahl funktioniert random.choice nicht.
Dann wandelst Du die Liste `password` in einen String `password` um, so dass das Schreiben im nächsten for-Durchlauf erst recht nicht mehr funktioniert.

Warum nennst Du ein eingegebenes Wort `user`?

Du hast hier sehr viele Zeilen Code heruntergeschrieben, ohne dass Du die einzelnen Teile ausgiebig getestet hättest. Gerade am Anfang ist es sinnvoll, jede einzelne Zeile im Interaktiven Modus auszuführen und sich genau anzuschauen, was die Zeile tut und ob sie wirklich so funktioniert, wie man das denkt.

Re: Buchstaben umtauschen

Verfasst: Dienstag 20. April 2021, 12:13
von __blackjack__
Da gibt's schon was von Ratio…, ähm, im `random`-Modul:

Code: Alles auswählen

#!/usr/bin/env python3
import random


def main():
    zeichen = list(input("Gib ein Wort ein: "))
    random.shuffle(zeichen)
    print("".join(zeichen))


if __name__ == "__main__":
    main()

Re: Buchstaben umtauschen

Verfasst: Mittwoch 21. April 2021, 11:39
von Obliviin
Danke für die Antworten.