好吧,仔细看看你的函数:
def delete(word,letter):
word = []
char = ""
if char != letter:
word+=char # or `word = word.append(char)` in 2nd version
return word
因此,该函数获取了一个单词和一个传入的字母。您要做的第一件事就是丢弃该单词,因为您正在用不同的值(一个新的空列表)覆盖局部变量。接下来,您将初始化一个空字符串char
并将其内容(它是空的)与传递的字母进行比较。如果它们不相等,即如果letter
不是空字符串,则将空字符串char
添加到 (empty list)word
中。然后word
被退回。
另请注意,您不能将字符串添加到列表中。对列表的+
操作仅用于合并两个列表,因此您的append
版本绝对不会出错。鉴于您想要一个字符串作为结果,将结果存储为一个开始更有意义。
当发生与传递的单词完全无关的事情时,不要将空字符串添加到空字符串/列表中,而是要保持原始单词完整并以某种方式查看每个字符。您基本上想遍历单词并保留所有不是通过字母的字符;像这样的东西:
def delete(word, letter):
newWord = '' # let's not overwrite the passed word
for char in word:
# `char` is now each character of the original word.
# Here you now need to decide if you want to keep the
# character for `newWord` or not.
return newWord
for var in something
基本上将采用序列并为该序列something
的每个值执行循环体,使用变量标识var
。字符串是字符序列,因此循环变量将包含单个字符,并且针对字符串中的每个字符执行循环体。