以下のコードでは、s は文字列を参照しています (リストに変換しようとしましたが、まだ同じ問題があります)。
s = "".join(s)
if s[-1] == "a":
s += "gram"
文字列の最後の項目が文字「a」である場合、プログラムは文字列「gram」を文字列「s」が表す末尾に追加する必要があります。
例: 入力:
s = "insta"
出力:
instagram
しかし、私はIndexError
なぜ何かアイデアが得られますか?
s
空の文字列s[-1]
が原因の場合IndexError
:
>>> s = ""
>>> s[-1]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: string index out of range
の代わりにs[-1] == "a"
、次を使用できますs.endswith("a")
。
>>> s = ""
>>> s.endswith('a')
False
>>> s = "insta"
>>> s.endswith('a')
True
s
が空の場合、テストする最後の文字はありません:
>>> ''[-1]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: string index out of range
str.endswith()
代わりに使用してください:
if s.endswith('a'):
s += 'gram'
str.endswith()
文字列が空の場合、例外は発生しません:
>>> 'insta'.endswith('a')
True
>>> ''.endswith('a')
False
別の方法として、スライスを使用することもできます。
if s[-1:] == 'a':
スライスは常に結果 (少なくとも空の文字列) を返しstr.endswith()
ますが、コードを何気なく読んだ人にとっては、それが何をするかは自明です。