#!/usr/bin/env python """ rndList.py erzeugt Zufallszahlenreihen und durchmischte Listen/Tuples/Strings (c) 2002 by Fritz Cizmarov, Opensource """ from random import randrange def randList(num, min, max, func=randrange, data=1): """ erzeuge Liste mit "num" Integerwerten zwischen "min" und "max-1", wobei jeder Wert nur einmal vorkommen darf! Zusätzlich kann noch eine random-Funktion "func", der beim Aufruf ausser "min" und "max" noch "data" mitgegeben wird, angegeben werden. """ values = range(min,max) # Werteliste erg = [] # Ergebnisliste for i in range(num): r = func(0, len(values), data) erg.append(values[r]) # Wert aus Werteliste hinzufügen del values[r] # Wert aus Werteliste löschen return erg def shuffle(data): """ erzeuge Kopie der Liste bzw. des Tuple "data" deren Elemente durcheinandergemischt sind """ numItems = len(data) erg = [] for i in randList(numItems,0,numItems): # Liste zufällig durchlaufen erg.append(data[i]) # zufälliges Item aus Liste an Ergebnis anhängen if type(data) == type(()): erg = tuple(erg) elif type(data) == type(''): # leider führt ein erg = str(erg) nicht zum gewünschen Ergebnis tmp = "" for i in range(len(erg)): tmp += erg[i] erg = tmp return erg # Demonstration der Funktionen if __name__ == '__main__': print "Teste rndList.randList" print "randList(6, 1, 50) ->", randList(6, 1, 50) print "randList(10, 1, 11) ->", randList(10, 1, 11) print print "Teste rndList.shuffle" myListe = ['eins', 'zwei', 'drei', 'vier'] print "myListe =", myListe print "rndList.shuffle(myListe) ->", shuffle(myListe) print print "Geht natürlich auch mit einem Tuple" myTuple = ('alpha', 'beta', 'gamma', 'delta', 'omega') print "myTuple =", myTuple print "rndList.shuffle(myTuple) ->", shuffle(myTuple) print print "Und auch mit Strings" myString = ("abcdefghijklmnopqrstuvwxyz") print "myString =", myString print "rndList.shuffle(myString) ->", shuffle(myString) myString = ("Python") print "myString =", myString print "rndList.shuffle(myString) ->", shuffle(myString)