查看您的代码,如果您要解决的部分是第 24-26 行中的注释,那么您绝对不需要为此动态创建变量,实际上我什至无法想象它们如何帮你。
你有这个:
enum = [i for i,x in enumerate(letterlist) if x == word]
你的变量的名称非常令人困惑——所谓的东西word
是猜测的字母,而你有一个不同的变量letterguess
是别的东西,然后一个变量叫做letter
这就是整个词……但我想我明白了你的目标。
enum
是word
within的所有索引的列表letterlist
。例如,如果letterlist
is'letter'
和word
is t
,它将是[2, 3]
。
然后你这样做:
bracketstrip = (str(w) for w in enum)
所以现在bracketstrip
是['2', '3']
。我不确定你为什么想要那个。
z = int(''.join(bracketstrip))
并且''.join(bracketstrip)
是'23'
,所以z
是23
。
letterguess[z] = word
现在你得到一个IndexError
, 因为你试图设置letterguess[23]
而不是设置letterguess[2]
and letterguess[3]
。
这是我认为您想要替换的内容:
enum = [i for i,x in enumerate(letterlist) if x == word]
for i in enum:
letterguess[i] = word
关于代码其他部分的一些提示:
你有几个地方可以做这样的事情:
letterlist = []
for eachcharacter in letter:
letterlist.append(eachcharacter)
这与letterlist = list(letter)
. 但实际上,您根本不需要该列表。你唯一能做的就是for i, x in enumerate(letterlist)
,而且你一开始就可以做同样的事情letter
。你通常会让事情变得比你必须做的要困难得多。确保您真正理解为什么要编写每一行代码。
“因为我无法让它以任何其他方式工作”不是一个原因——<em>你想开始工作是什么?为什么你认为你需要一个list
字母?没有人可以同时将所有这些决定都记在脑海中。您拥有的技能越多,您的代码就越明显以至于不需要注释,但您永远不会到达不需要任何注释的地步。当您刚开始时,每次您弄清楚如何做某事时,添加一条评论,提醒自己您正在尝试做什么,以及为什么它有效。您以后可以随时删除评论;你永远无法收回不是你写的评论。