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

program to rotate list of numbers until all numbers have moved back to origional position

我正在尝试编写一个程序,如果用户输入一个列表,该程序会读取一个列表,并在每次交互时将列表中的数字旋转一个位置,直到数字到达起始位置。

输出应该是这样的

Input a 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(series): # change this to input a list
  for i in range(len(series) + 1):
    print(series)
    series = series[1:] + series[:1]

rotation([1,2,3,4])

您可以使用 input 函数获取用户输入。输入将是一个字符串,因此您必须使用 str.split 方法将其拆分以从输入创建一个列表。

像这样:

user_input = input("Input a list: ")  # input = '1 2 3 4'
seq = user_input.split()   #  seq = ['1','2','3','4']

def rotation(nums):
    for i in range(len(nums)+1):
        rotated = nums[i:] + nums[:i]
        print(','.join(rotated))


rotation(seq)