如何修改算法使除法操作返回整数而非浮点数?
修改除法函数以返回整数结果(不使用floor运算符)
我来帮你搞定这个问题——你现在的除法操作返回浮点数,要改成只返回整数,而且不能用floor运算符,其实只需要调整divided_by函数的实现就可以了。
问题分析
原代码里的divided_by(y)返回的是一个执行浮点数除法的lambda:lambda x: x/y,这就是为什么one(divided_by(four()))会得到0.25。我们需要把它改成执行整数除法的逻辑。
解决方案
这里有两种简单且符合要求的实现方式:
方式1:使用Python整数除法运算符//
//是Python内置的整数除法运算符,它会直接返回向下取整的整数结果,完全不需要依赖floor函数。修改后的divided_by函数如下:
def divided_by(y): return lambda x: x // y
测试一下你的示例:
print(one(divided_by(four()))) # 输出: 0
完全符合预期。另外比如five(divided_by(two()))会返回2,也是正确的整数结果。
方式2:使用int()函数截断小数部分
如果你需要的是向零取整的结果(比如-1/4要得到0而不是-1),可以用int()转换浮点数结果:
def divided_by(y): return lambda x: int(x / y)
这种方式会直接砍掉浮点数的小数部分,保留整数部分,同样不需要floor运算符。
完整修改后的代码
把修改后的divided_by函数替换到原代码里,完整代码如下:
def zero(f = None): return 0 if not f else f(0) def one(f = None): return 1 if not f else f(1) def two(f = None): return 2 if not f else f(2) def three(f = None): return 3 if not f else f(3) def four(f = None): return 4 if not f else f(4) def five(f = None): return 5 if not f else f(5) def six(f = None): return 6 if not f else f(6) def seven(f = None): return 7 if not f else f(7) def eight(f = None): return 8 if not f else f(8) def nine(f = None): return 9 if not f else f(9) def plus(y): return lambda x: x+y def minus(y): return lambda x: x-y def times(y): return lambda x: x*y # 这里用方式1的实现,你可以根据需求换成方式2 def divided_by(y): return lambda x: x // y
这样所有除法操作都会返回整数结果,完全满足你的要求。
内容的提问来源于stack exchange,提问作者Rahul
相关产品推荐
相关产品推荐

