Buchstaben eines Wortes in eine Liste einlesen
@problembär: Bei der Aufgabenstellung "Sortieren Sie eine Liste nach dem Zufall neu" ist `random.shuffle()` genau die richtige Antwort und selber schreiben wäre Overkill, weil das in der Aufgabenstellung nicht gefordert ist.
Selbst wenn man random.shuffle() selber schreiben muss ist eine Implementation doch wesentlich eleganter zu bewerkstelligen.
Code: Alles auswählen
# coding: utf-8
import random
def shuffled(l):
return sorted(l, key=lambda _: random.randrange(len(l)))
def main():
word = list(raw_input(u"Bitte ein Wort eingeben: "))
tries = 0
while word != shuffled(word):
tries += 1
print u"Es wurden %d Versuche benötigt" % tries
if __name__ == "__main__":
main()
@DasIch: Mir ist das heute zu spät um tatsächlich drüber nachzudenken, aber bist Du sicher dass Dein `shuffle()` unter der Voraussetzung das der Sortieralgorithmus stabil ist, nicht eventuell mehr dazu neigt Buchstaben nicht zu tauschen als `random.shuffle()`? Weil durch die Beschränkung auf ganze Zahlen im Bereich der Indexe deutlich wahrscheinlicher ist, dass man die gleiche Zahl mehr als einmal erwischt. Ich hätte da als `key` einfach nur ``lambda _: random.random()`` genommen.