使python代码有序运行
我正在写一个程序,它会把单词组合起来,比如排列它们,但是当我运行代码时,我会打印它们 我希望程序以有序的方式运行,就像在运行第一个print语句之后,它将移动到第二个print语句,而不是分散它 这是密码使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
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