思路:
1、将当前光标所在数与当前屏幕展示列表分开声明两个变量index,print_list
print_list初始值区分 num>4 与 num<=4 两种
2、先对光标数进行处理
操作为“U”时,如index为1,则跳转至末尾值num,否则index -= 1
操作为“D”时,如index为num,则跳转至首位值1,否则index += 1
3、对当前展示列表处理
如果单次操作结束后index仍在print_list中,print_list不做处理,同时适用于num>4 与 num<=4
如果单次操作结束后index不在print_list中:
操作为“U”时:index为num,print_list变更为[num-3,num-2, num-1,num];否则,列表每位减1([j-1 for j in print_list])
操作为“D”时:index为1,print_list变更为[1,2,3,4];否则,列表每位加1([j+1 for j in print_list])
import sys input_info = sys.stdin.readlines() for i in range(0,len(input_info),2): word = input_info[i+1].strip() num = int(input_info[i].strip()) index = 1 print_list = [1,2,3,4] if num > 4 else [i+1 for i in range(num)] w_list = list(word) for w in w_list: if w == "U": index = index-1 if index >1 else num if index in print_list: continue else: if index == num: print_list = [num-3,num-2, num-1,num] else: print_list = [j-1 for j in print_list] elif w=="D": index = index + 1 if index < num else 1 if index in print_list: continue else: if index == 1: print_list = [1,2,3,4] else: print_list = [j+1 for j in print_list] print_list = [str(i) for i in print_list] print(" ".join(print_list)) print(index)