Python 使用 ASCII 码的编码问题
Python Encoding Problems using ASCII Code
写一个函数
shiftLetter(letter, n)
其参数,letter
应该是单个字符。如果字符在"A"
和"Z"
之间,函数returns一个大写字符
n
更远的位置,如果 +
n
映射超过 "Z"
。同样,它应该映射 "a"
和 "z"
之间的小写字符。如果参数 letter
是其他任何东西,或者长度不是 1,函数应该 return letter
.
提示:复习本节中的函数 ord()
和 chr()
,以及取模运算符 %
.
下面是我到目前为止所做的工作。它应该在字母结束后 return 到 A,但是从字母 x 开始它不能正常工作。我猜..?我应该用 ASCII table 为 x、y、z 减去 90(Z) - 65(A) 但对此感到困惑。
def shiftLetter(letter,n):
if letter >= 'A' and letter <= 'Z':
return chr(ord(letter) + n )
elif letter >= 'a' and letter <= 'z':
return chr(ord(letter) + n )
print(shiftLetter('w',3))
您可以使用 mod 运算符来换行字母表:
def shiftLetter(letter,n):
if letter >= 'A' and letter <= 'Z':
return chr((ord(letter) - ord('A') + n) % 26 + ord('A') )
elif letter >= 'a' and letter <= 'z':
return chr((ord(letter) - ord('a') + n) % 26 + ord('a') )
print(shiftLetter('w',3)) # z
print(shiftLetter('E',3)) # H
print(shiftLetter('Y',3)) # B
print(shiftLetter('f',26)) # f
print(shiftLetter('q',300)) # e
输出
z
H
B
f
e
写一个函数
shiftLetter(letter, n)
其参数,letter
应该是单个字符。如果字符在"A"
和"Z"
之间,函数returns一个大写字符
n
更远的位置,如果 +
n
映射超过 "Z"
。同样,它应该映射 "a"
和 "z"
之间的小写字符。如果参数 letter
是其他任何东西,或者长度不是 1,函数应该 return letter
.
提示:复习本节中的函数 ord()
和 chr()
,以及取模运算符 %
.
下面是我到目前为止所做的工作。它应该在字母结束后 return 到 A,但是从字母 x 开始它不能正常工作。我猜..?我应该用 ASCII table 为 x、y、z 减去 90(Z) - 65(A) 但对此感到困惑。
def shiftLetter(letter,n):
if letter >= 'A' and letter <= 'Z':
return chr(ord(letter) + n )
elif letter >= 'a' and letter <= 'z':
return chr(ord(letter) + n )
print(shiftLetter('w',3))
您可以使用 mod 运算符来换行字母表:
def shiftLetter(letter,n):
if letter >= 'A' and letter <= 'Z':
return chr((ord(letter) - ord('A') + n) % 26 + ord('A') )
elif letter >= 'a' and letter <= 'z':
return chr((ord(letter) - ord('a') + n) % 26 + ord('a') )
print(shiftLetter('w',3)) # z
print(shiftLetter('E',3)) # H
print(shiftLetter('Y',3)) # B
print(shiftLetter('f',26)) # f
print(shiftLetter('q',300)) # e
输出
z
H
B
f
e