【问题标题】:Python : Float object no iterablePython:浮动对象不可迭代
【发布时间】:2018-05-15 05:56:29
【问题描述】:

我必须计算一个具有递归的方程。但是,如果我执行代码,我会遇到 Float 对象不可迭代的错误

我的代码是:

def v(t, c):
    result = []
    if t == 0 or c == 0:
        return 0
    q = v(t - 1, c) - v(t - 1, c - 1)

    return max((0.2*(400-q)), (0.6*(400-q)), (1*(1200-q)), (0.85*(1115-q)), (0.87*(1127-q))) + v(t-1,c)

x = v(2, 1) 打印(x)

我该怎么做才能得到结果?谢谢

【问题讨论】:

  • max 接受一个可迭代对象,您将其传递给 float。错误信息很中肯。当您将单个值传递给函数时,您希望那里的最大值是多少?
  • 你能在这里发布错误信息吗?/
  • Max 应该传递一个元组。浮动给定

标签: python recursion


【解决方案1】:

你正在使用 max(),但是你的函数中的 args 是一个元组 (0.85 * (1115 - q)) + (0.87 * (1127 - q)),这是不对的

【讨论】:

  • 实际上我的代码是:return max((0.2*(400-q)), (0.6*(400-q)), (1*(1200-q)), (0.85* (1115-q)), (0.87*(1127-q))) + v(t-1,c) 我删掉一部分代码方便理解
【解决方案2】:

max() 需要传递多个参数,在您的情况下,只有一个参数会导致错误。尝试删除 max 或向您的 max() 函数添加更多结果以使其正常运行。

def v(t, c):
    result = []
    if t == 0 or c == 0:
        return 0
    q = v(t - 1, c) - v(t - 1, c - 1)
    return ((0.85 * (1115 - q)) + (0.87 * (1127 - q))) + v(t - 1, c)

x = v(2, 1)
print(x)

【讨论】:

  • 实际上我的代码是:return max((0.2*(400-q)), (0.6*(400-q)), (1*(1200-q)), (0.85* (1115-q)), (0.87*(1127-q))) + v(t-1,c) 我删掉一部分代码方便理解
  • 它运行良好吗?我已经通过在线运行检查了它,它给出了 1200 作为答案!
  • @SerkanKılınç 如果它解决了您的问题,请接受并支持答案
猜你喜欢
  • 2023-03-09
  • 2014-03-16
  • 1970-01-01
  • 2011-12-28
  • 1970-01-01
  • 2012-08-24
  • 2021-03-01
  • 2021-05-16
  • 2014-03-24
相关资源
最近更新 更多