2010-05-06 61 views
0

问候!查询的数据存储在python

我试图与在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

我这样做:

for c in xrange(p1-1) 

从本质上讲,这听起来像P1已经包含了LEN ,所以你可以直接使用它。另外请注意,使用xrange函数通常比range快一点。原因是xrange返回一个迭代器,而range建立一个列表。换句话说,如果你做了range(1000000),它会创建一个100万个整数的列表!

0

错误是告诉你,势必p1值不具有的长度。这是有道理的,因为它是一个浮点数(也在错误消息中)。

我怀疑你的意思输入是p而不是p1。这是你不应该使用无意义变量名称的一个很好的例子。如果名字是像current_result(而不是p)和current_adjclose,而不是p1这将是一个更容易被发现。

它看起来像你可能会尝试做一些转型中的内循环(这是因为变量名不是100%清楚)。如果是这样,那就是要求您使用list comprehension

此外,它看起来像你可能想重用变量;别。毕竟,它们并没有短缺,而且很难选择有意义的变量名称。