0

以下のコードでは、s は文字列を参照しています (リストに変換しようとしましたが、まだ同じ問題があります)。

s = "".join(s)
if s[-1] == "a":
    s += "gram"

文字列の最後の項目が文字「a」である場合、プログラムは文字列「gram」を文字列「s」が表す末尾に追加する必要があります。

例: 入力:

s = "insta"

出力:

instagram

しかし、私はIndexErrorなぜ何かアイデアが得られますか?

4

2 に答える 2

7

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
于 2013-09-07T09:38:51.367 に答える
5

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()ますが、コードを何気なく読んだ人にとっては、それが何をするかは自明です。

于 2013-09-07T09:39:46.513 に答える