打印输出时,在输出之前出现空行

时间:2016-09-12 21:49:50

标签: python combinations

我试图编写一个程序,要求用户输入一个字符串和一个数字(在同一行),然后打印所有可能的字符串组合,直到数字的大小。输出格式应为:所有大写字母,每行的每个组合,组合长度(最短的第一个)和按字母顺序排列。

我的代码以正确的顺序输出正确的组合,但它在输出之前放置了一个空,我不知道为什么。

from itertools import combinations
allcombo = []
S = input().strip()
inputlist = S.split()
k = int(inputlist[1])
S = inputlist[0]

#
for L in range(0, k+1):
    allcombo = []

    for pos in combinations(S, L):

        pos = sorted(pos)
        pos = str(pos).translate({ord(c): None for c in "[]()', "})
        allcombo.append(pos) 
        allcombo = sorted(allcombo)  
    print(*allcombo, sep = '\n')

输入:

HACK 2

输出:

(Empty Line)
A
C
H
K
AC
AH
AK
CH
CK
HK

此外我只编写了大约一周的时间,所以如果有人想告诉我如何正确地写这个,我会非常高兴。

1 个答案:

答案 0 :(得分:0)

观察这一行:

for L in range(0, k+1) # Notice that L is starting at 0.

现在,请观察以下一行:

for pos in combinations(S, L)

因此,在内部for循环的第一次迭代中,我们将有以下内容:

for pos in combinations(S, 0) # This is an empty collection during your first loop.

基本上没有在你的循环中执行任何工作,因为没有什么可以迭代,你只是打印一个空字符串。

更改以下代码:

for L in range(0, k+1)

到此:

for L in range(1, k+1) # Skips the empty collection since L starts at 1.

这将解决您的问题。