input()で入力した文字列の扱い
解決したいこと
input()で入力された文字列はどのような扱いとなるのでしょうか?
例えば
s = input()
#入力
sakura
とした場合、
print(s[1])
とすると、
a
と出力されたので疑問になりました。
インデックスを持つということは、リストのような扱いになっているのでしょうか?
str型のデータと覚えていたので混乱しています。
よろしくお願いします。
0
input()で入力された文字列はどのような扱いとなるのでしょうか?
例えば
s = input()
#入力
sakura
とした場合、
print(s[1])
とすると、
a
と出力されたので疑問になりました。
インデックスを持つということは、リストのような扱いになっているのでしょうか?
str型のデータと覚えていたので混乱しています。
よろしくお願いします。
str型の文字列は文字ごとの配列のようにインデックスにアクセスができます!そのためinputの返却値はstr型で合っていますが、インデックスで各文字にアクセスすることもできます!
>>> text: str = 'あいうえお'
>>> text[0]
'あ'
>>> text[1]
'い'
>>> text[2]
'う'
>>>
公式Pythonチュートリアルもご覧ください。
余談ですが、インデックスアクセスしたときに呼ばれるメソッド名が決められていて、無茶苦茶無意味な実装にすることもできます。
https://docs.python.org/ja/3/reference/datamodel.html#object.__getitem__
>>> import random
>>> class Sample:
... def __getitem__(self, index):
... return random.randint(1, 6)
...
>>> s = Sample()
>>> s[0]
6
>>> s[None]
3
>>> s['Hello']
1
>>> s[True]
2
>>> s[1, 2, 3, 'ダー']
4