程序旋转数字列表,直到所有数字都移动到原始位置



我正在尝试编写一个程序,给定一个列表,该程序通过列表读取并旋转列表中的数字,每次交互一个位置,直到数字到达起始位置。

所需输出示例:

list : 1 2 3 4
[1,2,3,4]
[2,3,4,1]
[3,4,1,2]
[4,1,2,3]
[1,2,3,4]

我已经写了代码来做这个,但是它不是有效的,并且不打印我想要的。

def rotation(n):
rotations = set()
for i in range( len( str(n) ) ):
m = int( str(n)[i:] + str(n)[:i] )
rotations.add(m)
return rotations
print(rotation(1234))

此代码的输出是

{1234, 4123, 3412, 2341}

如果有人能帮我解决这个问题,我将不胜感激。

不清楚为什么当你想对列表[1, 2, 3, 4]进行操作时,你要对数字1234进行操作,或者当你想要输出包含重复元素时,为什么你的函数返回一个集合。

让函数取原始列表并打印每次旋转:

>>> def rotation(nums):
...     for i in range(len(nums)+1):
...         print(nums[i:] + nums[:i])
...
>>> rotation([1, 2, 3, 4])
[1, 2, 3, 4]
[2, 3, 4, 1]
[3, 4, 1, 2]
[4, 1, 2, 3]
[1, 2, 3, 4]

这样做,

def rotation(series):
for i in range(len(series) + 1):
print(series)
series = series[1:] + series[:1]
rotation([1,2,3,4])
[1, 2, 3, 4]
[2, 3, 4, 1]
[3, 4, 1, 2]
[4, 1, 2, 3]
[1, 2, 3, 4]

最新更新