我正在努力找出最后几个字母最连续的单词。例如,在此字符串中:
asd atsd ard afs agrs args ats
这里的输出应该是:"afs agrs args ats"
我试图通过以下循环来实现这一点:
for i in range(0,len(wordlist)):
current_letter = wordlist[i][-1]
next_letter == wordlist[i+1][-1]
if current_letter = next_letter:
longest_sequence.append(current_letter)
在此之后,我将比较最长序列的长度和current_sequence
的长度,并在current_sequence
更长时更新它
然而,我得到了一个list index out of range error
。我确实理解这是为什么,但我不明白如何在不丢失列表的最后一个字母的情况下解决此错误(通过:range(0,len(wordlist) - 1
)
我现在已将代码更改为:
for i in range(0,len(wordlist) - 2):
if wordlist[i][-1] == wordlist[i+1][-1]:
print(wordlist[i], wordlist[i+1])
但是,当输入"tts attgs ghf ghhf loll lpl lpl wow"
时,我只得到以下内容:"tts attgs ghf ghhf loll lpl lpl lpl"
。所以当在连续的一对中添加第二个单词时,我似乎在有3个连续的结尾时创建了一个double。然而,我不明白为什么会发生这种情况
实际上,您可以使用
range(0,len(wordlist-1))
,并且不会丢失最后一个字母next_letter
将是最后一封信这里有很多错误。首先,您的
i
范围包括最后一个单词的索引,但随后执行wordlist[i+1]
,这将在范围的最后一次迭代中超出范围next_letter == wordlist[i+1][-1]
是比较,而不是赋值if current_letter = next_letter:
是赋值,而不是比较如果这是一个比较,如果它是
False
,那么您不想采取一些行动,比如对longest_sequence
中的内容做些什么,然后在继续之前清除它吗下面是对所有这些的一种总结,通过修复代码中的问题,并指出您需要一些附加逻辑的地方:
相关问题 更多 >
编程相关推荐