类Java伪代码转Python时如何将tuple作为函数foo的入参传递
Java伪代码转Python正确实现
原代码逻辑说明
原foo函数的作用是统计数组x中索引范围在[i, j](包含两端索引)的元素里,满足 a < 元素值 ≤ b 的元素个数。
现有代码问题汇总
- 函数参数错误使用
*x可变参数,且无需导入pandas,原逻辑没有相关依赖需求 - 额外增加了多余的
for k in x循环,原逻辑没有遍历所有元素的需求 k = j,末尾的逗号会把k转为元组类型,导致后续数值比较逻辑异常- 逻辑非运算符误用了按位取反符
~,Python中逻辑非应使用not k = k -1的逻辑错误放在else分支下,原逻辑是每次循环都要把k减1,否则会出现死循环- 数值比较漏了原逻辑的
x[k] <= b的等于条件
正确转换代码
def foo(x, a, b, i, j): k = j ct = 0 while k > i - 1: if x[k] <= b and not (x[k] <= a): ct += 1 k -= 1 return ct x = (11,10,10,5,10,15,20,10,7,11) print(foo(x,8,18,3,6)) print(foo(x,10,20,0,9)) print(foo(x,8,18,6,3)) print(foo(x,20,10,0,9)) print(foo(x,6,7,8,8))
运行输出
2 4 2 0 1
内容的提问来源于stack exchange,提问作者yudhi
相关产品推荐
相关产品推荐

