1

私は Allen B. Downey の「Think Python」を読んでいて、その中に著者が ROT13 関数の作成を求める演習 (8.12) があります。私は自分のことをしましたが、大文字に苦労していたので部分的に機能しました。

著者が提供するソリューションの一部を次に示します。

def rotate_letter(letter, n):
"""Rotates a letter by n places.  Does not change other chars.

letter: single-letter string
n: int

Returns: single-letter string
"""
if letter.isupper():
    start = ord('A')
elif letter.islower():
    start = ord('a')
else:
    return letter

c = ord(letter) - start
i = (c + n) % 26 + start
return chr(i)

ここでモジュロを使用すると、大文字に対して関数が機能しますが、理由がわかりません! それを使用することで、大文字の ASCII 値の先頭から再起動することは明らかですが、その背後にあるメカニズムはわかりません。

4

2 に答える 2