题目
Input : 第一行输入 N(1≤N≤100)、M(≥0),以空格隔开Input : 第二行输入N个整数,以空格隔开Output : 将N个整数循环右移M位输出,元素间以空格隔开,结尾不可有空格Example:Input : 3 1
Input : 1 2 3
Output : 2 3 1
第一版,(大错特错)
空list时,不能指定特定Index值(list[1] = 1) @@sInput1 = input()sInput2 = input()i_num = int(sInput1.split()[0])i_move = int(sInput1.split()[-1])lst = sInput2.split()lst_rtn = []for i in range(i_num): print(i,lst[i],(i+i_move)%i_num) lst_rtn[(i+i_move)%i_num] = lst[i]print(lst)print(lst_rtn)
执行
6 2 #Input1 2 3 4 5 6 #InputTraceback (most recent call last): File "D:move.py", line 8, in <module> lst_rtn[(i+i_move)%i_num] = lst[i]IndexError: list assignment index out of range
第二版,照顺序append进list()
先找出右移后Index=0的那个值再从那个值开始一个一个append进list()sInput1 = input()sInput2 = input()i_num = int(sInput1.split()[0])i_move = int(sInput1.split()[-1])lst = sInput2.split()lst_rtn = []str = ''#iIndex = i_num - i_move + (i_num * int(i_move/i_num))iIndex = i_num * (int(i_move/i_num) + 1) - i_movefor i in range(i_num): #lst_rtn.append(lst[iIndex % i_num]) str += lst[iIndex % i_num] + ' ' iIndex +=1print(str.rstrip())#print(lst)#print(lst_rtn)
本文纯自己做题目之笔记,如有更好的方法再麻烦各位指教~~