すべての文字を反復処理する
文字にはインデックスによってアクセスできるため、変数ループを使用してすべての文字を反復処理し、可能なインデックス値を取得できます。たとえば、文字列
s
のすべての文字コードを表示するプログラムは次のようになります。
<プレ>
range(len(s)) 内の i の場合:
print(s[i], ord(s[i]))
プレ>
プログラムの説明:
1)
len(s)
関数は文字列の長さを調べます。最初の文字のインデックスは 0 で、最後の文字のインデックスは len(s)-1 です。ループ変数
i
は、
0
から
len(s)-1
までの値を順番に取得します。
2) 各行では、最初にシンボル自体が表示され、次にそのコードが表示されます。このコードは、組み込み関数
ord()
によって返されます。
同じ列挙をさらに短く書くこともできます。
<プレ>
s の c の場合:
print(c, ord(c))
プレ>
このフラグメントでは、ループ ヘッダーがすべての文字 s をループし、変数
c
に順番に配置します。
すでに述べたように、文字列を扱うときの Python の特徴は、文字列が不変オブジェクトであることです。つまり、文字列の個々の文字を変更することは
できません。
たとえば、次のステートメントは機能しません。
<プレ>
s[5]='a'
ただし、必要な変更を加えた文字から新しい行を作成することはできます。
タスク
入力文字列内のすべての文字 'a' を置き換えます。文字 'b' に。
<プレ>
s = 入力()
sNew = ""
s の c の場合:
c == 'a'の場合: c = 'b'
sNew += c
print(sNew)
このプログラムでは、ループは文字列 s のすべての文字を処理します。ループの本体では、変数
с
の値をチェックします。シンボルがシンボル '
a
' と一致する場合、それを置き換えます。 '
b code>' を追加し、加算演算子を使用して新しい行 sNew
の末尾に追加します。
このオプションはかなり遅くなります。
今後は、組み込みの文字列操作関数を見て、それをより速く行う方法を学びます。