Python字符串替换为字符并逐个字母递增

时间:2018-10-03 15:09:51

标签: python

目前,我正在学习python脚本并尝试获取以下输出

1BCD
2BCD
3BCD
11CD
21CD
31CD
12CD
22CD
32CD
13CD
23CD
33CD
111D
211D
311D
121D
221D
321D

等等..直到最后一个字符

这如何实现?我正在使用python 3.0,请在我的代码下面找到

import sys

def tv():
    GET = 'ABCD'
    INC = 0
    IGKINNER = 0
    COUNT = 0
    i = 0
    while (COUNT < 1):
        IGKINNER = IGKINNER + 1
        try:
            for h in range(len(GET)):
                print('GET', GET)
                INC = INC + 1
                if (INC == 1):
                    GET = GET.replace(GET[IGKINNER], chr(49), 1)
                if (INC == 2):
                    GET = GET.replace(GET[IGKINNER], chr(50), 1)
                if (INC == 3):
                    GET = GET.replace(GET[IGKINNER], chr(51), 1)
                if (INC >=4):
                    INC = 0
                    break
        except:
            COUNT = 3
    return

tv()

请帮助我,非常感谢

2 个答案:

答案 0 :(得分:2)

使用itertools.product可以轻松实现。下面的代码产生问题中指定的输出,但是很容易将其推广为更多数字。

from itertools import product

base = 'ABCD'
for i in range(1, 5):
    s = base[i:]
    for t in product('123', repeat=i):
        print(''.join(t[::-1]) + s)

输出

1BCD
2BCD
3BCD
11CD
21CD
31CD
12CD
22CD
32CD
13CD
23CD
33CD
111D
211D
311D
121D
221D
321D
131D
231D
331D
112D
212D
312D
122D
222D
322D
132D
232D
332D
113D
213D
313D
123D
223D
323D
133D
233D
333D
1111
2111
3111
1211
2211
3211
1311
2311
3311
1121
2121
3121
1221
2221
3221
1321
2321
3321
1131
2131
3131
1231
2231
3231
1331
2331
3331
1112
2112
3112
1212
2212
3212
1312
2312
3312
1122
2122
3122
1222
2222
3222
1322
2322
3322
1132
2132
3132
1232
2232
3232
1332
2332
3332
1113
2113
3113
1213
2213
3213
1313
2313
3313
1123
2123
3123
1223
2223
3223
1323
2323
3323
1133
2133
3133
1233
2233
3233
1333
2333
3333

答案 1 :(得分:0)

您对所需内容的描述不是很清楚,但这会产生您想要的内容(每次不打印GET):

def tv():
    base = "ABCD"
    nums = "123"
    s4 = base[3]+nums
    s3 = base[2]+nums
    s2 = base[1]+nums
    for c4 in s4:
        for c3 in s3:
            for c2 in s2:
                for c1 in nums:
                    print(c1+c2+c3+c4)
            s2 = nums
        s3 = nums