あなたのコードには 2 つの問題がありますif
。
>>> 'hello, simon'.startswith('simon')
False
>>> 'simon' in 'hello, simon'
True
in
部分文字列が文字列のどこかにあるかどうかをテストします。それが正確にstartにあるかどうかをテストするために、Python は便利に呼ばれる関数を提供しますstartswith
:
>>> 'simon'.startswith('s')
True
あなたの唯一の他の問題は、現在、削除したい「サイモンが言う」を含む入力文字列全体を出力することです。それを削除する最も簡単な方法は、次を使用することですstr.replace
。
>>> 'simon says'.replace('simon', 'fred')
'fred says'
また、空の文字列 ( ) に置き換えると''
、部分文字列が効果的に削除されます。しかし、これにも同じ問題があります - 文字列のどこでも置換を行います:
>>> 'simon says lets play simon says'.replace('simon says', '')
' lets play '
ただし、多くても 1 つだけを置換するように指定できます。文字列が "Simon said" で始まることは既にわかっているため、それが最初の文字列になることがわかります。
>>> 'simon says lets play simon says'.replace('simon says', '', 1)
' lets play simon says'
または、文字列スライシングを使用することもできます -の 2 番目の文字の後('e' から) から始まり、最後までの'fred'[2:]
文字列を要求します。'fred'
>>> 'fred'[2:]
'ed'
"サイモンは言う" は 10 文字なので、それ以降word[10:]
はすべて : になりますword
。しかし、文字数を間違えると、微妙なバグに簡単につながる可能性があります。これを避けるには、次のように Python に任せることができます。
word[len('Simon says'):]