Найти - Пользователи
Полная версия: Генератор случайных символов по шаблону
Начало » Python для новичков » Генератор случайных символов по шаблону
1 2
inquiring
Задача такая:
Необходимо сделать генератор случайных символов на 2 значения. Могут использоваться символы (a-z) и (0-9), с указанием количества неповторяющихся комбинаций
inquiring
хотелось бы на python 3.2
vkopey
import random
ls=[chr(x) for x in range(ord('a'),ord('z')+1)]+list('0123456789')
print random.sample(ls,  2)
Такой подходит?
А что значит “…с указанием количества неповторяющихся комбинаций” ?
inquiring
может не правильно сформулировал, извиняюсь
мне необходимо “n” количество таких уникальных комбинаций, т.е. строка в которой можно указывать это количество, в последующем с выгрузкой в exel )))
inquiring
чтоб в exel выгружались готовые значения в столбик
fata1ex
Ничего не понял, если честно. Случайные символы из набора можно получить с помощью random.sample (как показали выше). Для уникальных комбинаций можно использовать так же itertools.permutations|combinations или множества.

Учитесь формулировать мысли. Фразы “генератор случайных символов на 2 значения”, “мне необходимо “n” количество таких уникальных комбинаций, т.е. строка в которой можно указывать это количество” да и все остальные сразу наводят на мысль, что перед изучением языка для общения с компьютером нужно изучить язык для общения с людьми :)
inquiring
ладно ладно… давайте ещё камнями закидайте …. сами то когда только начинали учиться python небось то же не сразу могли сформулировать свои желания
fata1ex
>>> 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))
vkopey
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
fata1ex
vkopey, плохой пример. Для поддержания уникальности элементов в коллекции существуют множества.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB