我该如何解决该算法?

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向前和-1反向。然后您的功能简化为

def change_num(n, direc, num_move):
    return (n + direc * num_move) % 10

关于python - 操纵数字算法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6064462/

10-11 19:38