使python代码有序运行

时间:2017-01-19 22:11:45

标签: python

我正在编写一个程序,它将组合像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')

4 个答案:

答案 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之外没有看到问题。