2

将字符串循环到网格中的可能逻辑是什么?

例如,如果我想打印“水”

water
aterw
terwa
erwat
rwate

我正在尝试类似的东西,

word = 'water'
for number, letter in enumerate(word):
    if number < len(word):
        print a + word[1:] + word[:1]

正如您从我的尝试中看到的那样,我不理解如何实现这一目标。谢谢你的帮助。

4

3 回答 3

5
In [2]: word = 'water'
   ...: for i in range(len(word)):
   ...:     print(word[i:] + word[:i])
water
aterw
terwa
erwat
rwate

循环遍历所有可能的索引,获取从该i索引开始的后缀并将其添加到字符串的前面,从而获得所有可能的旋转。

于 2013-08-14T11:07:34.303 回答
5

你可以做

word = 'water'
for i in xrange(len(word)):
   print word[i:] + word[:i]
于 2013-08-14T11:07:52.140 回答
4

使用collections.deque,它有一个rotate方法可以完成你的工作。

向右旋转双端队列n步骤。如果n为负数,则向左旋转。向右旋转一步相当于: d.appendleft(d.pop())

演示:

from collections import deque
d = deque('water')
for _ in xrange(len(d)):
    print ''.join(d)
    d.rotate(-1)

输出:

water
aterw
terwa
erwat
rwate
于 2013-08-14T11:08:11.150 回答