PYTHON はじめの一歩 / LESSON 04

文字列を探検しよう。

ROBORONへのメッセージを一文字ずつ調べたり、必要な部分だけ取り出したり。文字列を道具として使えるようになろう。

学びを始める

文字は、並び順にも意味がある。 | 動画なしでも学べます

文字列を探検しよう。をあおい・はる・AI先生・ROBORONと考えるイラスト
文字は、並び順にも意味がある。
GOAL

この回でできるようになること

  • 01文字列の位置を0から数え、1文字を取り出す
  • 02スライスで範囲を取り出し、元の文字列との違いを知る
  • 03f文字列と split() で読みやすい表示・入力を作る
ことばの窓
01 / EXPLORE

最初の文字は0番

文字列には、左から0、1、2…という位置番号が付きます。番号を角かっこに入れると、その場所の文字を取り出せます。

あおい

ROBORON の最初の文字は R だから、1番かな?

AI先生

そこが最初のひっかけなんだよ。Pythonの位置は0から始まる。ROBORON[0] が R、[1] が O になるよ。

はる

最後の文字は -1 でも指定できるのですね。

実際のコードまず結果を予想してみよう
name = "ROBORON"
print(name[0])
print(name[1])
print(name[-1])
実行するとR / O / N(3行)

なぜ? 先頭は0番。-1は後ろから1文字目を指します。存在しない位置を選ぶと IndexError になります。

目で見てわかる最初の文字は0番
図4-1 文字の下にある数字が位置番号です。
図4-1 文字の下にある数字が位置番号です。
ROBORONのチェック!

文字列の長さは len(name) で調べられるよ。

02 / EXPLORE

必要な部分だけ切り出す

[始まり:終わり] で続いた文字を取り出します。終わりの位置の文字は含まれません。

あおい

name[0:4] って、0番から4番まで?

AI先生

いいところに気づいたね。0番から『4番の手前まで』なんだよ。0、1、2、3番の4文字になるね。

はる

元の文字列そのものは変わらず、新しい文字列が得られます。

実際のコードまず結果を予想してみよう
name = "ROBORON"
print(name[0:4])
print(name[4:])
print(name[:3])
実行するとROBO / RON / ROB(3行)

なぜ? [0:4] に含まれるのは0〜3番。終わりを省けば最後まで、始まりを省けば最初からです。

目で見てわかる必要な部分だけ切り出す
図4-2 切り出す範囲と結果を対応させて見ましょう。
図4-2 切り出す範囲と結果を対応させて見ましょう。
ROBORONのチェック!

文字列は1文字だけを直接書き換えられません。変えたいときは新しい文字列を作ろう。

03 / EXPLORE

言葉を組み立てる

表示のページで学んだf文字列をもう一度使い、ここでは split() で区切った文字をリストにする方法も試します。

f文字列を初めて学ぶ場合は、先にprint()とf文字列のページで表示のしくみを確かめよう。

あおい

リンゴが3個なら『リンゴは3個』って表示したい!

AI先生

いいね。f の後に引用符を書いて、値を入れる場所を { } で囲むんだよ。

はる

入力をコンマで分けるなら、split(',') が使えますね。

実際のコードまず結果を予想してみよう
count = 3
print(f"リンゴは{count}個")
words = "赤,青,黄".split(",")
print(words)
実行するとリンゴは3個 / ['赤', '青', '黄']

なぜ? f文字列は変数の値を文字の中に埋め込みます。split(',') はコンマを境に分けるので、コンマ自体は結果に残りません。

目で見てわかる言葉を組み立てる
図4-3 文字を組み立てる操作と、分ける操作。
図4-3 文字を組み立てる操作と、分ける操作。
ROBORONのチェック!

split() の結果はリスト。次の回で詳しく扱うよ。

04 / YOUR TURN

予想して、理由まで確かめよう

答えを選んだら、説明を読んでから実行欄でも試してみよう。

チャレンジどれになるかな?

name = "ROBORON" のとき name[1:4] は?

答えを選ぶと理由が表示されます。

PUT IT TOGETHER

小さな練習:名前の先頭と末尾を表示しよう

name = 'FUJIMOTO' の先頭と末尾を取り出し、f文字列で『F と O』と表示してみよう。

ヒント:name[0] と name[-1] を使います。

解き方の一例と理由を見る
name = "FUJIMOTO"
print(f"{name[0]} と {name[-1]}")

位置0がF、後ろから1文字目がOです。

COFFEE BREAK

ロボットの名札を短くするには?

あおい

『ROBORON-01』から番号だけ取り出せるんだ!

AI先生

そうなんだよ。名前の形が決まっていれば split('-') で分けられる。ただし区切りがない名前も来るなら、先に確認する設計が親切だね。

はる

使う人が違う形で入力する場合も考えておくべきですね。

05 / RUN PYTHON

自分の手で動かそう

例題を選び、結果を予想してから「実行する」を押そう。値を変えると、どの行が結果を決めるか見えてくるよ。

例題を選ぶ

書き換えて試せます。Tabキーは半角スペース4つ分です。

0番・最後・1〜3番の文字を予想してから実行しよう。

この入力欄の使い方

コード内の input() に渡す値を1行ずつ書きます。input() がない例では空欄で大丈夫です。複数回呼ぶコードでは上から順に使います。

準備できました。

実行結果

実行すると、ここに結果を表示します。

Pythonは閲覧中の端末内で動作します。

AI先生からひとこと

文字は、並び順にも意味がある。 今日覚えた道具を、別の値でも試してみよう。自分で理由を説明できたら、とてもいい進歩なんだよ。