注册 登录
编程论坛 Python论坛

无重复字符串的排列组合

北斗星君 发布于 2023-02-10 15:27, 893 次点击
要求是从0,1,2,3,4,5,6,7,8,9,这10个字符中,每组字符随机组合长度为16位的字符串。输出的格式要求是下面的样子

????????????????-????????????????-????????????????

? 代表一个字符,中间用横杠-隔开,每组都是16位长字符串,三组字符串为一组。
要求生成批量不重复的字符串组合。
小弟头疼,没思路,求大神相助。
4 回复
#2
东海ECS2023-02-10 22:03
回复 楼主 北斗星君
程序代码如下:
程序代码:

# 无重复字符串的排列组合
#
要求是从0,1,2,3,4,5,6,7,8,9,这10个字符中,每组字符随机组合长度为16位的字符串。输出的格式要求是下面的样子
#
#
????????????????-????????????????-????????????????
#
#
? 代表一个字符,中间用横杠-隔开,每组都是16位长字符串,三组字符串为一组。
#
要求生成批量不重复的字符串组合。
#
小弟头疼,没思路,求大神相助。

import random


my_list = []
my_list1 = []
your_list = []
your_list2 = []
your_list3 = []
k = 0

for i in range(10):
    my_list.append(input('请输入第%d个字符串:' % i))
for i in my_list:
    for j in range(len(i)):
        my_list1.append(i[j])
    # for j in range(len(my_list)):
    #     k = k + len(my_list[j])
    #     f
    # for j in range(k):
    #     pass
    # for j in my_list[i]:
    #     a = random.randint(1, 3)
    #     if a == 1:
    #         your_list.append(j)
    #     elif a == 2:
    #         your_list2.append(j)
    #     elif a == 3:
    #         your_list3.append(j)
    #     else:
    #         print('error.')
    for j in my_list1:
        a = random.randint(1, 3)
        if a == 1:
            your_list.append(j)
        elif a == 2:
            your_list2.append(j)
        elif a == 3:
            your_list3.append(j)
        else:
            print('error.')
for i in your_list:
    print(i, end = '')
print('-', end = '')
for i in your_list2:
    print(i, end = '')
print('-', end = '')
for i in your_list3:
    print(1, end = '')
print('')
print('end.')


希望对你有帮助!
#3
北斗星君2023-02-13 04:33
回复 2楼 东海ECS
大佬给力啊
#4
mrexcel2023-02-17 18:19
可以用两次join函数:
from random import randint as r
for i in range(11):
    print('-'.join(list(''.join([str(r(0,9)) for k in range(16)]) for n in range(3))))


9157325456155714-1487686062824555-4882468024567072
8665919530860296-6860508424285682-4245015664192407
0274377754868771-4368866158969542-3304555799466230
2478091860486167-9743475202405944-3626086727299783
3409534936873980-8394310448994111-7037696112300426
6423734291169062-3085799956654212-5440980879978946
4865056091931302-7720478098043514-4012187231738837
1400440810459711-4306042634451008-7516036865081606
1690915494300731-1691877216749434-3238595328720368
9444898336201065-5851940415805070-6784489905487046
0591292730524435-3795360279478749-7871472793005923

16*3的随机数据,重复的概率几乎为0
#5
北斗星君2023-03-05 11:23
回复 4楼 mrexcel
大佬给力啊
1