我用整数还是浮点?

2024-09-30 12:29:34 发布

您现在位置:Python中文网/ 问答频道 /正文

以下是Google App Engine中的模型:

class Rep(db.Model):
    mAUTHOR = db.UserProperty(auto_current_user=True)
    mUNIQUE = db.StringProperty()
    mCOUNT = db.IntegerProperty()
    mDATE = db.DateTimeProperty(auto_now=True)
    mDATE0 = db.DateTimeProperty(auto_now_add=True)
    mWEIGHT = db.FloatProperty()

所以,mCOUNT是整数,mWEIGHT是float。我这样计算物品的年龄:

^{pr2}$

但当我尝试这样的查询时:

QUERY = Rep.all()
QUERY.filter("mAUTHOR =", user)
QUERY.order("-mWEIGHT")
RESULTS = QUERY.fetch(10)    

for result in RESULTS:
    self.response.out.write("mUNIQUE: <b>%s</b> | "
                                "mWEIGHT: %f | "  
                                "mCOUNT: %s | <br />"  
                             % (result.mUNIQUE, 
                                result.mWEIGHT,
                                # line 103                               
                                result.mCOUNT,
                                ))  

我在第103行得到一个TypeError,它是

result.mCOUNT,
TypeError: a float is required                                                              

为什么mCOUNT是浮动的?顺便说一下,只有当该项不在数据存储中并且它是由if loopelse子句第一次写入时才会引发错误。在

你能帮我用正确的型号吗?谢谢你的帮助。在

-----------------------------------------------------

编辑

我刚刚注意到我有%f作为mWEIGHT的字符串格式,将其改为%s似乎解决了这个问题(但我不知道为什么)。是因为mWEIGHT=None?)公司名称:

for result in RESULTS:
    self.response.out.write("mUNIQUE: <b>%s</b> | "
                          # changing %f to %s appears to solve the problem.
                            "mWEIGHT: %f | "  
                            "mCOUNT: %s | <br />"  
                         % (result.mUNIQUE, 
                            result.mWEIGHT if result.mWEIGHT is not None else 0.0,
                            result.mWEIGHT,                                           
                            result.mCOUNT,
                                    )) 

以下是一些值:

mUNIQUE: A | mWEIGHT: 0.299954933969 | mCOUNT: 2 | 
mUNIQUE: Z | mWEIGHT: 0.0 | mCOUNT: 1 | # With answer by TokenMacGuy 
mUNIQUE: R | mWEIGHT: None | mCOUNT: 1 | # with %f changed to %s 
mUNIQUE: P | mWEIGHT: None | mCOUNT: 1 | # with %f changed to %s

有什么建议可以把rep.mWEIGHT添加到else子句中?在

------------------------------------------------------------

整个代码如下:

    K = []
    s = self.request.get('sentence')           
    K.append(s)                              
    K = f2.remove_empty(K[0].split('\r\n'))     
    UNIQUES = f2.f2(K)
    COUNTS = f2.lcount(K, UNIQUES)    

    C_RESULT = "no results yet"         

    for i in range(len(UNIQUES)):                        
        C_QUERY = Rep.all()
        C_QUERY.filter("mAUTHOR =", user)
        C_QUERY.filter("mUNIQUE =", UNIQUES[i])
        C_RESULT = C_QUERY.fetch(1)                
        if C_RESULT:
            rep = C_RESULT[0]
            rep.mCOUNT+=COUNTS[i]
            age1 = datetime.datetime.now() - rep.mDATE0
            age_hour = float(age1.seconds) / 3600
            rep.mWEIGHT = float((rep.mCOUNT - 1) / (age_hour + 2)**1.5)

            self.response.out.write("<b>rep.UNIQUE: %s</b>: <br />"
            #                        "rep.mCOUNT: %s <br />" 
                                     "rep.mWEIGHT: %s <br />"
            #                        "C_RESULT: %s <br />"
            #                        "rep: %s <br />"
            #                        "utc_tuple: %s <br />"
            #                        "mDATE0_epoch: %s <br />"
                                     "rep.mDATE0: %s "
                                     "age_hour: %s <br />"
            #                        
                                  % (rep.mUNIQUE,
            #                        rep.mCOUNT, 
                                     rep.mWEIGHT,
            #                        C_RESULT,
            #                        rep,
            #                        utc_tuple,
            #                        mDATE0_epoch,
                                     rep.mDATE0,
                                     age_hour,                        
                                    ))                     
            rep.put()
        else:
            rep = Rep()
            rep.mCOUNT = COUNTS[i]
            rep.mUNIQUE = UNIQUES[i]

            rep.put()        

            self.response.out.write("<b>rep.UNIQUE: %s</b>: |"
                                    "rep.mCOUNT: %s: <br />"
                                 % (rep.mUNIQUE,
                                    rep.mCOUNT,))

    QUERY = Rep.all()
    QUERY.filter("mAUTHOR =", user)
    QUERY.order("-mWEIGHT")
    RESULTS = QUERY.fetch(10)    

    for result in RESULTS:
        self.response.out.write("mUNIQUE: <b>%s</b> | "
                                "mWEIGHT: %f | "  
                                "mCOUNT: %s | <br />"  
                             % (result.mUNIQUE, 
                                result.mWEIGHT,  
                                result.mCOUNT,
                                ))   

Tags: brselfdbresponseresultoutqueryresults
1条回答
网友
1楼 · 发布于 2024-09-30 12:29:34

看起来你偶尔在设置mWEIGHT。换衣服怎么样

for result in RESULTS:
        self.response.out.write("mUNIQUE: <b>%s</b> | "
                                "mWEIGHT: %f | "  
                                "mCOUNT: %s | <br />"  
                             % (result.mUNIQUE, 
                                result.mWEIGHT,  
                                result.mCOUNT,
                                )) 

^{pr2}$

相关问题 更多 >

    热门问题