Faerelis hat geschrieben:Achso und -> das ist nur ein reines testprog, ich will hier solange eine gruppe von buchstaben immer wieder neu zusammensetzen bist zufällig das wort rauskommt wie man es oben eingegeben hat.
Spoiler
Code: Alles auswählen
>>> import random
>>> a = list("Hallo")
>>> b = a[:]
>>> counter = 0
>>> while a != b:
... counter += 1
... random.shuffle(b)
...
>>> print "%d Versuche" % counter
Code: Alles auswählen
c = ""
for i in b:
c += a[i]
print c
Code: Alles auswählen
c = "".join(a[i] for i in b)
Code: Alles auswählen
Dim As Integer i, j, wordLength, counter
Dim As String word, shuffled, tmp
Randomize
Line Input "Bitte ein Wort eingeben: ", word
wordLength = Len(word)
shuffled = word
counter = 0
Do
counter = counter + 1
For i=1 To wordLength
j = Int(Rnd * wordLength) + 1
tmp = Mid(shuffled, i, 1)
Mid(shuffled, i, 1) = Mid(shuffled, j, 1)
Mid(shuffled, j, 1) = tmp
Next
Print counter; " "; shuffled
Loop Until word = shuffled
Find' ich auch gut/besser so. Wenn die Aufgabe aber lauteteEyDu hat geschrieben:Code: Alles auswählen
>>> import random >>> a = list("Hallo") >>> b = a[:] >>> counter = 0 >>> while a != b: ... counter += 1 ... random.shuffle(b) ... >>> print "%d Versuche" % counter
wäre 'random.shuffle()' eine Killer-Methode, durch die man die Aufgabe zwar löste, aber sich zugleich auch vor ihr drückte."Sortieren Sie eine Liste nach dem Zufall neu"
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()