我该如何修正这个算法?
def change_num(n, direc, numMove):
if direc == 'back':
nums = range(10)
return nums[n-numMove]
elif direc == 'forward':
nums = range(10)
nums.reverse()
return nums[n-numMove]-1
这不适用于 direc == 'back' 以下是一些预期返回示例:
0 1 2 3 4 5 6 7 8 9
change_num(1,'back', 5) -> 6
change_num(5,'back', 1) -> 4
change_num(7,'forward',5) -> 2
change_num(0,'forward',5) -> 5
您了解算法的工作原理吗?我只是没有正确实现它。
请您参考如下方法:
代替 'back' 和 'forward',传递 +1 for forward 和 -1 会更容易 返回。然后你的函数简化为
def change_num(n, direc, num_move):
return (n + direc * num_move) % 10
