Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使python代码有序运行_Python - Fatal编程技术网

使python代码有序运行

使python代码有序运行,python,Python,我正在写一个程序,它会把单词组合起来,比如排列它们,但是当我运行代码时,我会打印它们 我希望程序以有序的方式运行,就像在运行第一个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

我正在写一个程序,它会把单词组合起来,比如排列它们,但是当我运行代码时,我会打印它们

我希望程序以有序的方式运行,就像在运行第一个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')

。。。我想对于长度为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之外,没有发现任何问题。

代码没有分散运行。它正按照你的程序运行。看看我写的东西,看看它是如何工作的,然后看看如何改进它
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)
这应该给你我相信你正在寻找的输出


我也不明白为什么你在这个问题上有一个
多线程标记,因为它与多线程无关。

具体来说,我认为你想要的是:

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库,其中包含了许多非常方便的工具,用于迭代列表和其他集合,因此得名。

您能提供一个所需的输出示例吗?我不知道分散是什么意思。此外,您的代码可以简化很多。一个简单的例子是定义
字母=['A','b','c','d','e','f']
然后将整个列表替换为变量
字母
。我所说的分散的意思是,它确实会打印aa aaa aa aaa aa aa aac aa aad,而不是打印所有的a b c d e f aa ab ac ad ae…提供一个您正在寻找的示例是您在这里的最佳选择。请将其作为编辑添加到问题中以显示换行符。程序的执行顺序取决于程序的控制流。在你的例子中,Python将跳转到哪个if语句为真,并跳过其余的所有语句。我还将研究使用
itertools
来消除所有这些语句。我尝试过,它在itertools.product(*[['a','b','c','d','e','f']*len_of_char)中为prod提供了以下错误消息:NameError:未定义名称“itertools”。这不会提供问题的答案。一旦你有足够的钱,你就可以了。很抱歉。编辑以修正语法。别忘了接受你认为最好的答案。不。多线程将允许您处理排列(因为完整的6级排列将提供超过500000条打印语句),同时仍然能够执行其他代码。
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