エンジニアのサブルーチン

あまり注目されない組み込みのシステムエンジニアをやっています。エンジニア業界のこととか、勉強したこととかを不定期に更新していきます。

Python100本ノック 0問目

DjangoだけやってもPythonを理解しているとは全くもって言えないので、
「言語処理100本ノック 2015」 というサイトを使ってpythonをしっかりと深掘りしていきたいと思います。

1日目 第1章--第0問

f:id:code_sugar:20190822205834p:plain

早速わからない(ゴミ)。調べて導き出した答えはこう。

letters = 'stressed'
letters[-1::-1]  # ==> 'desserts'

たった2行の処理がなんでわからないのか....
とにかく、自分なりの解釈をまとめる。

文字列の取得

pythonの文字列はシーケンスなので配列のように[値]で先頭から何番目の文字列でも自由に取得できる

letters = 'abcdef'
letters[0] = 'a'  # 1番目の文字列を取得
letters[1] = 'b' # 2番目の文字列を取得

#文字数以上の数値を入力してみる
letters[10000]  # ==> IndexError: string index out of range 

文字列の一部を取得

スライスという物を使えば簡単に部分的に文字列を取得したりできる。

letters[start:end:step]

[start:end:step]とはstart,end,stepにそれぞれ値を入れることで、
step文字列ごとにstartで指定した値からend-1 までのシーケンスを取得する

letters = 'abcdef'

letters[:] # ==> 'abcdef' 先頭から末尾まで取得
letters[2:] # ==> 'cdef' startオフセット(先頭から2番目)から末尾まで取得
letters[1:3] # ==> 'bc' startからend-1まで取得
letters[::3] # ==> 'ad'先頭から3文字置きに末尾まで
# 本問
letters[-1::-1] # ==> 'fedcba' 先頭から-1(末尾)から-1文字ごと(逆順で)最後まで

他にも色々文字列に関するメソッドあるけど、今回の問題と関係ないので割愛します