Skip to main content
 首页 » 编程设计

Python 模运算符给出意外结果

2025年05月04日9yjmyzz

我是 Python 新手,遇到模数问题。

代码如下:

for i in range(ord('a'), ord('z')+1): 
    print chr(((i+2) % 97) + 97 ) 

预期结果是cdef...a。但是,一旦我们到达 z,我就没有得到所需的环绕模块行为。

请您参考如下方法:

因为 97 不是您想要换行的位置 - 您想要在 ord('z') = 122 处换行,然后添加 ord(' a') (97).

您真正需要做的完整数学运算是移入一个偏移量,然后返回到集合。例如……

for i in range(ord('z') - ord('a') + 1): # equivalent to range(26); i.e. 0-25 
    print chr(((i+2) % 26) + ord('a')) # results in 2+97 'c', 3+97 'd', etc. 

您现有代码无法正常工作的原因是您的 i+2 将始终大于 97(因为您的 i 从 ord(' a') 是 97,并从那里上升),所以 % 97 实际上只是 - 97,因此你的打印行实际上是这个:

print chr(((i+2) - 97) + 97 ) 

减少到...

print chr((i+2) - 97 + 97) 

这显然只是 print chr(i+2)。