写函数
shiftLetter(letter, n)
其参数letter
应该是单个字符。如果该字符位于"A"
和"Z"
之间,则函数返回大写字符n位于更远的位置,如果+n映射经过"Z"
,则返回“包装”。同样,它应该在"a"
和"z"
之间映射小写字符。如果参数letter
是其他任何东西,或者不是长度1,则函数应该返回letter
。
提示:检查部分中的函数ord()
和chr()
,以及模运算符%
。
下面是我迄今所做的工作。它应该在字母表结束后返回到A,但是它在字母表x上不能正常工作。我猜..?对于x,y,z,我应该在ASCII表中减去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))
发布于 2020-11-05 01:48:47
您可以使用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
https://stackoverflow.com/questions/64689945
复制相似问题