您的代码有两个问题:首先,您的if
-condition 会巧妙地做错事 - 例如,
>>> 'hello, simon'.startswith('simon')
False
>>> 'simon' in 'hello, simon'
True
in
测试子字符串是否在字符串中的任何位置。为了测试它是否正好在开始,Python 提供了一个方便地调用的函数startswith
:
>>> 'simon'.startswith('s')
True
您唯一的另一个问题是,目前,您将打印出整个输入字符串,包括您想要删除的“Simon says”。删除它的最简单方法是使用str.replace
:
>>> 'simon says'.replace('simon', 'fred')
'fred says'
并且用空字符串 ( ''
) 替换将有效地删除子字符串。但这又出现了同样的问题——它会替换字符串中的任何地方:
>>> 'simon says lets play simon says'.replace('simon says', '')
' lets play '
但是你可以告诉它最多只替换一个 - 因为你已经知道字符串以“Simon says”开头,所以你知道那将是开头的那个:
>>> 'simon says lets play simon says'.replace('simon says', '', 1)
' lets play simon says'
或者,您可以使用字符串切片 -'fred'[2:]
要求从'fred'
(所以,从 'e')的第二个字符之后开始的字符串,一直到结尾:
>>> 'fred'[2:]
'ed'
“西蒙说”有 10 个字母,所以:word[10:]
将是word
之后的一切。但是,如果您错误地计算了字母的数量,这很容易导致细微的错误 - 为避免这种情况,您可以让 Python 为您做这件事,如下所示:
word[len('Simon says'):]