2010-05-06 7 views
0

인사말! 내가, 내가 볼 수 있으며,이 같은 내용을 표시 datatstore에서 하나의 컬럼에서 작동하도록 노력하고파이썬에서 Datastore 쿼리하기

:

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 같은 소리 이미 렌을 포함 , 당신은 단지 그것을 직접 사용할 수 있습니다. 또한 xrange 기능을 사용하면 일반적으로 range보다 약간 빠릅니다. 그 이유는 xrange은 반복자를 반환하고 range은 목록을 작성하기 때문입니다. 즉, range(1000000)을 작성하면 백만 개의 정수 목록이 작성됩니다.

0

p1에 바인딩 된 값의 길이가 올바르지 않다는 오류가 표시됩니다. 이는 float (오류 메시지에도 있음)이기 때문에 의미가 있습니다.

입력하신 내용이 p1 대신 p 인 것으로 의심됩니다. 이것은 의미없는 변수 이름을 사용하지 않아야하는 이유의 훌륭한 예입니다. 이름이 current_result (p 대신)과 대신 current_adjclose 인 경우이 위치를 쉽게 찾을 수 있습니다.

내부 루프에서 일종의 변형을 시도하는 것처럼 보입니다 (변수 이름 때문에 100 % 명확하지 않습니다). 그렇다면 list comprehension을 사용하려고합니다.

또한 변수를 다시 사용하려는 것 같습니다. 하지마. 어쨌든 그것들의 부족은 없으며 의미있는 변수 이름을 선택하기가 어렵습니다.