Форум сайта python.su
0
Задача такая:
Необходимо сделать генератор случайных символов на 2 значения. Могут использоваться символы (a-z) и (0-9), с указанием количества неповторяющихся комбинаций
Офлайн
0
хотелось бы на python 3.2
Офлайн
3
import random ls=[chr(x) for x in range(ord('a'),ord('z')+1)]+list('0123456789') print random.sample(ls, 2)
Отредактировано vkopey (Апрель 29, 2012 22:20:05)
Офлайн
0
может не правильно сформулировал, извиняюсь
мне необходимо “n” количество таких уникальных комбинаций, т.е. строка в которой можно указывать это количество, в последующем с выгрузкой в exel )))
Офлайн
0
чтоб в exel выгружались готовые значения в столбик




Офлайн
52
Ничего не понял, если честно. Случайные символы из набора можно получить с помощью random.sample (как показали выше). Для уникальных комбинаций можно использовать так же itertools.permutations|combinations или множества.
Учитесь формулировать мысли. Фразы “генератор случайных символов на 2 значения”, “мне необходимо “n” количество таких уникальных комбинаций, т.е. строка в которой можно указывать это количество” да и все остальные сразу наводят на мысль, что перед изучением языка для общения с компьютером нужно изучить язык для общения с людьми :)
Офлайн
0
ладно ладно… давайте ещё камнями закидайте …. сами то когда только начинали учиться python небось то же не сразу могли сформулировать свои желания 
Офлайн
52
>>> from random import sample >>> def gen_rands(symbols, rand_len): ... while True: ... yield ''.join(sample(symbols, rand_len))
>>> def make_combinations(symbols, rand_len, comb_count): ... combinations = set() ... for combination in gen_rands(symbols, rand_len): ... if len(combinations) == comb_count: ... break ... combinations.add(combination) ... ... return combinations
>>> symbols = [chr(sym) for sym in xrange(ord('a'), ord('z')+1)] + map(str, range(10))
Отредактировано fata1ex (Апрель 29, 2012 23:53:00)
Офлайн
3
import random ls=[chr(x) for x in range(ord('a'),ord('z')+1)]+list('0123456789') data=[] while len(data)<10: #x=random.sample(ls, 2) # если первый и второй не должны быть одинаковыми # или x=[random.choice(ls),random.choice(ls)] # если первый и второй могут быть одинаковыми if x not in data: data.append(x) print data
Отредактировано vkopey (Апрель 29, 2012 23:07:03)
Офлайн
52
vkopey, плохой пример. Для поддержания уникальности элементов в коллекции существуют множества.
Офлайн