我是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(因为您的iord('a')开头为97,然后从此处上升),因此% 97有效只是- 97,因此您的打印行实际上是这样的:

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


减少到...

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


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

关于python - Python模运算符给出意外结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13024926/

10-11 20:36