我编写了一个简单的脚本来根据每用户平均收入 (ARPU)、利润和客户保持客户的年数 (ltvYears) 来模拟客户生命周期价值 (LTV)。下面是我的脚本。它在“ltvYears = ltvYears + [ltv_loop]”这一行引发错误。错误消息是“TypeError: can only concatenate tuple (not "list") to tuple”。有人可以告诉我是什么原因造成的吗?我怀疑问题可能源于“ltvYears = ('f',[])”,我在其中添加了类型代码以消除另一个错误(将 float 乘以 int)。
我是 Python 新手,所以这段代码很可能是初学者的错误。
lowYears = 0
highYears = 20
modeYears = 3
ARPU = 65.0*12.0
MARGIN = .30
ltvYears = ('f',[])
ltv = []
def ltv(arpu, years, margin):
return arpu * years * margin
N = 10000
for n in range(N):
#estimate LTV
ltv_loop = random.triangular(lowYears, highYears, modeYears)
ltvYears = ltvYears + [ltv_loop]
ltv = ltv + [ltv(ARPU, ltvYears, MARGIN)]
show = 0
if (show==1):
#plot ltv histogram
plt.hist(ltv,bins=10)
plt.title("LTV Probability Density")
plt.xlabel("")
plt.ylabel("$")
plt.show()
编辑 - 这是我的变量的屏幕截图。
EDIT2 ---我在下面的帮助下找到了解决方案。总共有三个问题:
- 我错误地将相同的名称分配给变量和函数(+1 @autopopulated 指出这一点)
- 这条线是多余的“ltvYears = ltvYears + [ltv_loop]”
- 此行应该使用“ltv_loop”作为第二个参数“ltv = ltv + [calculateltv(ARPU, ltv_loop, MARGIN)]”
+1 @DonCallisto 和 @RikPoggi 对项目 2 和 3 的帮助