首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用ASCII代码的Python编码问题

使用ASCII代码的Python编码问题
EN

Stack Overflow用户
提问于 2020-11-05 01:29:41
回答 1查看 301关注 0票数 1

写函数

代码语言:javascript
运行
复制
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),但对此我感到困惑。

代码语言:javascript
运行
复制
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))
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-05 01:48:47

您可以使用mod运算符包装字母表:

代码语言:javascript
运行
复制
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

输出

代码语言:javascript
运行
复制
z
H
B
f
e
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64689945

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档