文字、ord、chr のテクニック
文字を数値に変換し、元に戻します
「文字、ord、chr のテクニック」はCoddyKit上の無料Coding Interview Prepレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCoding Interview Prep学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Coding Interview Prepコースには全4レッスンが含まれています。
文字は数値である
プログラムが読み込むすべての文字は、内部では数値として保存されます。コードポイントを知っていれば、文字を使って計算できます。🔢
ord()を使う
ord()関数は、1文字を整数のコードポイントに変換します。文字を算術演算につなぐ橋渡しとなる関数です。
print(ord('A')) # 65
print(ord('a')) # 97chr()を使う
chr()関数はその逆です。数値を渡すと、対応する文字を返します。この2つを使えば、きれいに往復変換できます。
print(chr(65)) # 'A'
print(chr(97)) # 'a'文字は連続している
重要なポイントは、aからzのコードポイントが連続しており、AからZも同様だということです。そのため、単純な引き算で文字をインデックス化できます。
文字を0〜25に対応付ける
基準となる文字を引くと、扱いやすい0始まりのインデックスを得られます。これにより、文字をカウント用の配列のスロットに変換できます。
idx = ord('c') - ord('a')
print(idx) # 2インデックスを文字に戻す
逆方向では、基準にインデックスを加えてchr()を呼び出します。これでスロット0は'a'に、スロット25は'z'になります。
ch = chr(ord('a') + 2)
print(ch) # 'c'文字をシフトする(シーザー暗号)
文字を前方へシフトするには、量を加えた後に26で剰余を取ります。これはシーザー暗号の問題の中心となる考え方です。
shifted = chr((ord('y') - ord('a') + 3) % 26 + ord('a'))
print(shifted) # 'b'大文字と小文字の差は32
文字コードの配置により、大文字は対応する小文字よりちょうど32小さい値です。必要であれば、純粋な算術演算だけで大文字と小文字を変換できます。
print(ord('a') - ord('A')) # 32数字も文字である
文字'7'は数値7ではありません。ord('0')を引くと、数字の文字を実際の数値に変換できます。
d = ord('7') - ord('0')
print(d) # 7文字をすばやくチェックする
はい・いいえの判定には、isalpha()やisdigit()のようなメソッドを使う方が、コードポイントを手作業で比較するより簡潔です。
print('x'.isalpha()) # True
print('5'.isdigit()) # True競技プログラミングで重要な理由
文字をインデックスに対応付けると、辞書の代わりに小さな26要素の配列を使えます。これはより高速で、文字列問題の定番テクニックです。
クイックチェック
文字の計算について、簡単な問題です。
まとめ
ordとchrを使うと文字と数値を相互に変換でき、連続したコードポイントによって、単純な計算で文字のインデックス化、シフト、判定ができることを学びました。🎉
よくある質問
「文字、ord、chr のテクニック」レッスンは無料ですか?
はい。「文字、ord、chr のテクニック」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Coding Interview Prepコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Coding Interview Prepコースには全4レッスンが含まれています。
「文字、ord、chr のテクニック」で何を学びますか?
文字を数値に変換し、元に戻します ブラウザで直接実行するハンズオンコードでCoding Interview Prepを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Coding Interview Prepを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのCoding Interview Prepは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「文字、ord、chr のテクニック」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このCoding Interview Prepレッスンでコードを書いて実行できますか?
はい。すべてのCoding Interview Prepレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 文字、ord、chr のテクニック
- 頻度表で文字を数える
- 正しい回文チェック
- 単語の分割、strip、再結合