Skip to main content
 首页 » 编程设计

python之操纵数字算法

2025年05月04日20yxwkf

我该如何修正这个算法?

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