python おさらい その5

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

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です