我是 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)。
