我是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)
。关于python - Python模运算符给出意外结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13024926/