题解 | #MP3光标位置#
MP3光标位置
https://www.nowcoder.com/practice/eaf5b886bd6645dd9cfb5406f3753e15
def fun_up(flag): # 创建函数:光标向上移动 if flag == 1: # 当光标位于第一首歌时 return n # 跳转至最后一首歌 else: return flag - 1 # 否则光标向上移动一位 def fun_down(flag): # 创建函数:光标向下移动 if flag == n: # 当光标位于最后一首歌时 return 1 # 跳转至第一首歌 else: return flag + 1 # 否则光标向下移动一位 while True: try: n = int(input()) # 输入歌曲数量 string = input() # 输入命令,U或者D nums = [i for i in range(1, n + 1)] # 创建歌曲列表 flag, ans = 1, nums[:4] # 初始化光标位置和第一页歌曲列表 start, end = 1, 4 # 初始化第一页歌曲列表的页面始末位置 for item in string: # 遍历命令行 if item == "U": # 判断U命令 flag = fun_up(flag) # 光标向上移动 start -= 1 # 页面起始位置-1 elif item == "D": # 判断D命令 flag = fun_down(flag) # 光标向下移动 start += 1 # 页面起始位置+1 if start == 0: # 页面位置为0时 ans = nums[-4:] # 跳转至最后一页歌曲列表 start = n # 页面起始位置变为n end = n # 页面末尾位置变为n elif start == n + 1: # 页面位置为n+1时 ans = nums[:4] # 跳转至第一页歌曲列表 start = 1 # 页面起始位置变为1 end = 4 # 页面末尾位置变为4 elif start > end: # 当页面起始位置大于末尾位置 ans = nums[flag - 4 : flag] # 当前页面歌曲列表向下翻页 end += 1 # 页面末尾位置+1 elif end - start == 4: # 当页面末尾位置与起始位置的差值达到4 ans = nums[flag - 1 : flag + 3] # 当前页面歌曲列表向上翻页 end -= 1 # 页面末尾位置-1 print(" ".join(map(str, ans))) # 输出当前页面歌曲列表 print(flag) # 输出当前选中的歌曲,即光标位置 except: break#我的实习求职记录#