我正在尝试编写一个程序来打印 a
到 zzz
的所有可能组合。我尝试添加保存状态功能,它工作正常,但有这个错误。
假设我在程序打印出诸如 e
之类的内容时中断了程序。当我再次执行该程序时,它在 z
之前工作正常,但在 z
之后,它不是打印 aa
,而是打印 ba
然后从ba
继续。这也会在打印 zz
之后发生。它打印 baa
而不是 aaa
。我该如何解决这个问题?
这是我到目前为止所做的:
import pickle,os,time
alphabet="abcdefghijklmnopqrstuvwxyz"
try:
if os.path.isfile("save.pickle")==True:
with open("save.pickle","rb") as f:
tryn=pickle.load(f)
for i in range(3):
a=[x for x in alphabet]
for j in range(i):
a=[x+i for x in alphabet for i in a]
b=a[tryn:]
for k in b:
print(k)
time.sleep(0.01)
tryn+=1
else:
tryn=0
for i in range(3):
a=[x for x in alphabet]
for j in range(i):
a=[x+i for x in alphabet for i in a]
for k in a:
print(k)
tryn+=1
time.sleep(0.01)
except KeyboardInterrupt:
with open("save.pickle","wb") as f:
pickle.dump(tryn,f)
最佳答案
如果您使用 python2 或 python3(如标签所示),则它已存在于标准库中。请参阅 itertools,product py2 ,和 product py3 ,寻找解决此问题的简单方法。
关于python 列表生成/保存错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21265910/