你好我们这里有一小段代码让我很头疼。在这个函数中,我定义了一个名为word
的列表,突然之间列表变成了一个字符串。我不知道这怎么可能:
def find_best_shift(wordlist, text):
words = []
word = []
for x in range(0, 27):
apply_shift(text, x)
for character in text:
print (type(word))
if (character in ALPHABET) or (character in alphabet):
word.append(character)
else:
wor = ''.join(word)
words.append(wor)
word = []
for word in words:
y = is_word(wordlist, word)
if y == True:
return x
你们注意到打印声明print(type(word))
。使用此语句,我得到以下输出:
<class 'list'>
<class 'list'>
<class 'list'>
<class 'list'>
<class 'list'>
<class 'list'>
<class 'list'>
<class 'list'>
<class 'list'>
<class 'list'>
<class 'list'>
<class 'list'>
<class 'str'>
然后它给了我以下错误:
File "C:\Users\usuario\Documents\Python Projects\ps4\ps4.py", line 264, in find_best_shift
word.append(character)
AttributeError: 'str' object has no attribute 'append'
我将不胜感激任何帮助!
答案 0 :(得分:8)
for word in words:
重新指定相同的名称(word
)作为words
列表的元素,然后转到x
的下一个值。将此更改为其他内容。
for item in words:
重用名称会引起一些有趣的问题:(
不要忘记更新
y = is_word(wordlist, word)
到
y = is_word(wordlist, item)
我会简化
if y == True:
简单地
if y:
如果一起开始链接条件,与布尔文字明确比较可能会产生一些有趣的结果。