您好,我不断收到此代码错误:
def pacman(word):
finalword = []
wordlist = list(word)
for c in wordlist:
if c in 'abcdefijklmnpqruvwxyz':
finalword = finalword.append('_')
elif c in 'ghost':
indicator = word.find('o')
rest_of_word = wordlist[indicator::]
finalword = finalword.extend(rest_of_word)
return finalword
对于此代码,我希望函数将'_'附加到最终词中。但是,当它在'ghost'中遇到一个字符时,我希望它指示任何字符首次出现的索引号(因为我不知道怎么用'o'作为指示符)。 然后,我想将索引号存储在找到它的位置,并通过字符串切片生成指示符后面的其余单词。然后通过将rest_of_word扩展为finalword来创建最终列表,以此来结束
print(pacman('pacmanloses')) # wanted outcome : [_,_,_,_,_,_,_o,s,e,s]
但是我得到了错误
File "C:/Users/mere/Desktop/pacmanINFINITE.py", line 6, in pacman
finalword = finalword.append('_')
AttributeError:'NoneType'对象没有属性'append'
答案 0 :(得分:0)
两者:
finalword = finalword.append('_')
和:
finalword = finalword.extend(rest_of_word)
是错误的。 append
和extend
都将适当的现有list
进行突变,并且像Python中大多数此类突变方法一样,返回None
。您想要:
finalword.append('_')
和:
finalword.extend(rest_of_word)
因此,您无需就地修改finalword
的{{1}},然后立即将其丢弃,将list
重新绑定到finalword
并中断以后的所有使用。
答案 1 :(得分:0)
问题是您将数组视为字符串,而不是将数组视为包含单个字符的字符串数组。这是我想您想要的:
def pacman(word):
finalword = []
wordlist = list(word)
stop = False
for c in wordlist:
if not stop:
if c in 'abcdefijklmnpqruvwxyz':
finalword.append("_")
elif c in 'ghost':
indicator = word.find('o')
rest_of_word = wordlist[indicator::]
for c2 in rest_of_word:
finalword.append("" + c2)
wordlist = list()
stop = True
return finalword
输出:['_','_','_','_','_','_','_','o','s','e','s']
请注意,您所说的第一个“ o”之前没有下划线。
答案 2 :(得分:0)
某些函数可以就地运行,它们不会返回任何内容,并且不会对您传递的参数进行处理,以使原始数据也会更改。现在需要记住一个重要的事情:在python中,即使是就地函数也会返回某些内容,无。 python中没有输入,这显然意味着没有 :)。像这样更改第6行以消除错误:
#finalword = finalword.append('_')
finalword.append('_')
也在第11行中
#finalword = finalword.extend(rest_of_word)
finalword.extend(rest_of_word)
我不知道这是什么游戏,我想你想这样做:
elif c in 'ghost':
if c == 'g':
indicator = word.find('g')
rest_of_word = wordlist[indicator:]
elif c == 'h':
indicator = word.find('h')
rest_of_word = wordlist[indicator:]
elif c == 'o':
indicator = word.find('o')
rest_of_word = wordlist[indicator:]
elif c == 's':
indicator = word.find('s')
rest_of_word = wordlist[indicator:]
else:
indicator = word.find('t')
rest_of_word = wordlist[indicator:]
您似乎是python初学者,但我不想让您感到困惑,但是请记住,有一种叫做正则表达式的东西,您可以使用它来更有效地处理文本。稍后再检查。