【发布时间】:2014-07-07 21:58:44
【问题描述】:
假设我有一个字母表:
ALPHABET = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z']
假设轮班位置是
0、2、19
如果输入是字符串 字符串 = "xyz"
我想用上面的移位位置 0,2,19 来移位这 3 个字符
如右移'x' 0 次,右移'y' 2 次,右移z 19 次。
唯一想到的就是列表的index() 函数
我还看到了另一个问题。如果我将 'z' 向右移动 19 次,我将收到 list index out of range 错误。如果 'z' 向右移动 19 次,我希望它变为 's',这将是 19 次移动,从列表开始并从头开始。与'y' 相同,如果我将其向右移动 2 次,我希望它变为'a' 等......
对使用什么有什么建议?
【问题讨论】:
-
我建议使用模运算符来解决越界问题
-
那该怎么做?
-
试着自己做一点研究
-
@robertrocha 模运算符返回除法运算的余数;例如
19 % 2 = 1 (19 / 2 = 8 remainder 1) -
只是一个从头到尾相连的列表。你想要完成的技术术语是:en.wikipedia.org/wiki/Circular_shift。如您所见,它使用了 Revan 建议的模块运算符。