問題

文字列「Hello, world!」をスライス表記を一度だけ使って「!lo olH」となるようにしたい。適切なスライス表記は、選択肢のうちどれか。

プログラム:

text = "Hello, world!"

output = [問題コード]

print(output)

出力:

!lo olH

 

選択肢

(a) text[::3]

(b) text[0:5]

(c) text[::-2]

(d) text[0:5:2]

  • a
  • b
  • c
  • d

Python 文字列 スライス表記

答え

(c)

解説

Pythonにおけるスライス表記とは、リストや文字列などのシーケンスオブジェクトから、指定した範囲の要素を取り出すために使われる機能です。スライス表記を使うことで、複雑なコードを書くことなく要素を取り出すことができるので、Pythonをマスターする上では、絶対に押さえておきたい機能の一つです。

スライス表記は、以下のような形式で記述されます。

シーケンスオブジェクト[start:end:step]

ここで、startは切り出しの開始位置、endは終了位置、stepはステップ数を指定します。start、end、stepは省略することができます。startを省略した場合は、シーケンスの先頭から取り出します。endを省略した場合は、シーケンスの末尾まで取り出します。stepを省略した場合は、stepが1として扱われます。

問題にも出てきた「Hello, world!」にスライス表記を適用した具体例をいくつかみていきましょう。

具体例:

text = "Hello, world!"

# start, end, skipを全て省略した場合
print(text[::]) # "Hello, world!"

# startのみを指定
print(text[0]) # "H"
print(text[1]) # "e"
print(text[2]) # "l"
print(text[-1]) # "!"

# startを省略, endを指定
print(text[:3]) # "Hel"
print(text[:-1]) # "Hello, world"
print(text[:-2]) # "Hello, worl"

# start, endを省略, skipを指定
print(text[::1]) # "Hello, world!"
print(text[::2]) # "Hlo ol!"
print(text[::3]) # "Hl r!"
print(text[::-1]) # "!dlrow ,olleH"

ここまでくればもうお分かりかもしれませんが、正解は「text[::-2]」となります。

問題の選択肢の結果についてもみてみましょう。

text = "Hello, world!"

print(text[::3])   # "Hl r!"
print(text[0:5])   # "Hello"
print(text[::-2])  # "!lo olH"
print(text[0:5:2]) # "Hlo"

 

テスト一覧

スキルテストが提供しているテストの一覧です。ぜひ学習や実力チェックに役立ててください。