【问题标题】:Python for loop is not iterating, [duplicate]Python for循环没有迭代,[重复]
【发布时间】:2018-11-30 22:38:29
【问题描述】:

迭代只运行一次,下面是我尝试运行的代码,

def heat_coeff(gas,Nu,d):
    """Calculate heat transfer (at interior tube wall)"""
    mass = gas *100
    diff = mass * 2
    for i in d:
        U = 4.*diff*Nu / (i*i)
        return U

heat_coeff(10,4, [1,2,3])

【问题讨论】:

  • return 终止函数
  • 阅读ericlippert.com/2014/03/05/how-to-debug-small-programs 了解调试代码的技巧。
  • 从 cmets 我可以推断您想要返回一个列表,但您的代码中没有任何内容会产生这种效果。请花一些时间阅读有关列表的更多信息并了解如何使用它们,同时阅读有关列表推导式的信息。

标签: python for-loop


【解决方案1】:

删除循环中的returninside,并将其放在outside。否则你会过早退出!

for i in d:
    U = 4 * diff * Nu / (i*i)
return U

不过,还有另一个错误。你打算用循环内的U 做什么?你必须在每次迭代时更新它,否则你只会得到最后一次迭代的值。

编辑:

现在您已经解释了您在 cmets 中需要什么(这应该在问题中开始),这就是您打算做的:

def heat_coeff(gas, Nu, d):
    mass = gas * 100
    diff = mass * 2
    return [4.0 * diff * Nu / (i*i) for i in d]

例如:

heat_coeff(10, 4, [1, 2, 3])
=> [32000.0, 8000.0, 3555.5555555555557]

【讨论】:

  • 我将 return 移到了循环之外,仍然无法得到一个数组作为输出。
  • 等等,什么?如果您甚至没有声明它,您如何期望得到一个数组?这个函数到底应该返回什么?
  • @David 你的意思是U 的每个值都应该是一个新数组的元素吗?如果是这样,您需要了解“列表推导式”
  • 该函数假定返回 U,它应该根据我的 d [1,2,3] 具有不同的值。我希望 U 是 d 的三个不同值的 U 数组
  • @David 那么是的,你需要通过列表理解来做到这一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-27
  • 2023-03-05
  • 1970-01-01
  • 2012-11-28
  • 1970-01-01
  • 2016-03-03
  • 2022-11-18
相关资源
最近更新 更多