Python循环方程计算:自定义生成样本数组函数运行无输出问题
代码问题排查及修复
存在的问题
f函数缺少返回语句:Python中函数未显式声明return时,默认返回None,当前x * 2仅完成计算但没有把结果返回,调用f()拿到的永远是空值。genSample函数缩进错误:函数体下属的变量定义、循环、输出逻辑全部没有正确缩进,不属于函数执行范围,调用genSample时这部分代码不会运行。- 错误接收
append方法返回值:列表的append()是原地修改操作,返回值固定为None,将append的返回值赋值给z再打印,永远只会输出None。 - 循环传参错误:循环遍历
range(x)得到的迭代变量是i,但当前调用f()时传入的是固定值x,每次计算结果都相同,无法得到每个新值。 - 缺少符合需求的判断逻辑与返回语句:当前代码没有过滤小于100的计算结果,也没有将最终的数组返回。
修正后代码
# 补充return语句返回计算结果 def f(x): return x * 2 def genSample(x): samples = [] for i in range(x): y = f(i) # 仅存入小于100的计算结果 if y < 100: samples.append(y) # 后续计算结果必然大于等于100,提前跳出循环优化性能 else: break # 打印结果并返回目标数组 print(samples) return samples # 调用测试 genSample(100)
运行输出
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98]
内容的提问来源于stack exchange,提问作者Sean Ambrose
相关产品推荐
相关产品推荐

