Python勉強メモ(1)(ifとかforとか)
ちょっと思うところがあってPythonの勉強をはじめてます(C#はしばらくお休み)
気になったところをメモしていこうかなと。
2019/12/25 文字列操作のスライス
Pythonの文字列型はインデクスとスライスにも対応しているとのことで以下のように実行してみる。
word='Python' word[2:5] 'tho'
[2:5]なんだから、3文字目から6文字目の'thon'が表示されるかと思ったら[tho]なのね。 これはリスト型のスライスにもいえることで、
letters = ['a','b','c','d','e','f,','g'] letters[2:5] ['c', 'd', 'e']
なんとなく違和感。2から5までなのに実際は3つしか取得してこない。
インデクスが文字と文字の あいだ (between) を指しており、最初の文字の左端が 0 になっていると考えることです。そうすると、 n 文字からなる文字列中の最後の文字の右端はインデクス n となります。
こういうことらしい。なるほどね。
+---+---+---+---+---+---+ | P | y | t | h | o | n | +---+---+---+---+---+---+ 0 1 2 3 4 5 6 -6 -5 -4 -3 -2 -1
2020/01/06 IF文
x = 42 if x < 0: x = 0 print('Negative changed to zero') elif x == 0: print('Zero') elif x == 1: print('Single') else: print('More')
switch文はなく、elifで代用する
2020/01/06 for文
普通にforだけの場合、リスト型や文字列型のみ利用可能。
x = [1,2,3,4,5] for i in x: print(i) # 1 # 2 # 3 # 4 # 5
x = 1とかすると not iterable で怒られる。じゃあC#とかのforはどうすれば?となると、rangeを使うらしい。なるほど。
for i in range(5): print(i) # 0 # 1 # 2 # 3 # 4 # #こうすれば開始を指定できる for i in range(5,10): print(i) # 5 # 6 # 7 # 8 # 9 # #増分を指定する場合はこう for i in range(0,10,2): print(i) # 0 # 2 # 4 # 6 # 8
2020/01/06 ループル内のbreakやelseなど
breakを使えばループを抜けられる。まぁこれは良し。breakで抜けなかった場合はelse:が実行される
for i in range(5): # 実際はありえないが if i == 6 print('break') break print(i) else: print('else') # 0 # 1 # 2 # 3 # 4 # else # breakで抜けるとelseは実行されない
2020/01/06 pass文
構文上必要だが、処理を行わない場合などに使うらしい。具体的にどう使うのかはまだわからない。
while True: pass