python おさらい その5
文字列の長さを表示するには len() を使う
1 | print ( len ( input ())) |
で標準入力で入力した文字数を表示できる
次に文字列のインデックスの表示
1 2 | input_line = input () print (input_line[ 0 ]) |
というように 0 からインデックスが振られるので
最初の入力文字を表示するなら0を指定する
次にリストのループ表示
1 2 3 | list = [ "Nara" , "Shiga" , "Hokkaido" , "Chiba" ] for item in list : print (item) |
今回は標準入力ではなく
リストの中身の表示
for の構文がわかっていれば
あとはリストの中身を表示するだけでOK
解説としては
【Python入門】for文を使った繰り返し文の書き方
がわかりやすいかも
次に標準入力を1文字ずつ表示
とはいっても入力自体を1文字ずつなので
別に分割するとか考えなくてOK
1 2 3 4 | string = input () for item in string: print (item) |
最初の string の中身がリストから標準入力になっただけ
次に2つの入力値があり
最初に文字列
次に文字を入力し
文字の出現回数を計算する
1 2 3 4 5 6 7 8 | string = input () char = input () count = 0 for item in string: if item = = char: count + = 1 print (count) |
最初に2つの input で文字列と文字を取得
あとは回数を格納する変数を用意して
for で文字列をループしながら単語に分解
その中で文字と一致したら
カウントを増やして最後に print() で出力
次に
標準入力の
文字列の n 文字目と n + 1 文字目
という場合
1 2 3 4 5 | count = int ( input ()) - 1 string = input () if count + 1 < len (string): print (string[count] + " " + string[count + 1 ]) |
インデックスはゼロから数えるので
入力の時点で -1 したほうが計算が楽
文字列の長さを超えることがあるので
if で判定しておく
文字列連結は + でできる
これは java とかもおなじ
php だと . で連結なのでわかりにくいかも
s が t の中で何回出現するかカウントして出力
の場合
1 2 3 4 5 6 7 8 9 10 11 | pattern = input () string = input () result = 0 for i in range ( len (string) - len (pattern) + 1 ): portion = string[i:i + len (pattern)] if portion = = pattern: result + = 1 print (result) |
次に標準入力+1で出力する場合
1 2 | num = int ( input ()) + 1 print (num) |
int() で整数にして+1しておけばOK
次に
n m
というように空白区切りで入力して
n 個の整数を改行区切りで標準
1 2 3 4 | num = int ( input ()) for i in range (num): print ( input ().split()[ 1 ]) |
最初の num で入力回数を取得
次に for で回数分ループ
split() で分けて インデックス1の部分なら
2番めに入力したものがでるのでこれでOK
次に標準入力したものをソートして出力
1 2 3 4 5 6 7 8 9 10 | input () string = input ().split() nums = [] for num in string: nums.append( int (num)) nums.sort() for i in nums: print (i) |
となる
格納リストを用意し
ループで入力したものを代入
代入するときに整数に変換
ループ後に sort() でソート
あとはこれをループさせて
1つずつ表示
次に入力されるn個の組を整数の値で昇順にソートして
文字列を表示
1 2 3 4 5 6 7 8 9 10 11 | num = int ( input ()) inputs = {} for i in range (num): tmp = input ().split() inputs[ int (tmp[ 1 ])] = tmp[ 0 ] inputs = sorted (inputs.items()) for i in inputs: print (i[ 1 ]) |
最初に入力数を受け取る
次に 配列格納変数inputs を用意
for で range の範囲を入力値にして
tmp に格納しながら標準入力したものをループでまわす
1 | inputs[ int (tmp[ 1 ])] = tmp[ 0 ] |
の部分で key value 形式で格納
1 | inputs = sorted (inputs.items()) |
の部分で
sorted() で昇順にソート
sort() と sorted() の違いについては
Pythonでリストをソートするsortとsortedの違い
を参考に
基本的に文字列をソートするなら sorted() を使う
items() はすべてのキーと値の組み合わせを取得
なお値だけなら values()
キーだけならkeys() を使う
これらの辞書関連メソッドについては
辞書に含まれるすべてのキーと値を取得する
を参考に
今回は inputs に key -value 形式で格納
あとは
1 2 | for i in inputs: print (i[ 1 ]) |
で 値のみループで表示すればOK