问候!
我正在尝试使用datatstore中的单个列,我可以查看和显示内容,如下所示:
q = test.all()
q.filter("adjclose =", "adjclose")
q = db.GqlQuery("SELECT * FROM test")
results = q.fetch(5)
for p in results:
p1 = p.adjclose
print "The value is --> %f" % (p.adjclose)
但是我需要用adjclose列计算历史值,我无法克服错误
for c in range(len(p1)-1):
TypeError: object of type 'float' has no len()
这是我的代码!
for c in range(len(p1)-1):
p1.append(p1[c+1]-p1[c]/p1[c])
p2 = (p1[c+1]-p1[c]/p1[c])
print "the p1 value<--> %f" % (p2)
print "dfd %f" %(p1)
python的新手,非常感谢任何帮助!
提前致谢
雷
这是完整的代码
class CalHandler(webapp.RequestHandler):
def get(self):
que = db.GqlQuery("SELECT * from test")
user_list = que.fetch(limit=100)
doRender(
self,
'memberscreen2.htm',
{'user_list': user_list} )
q = test.all()
q.filter("adjclose =", "adjclose")
q = db.GqlQuery("SELECT * FROM test")
results = q.fetch(5)
for p in results:
p1 = p.adjclose
print "The value is --> %f" % (p.adjclose)
for c in range(len(p1)-1):
p1.append(p1[c+1]-p1[c]/p1[c])
print "the p1 value<--> %f" % (p2)
print "dfd %f" %(p1)
答案 0 :(得分:0)
我会这样做:
for c in xrange(p1-1)
基本上,听起来p1已经包含了len,所以你可以直接使用它。另请注意,使用xrange
函数通常比range
快一点。原因是xrange
在range
构建列表时返回迭代器。换句话说,如果你做range(1000000)
,它将创建一个包含一百万个整数的列表!
答案 1 :(得分:0)
错误告诉您绑定到p1
的值没有长度。这是有道理的,因为它是一个浮点数(也在错误信息中)。
我怀疑您输入的内容是p
而不是p1
。这是为什么不应该使用无意义的变量名称的一个很好的例子。如果名称类似于current_result
(而不是p
)和current_adjclose
而不是p1
,则会更容易发现。
看起来你可能正在尝试在内循环中进行某种转换(由于变量名称,它不是100%清晰)。如果是这样,那你就急于使用list comprehension。
此外,看起来您可能正在尝试重用变量;别。毕竟,它们并不缺乏,而且很难选择有意义的变量名称。