首页 > 解决方案 > 在 abc 范围内将移位的 ASCII 值转换为 char

问题描述

背景

这个问题的灵感来自凯撒密码。给定一个修改后的 ASCII 值iwhere i > 122 or i < 97,目标是找到由它的值表示的字符。例如,既然'z'value 是122,那么123references 'a',以及149and 97 +- 26n

目标

该函数calc_chr应计算移位的 ASCII 值,同时保持在 的范围内abc,即[97, 122]十进制。

明确的例子

let 'x'be 120
let new_valbe'x' + 5 -->125
calc_chr(new_val)等于'c'

'c'作为移位'x' 5 次的结果,函数返回: x -> y, z, a, b, c

解决方法

解决方法效率不高。

while new_val > 122:
    new_val -= 26
while new_val < 97:
    new_val += 26

所需的解决方案(如果存在)是计算(而不是循环)。

标签: pythonasciimod

解决方案


目前还不清楚你真正想要做什么。我的理解是您想输入一个人造数字,然后将其转换为从 97 到 122 的数字(均包含在区间内)。

最简单的方法是:

number = input('Your number: ')
mod_number = ((number - 97) % 26) + 97
print(number, chr(number))

这样你输入一个数字,如果它包含在 97 到 122 之间,那么它将被保留。否则它将被移入该间隔。因此,如果你输入 123,你会得到 97,如果你交出 96,你会得到 122。


推荐阅读