我正在编写一个程序,它将组合像permute这样的单词,但是当我运行代码时,无论如何打印它们
我希望程序以有序的方式运行,就像在运行第一个print语句之后,它将移动到第二个print语句而不是散布它
这是代码
len_of_char = input('What is the lenght of the characters: ')
if len_of_char == 1:
for a in ['a', 'b', 'c', 'd', 'e', 'f']:
print(str(a) + '\n')
elif len_of_char == 2:
for a in ['a', 'b', 'c', 'd', 'e', 'f']:
for b in ['a', 'b', 'c', 'd', 'e', 'f']:
print(str(a) + '\n')
print(str(a + b) + '\n')
elif len_of_char == 3:
for a in ['a', 'b', 'c', 'd', 'e', 'f']:
for b in ['a', 'b', 'c', 'd', 'e', 'f']:
for c in ['a', 'b', 'c', 'd', 'e', 'f']:
print(str(a) + '\n')
print(str(a + b) + '\n')
print(str(a + b + c) + '\n')
elif len_of_char == 4:
for a in ['a', 'b', 'c', 'd', 'e', 'f']:
for b in ['a', 'b', 'c', 'd', 'e', 'f']:
for c in ['a', 'b', 'c', 'd', 'e', 'f']:
for d in ['a', 'b', 'c', 'd', 'e', 'f']:
print(str(a) + '\n')
print(str(a + b) + '\n')
print(str(a + b + c) + '\n')
print(str(a + b + c + d) + '\n')
elif len_of_char == 5:
for a in ['a', 'b', 'c', 'd', 'e', 'f']:
for b in ['a', 'b', 'c', 'd', 'e', 'f']:
for c in ['a', 'b', 'c', 'd', 'e', 'f']:
for d in ['a', 'b', 'c', 'd', 'e', 'f']:
for e in ['a', 'b', 'c', 'd', 'e', 'f']:
print(str(a) + '\n')
print(str(a + b) + '\n')
print(str(a + b + c) + '\n')
print(str(a + b + c + d) + '\n')
print(str(a + b + c + d + e) + '\n')
elif len_of_char == 6:
for a in ['a', 'b', 'c', 'd', 'e', 'f']:
for b in ['a', 'b', 'c', 'd', 'e', 'f']:
for c in ['a', 'b', 'c', 'd', 'e', 'f']:
for d in ['a', 'b', 'c', 'd', 'e', 'f']:
for e in ['a', 'b', 'c', 'd', 'e', 'f']:
for f in ['a', 'b', 'c', 'd', 'e', 'f']:
print(str(a) + '\n')
print(str(a + b) + '\n')
print(str(a + b + c) + '\n')
print(str(a + b + c + d) + '\n')
print(str(a + b + c + d + e) + '\n')
print(str(a + b + c + d +e +f) + '\n')
答案 0 :(得分:1)
.gitignore
......我想
答案 1 :(得分:1)
具体来说,我认为你想要的是:
import itertools
alf = 'abcdef'
for n in range(1, len(alf)+1):
for w in map(lambda t: ''.join(t), itertools.combinations_with_replacement(alf, n)):
print w
itertools
是标准的Python库,里面有许多非常方便的工具,用于遍历列表和其他集合,因此得名。
答案 2 :(得分:0)
代码没有分散运行。它完全按照您的编程方式运行。看看我写的是什么,看看它是如何工作的,然后看看如何改进它。 itertools
会更有效率,但我没有时间。
def permute(inputNum):
letters = ['a', 'b', 'c', 'd', 'e', 'f']
for i in range(int(inputNum),0,-1):
if i >= 1:
for a in letters:
if i >= 2:
for b in letters:
if i >= 3:
for c in letters:
if i >= 4:
for d in letters:
if i >= 5:
for e in letters:
if i >= 6:
for f in letters:
print(a+b+c+d+e+f,"\n")
else:
print(a+b+c+d+e,"\n")
else:
print(a+b+c+d,"\n")
else:
print(a+b+c,"\n")
else:
print(a+b,"\n")
else:
print(a,"\n")
myNum = input("Enter a number from 1 to 6 ---> ")
permute(myNum)
这可以为您提供我相信您正在寻找的输出。
我也不明白你为什么在这个问题上有multi-threading
标签,因为它与多线程无关。
答案 3 :(得分:-1)
对于长度为2的情况,你有一个额外的for循环。
elif len_of_char == 2:
for a in ['a', 'b', 'c', 'd', 'e', 'f']:
for b in ['a', 'b', 'c', 'd', 'e', 'f']:
for a in ['a', 'b', 'c', 'd', 'e', 'f']: # here is the extra for loop
print(str(a) + '\n')
print(str(a + b) + '\n')
抱歉,我无法发表评论,所以我只是想指出代码中的明显错误,并认为一旦我提到它就很容易发现错误。我测试了你的代码,除了len_of_char == 2之外没有看到问题。