Python核心编程v2.0 第13章习题(上)

本文探讨Python中的类和方法,强调self参数在方法声明中的重要性,并指出函数作为程序逻辑结构化的方式。虽然展示了一个没有特定方法的类实例,但文章提及了如何在stack基础上进行改造,同时指出了在设计Room类时关于消息传递的封装不足,建议在Message类中改进以实现更好的功能。
摘要由CSDN通过智能技术生成

2.
方法是定义在类中的功能函数,只能被实例调用,在所有的方法声明中都必须有self参数。算一种特殊的函数
函数是可以调用的实体,是对程序逻辑进行结构化或过程化的一种编程方法
3.

# -*- coding: utf-8 -*-
class MoneyFmt(object):
    #这个函数写复杂了,可以参考format()函数,相当于自己实现了一次format函数
    def dollarize(self,index=1):
        money = self.money
        st = str(money)
        li = st.split('.')
        count = len(li[0])/3
        #先将符号去掉并记录
        if li[0][0] == '-':
            if index == 1:
                re = '-'
            else:
                re = '<->'
            li[0]=li[0][1:]
        else:
            re = ''
         #数字位不满时补足便于添加逗号
        if len(li[0])%3 != 0:
            li[0]=li[0].rjust((count+1)*3)


        newli = []
        i = 0
        while i < len(li[0])/3:
            # print li[0][0 + i * 3:3 + i * 3]
            newli.append(li[0][0+i*3:3+i*3])
            i=i+1

        #插入逗号以及添加符号
        st = ','.join(newli).lstrip()
        st = re+'$'+st+'.'+li[1]
        return st
    #在类初始化的时候传入d选项需要的参数便于__str__调用
    def __init__(self,money,index):
        self.money = money
        self.index = index

    def update(self,newmoney):
        self.money = newmoney

    def __nonzero__(self):
        if self.money != 0:
            return True

    def __repr__(self):
        return self.money

    def __str__(self):
        return self.dollarize(self.index)

if __name__ =='__main__':
    mon = MoneyFmt(-1234567.88,0)
    print mon.dollarize()
    print mon

4.

# -*- coding: utf-8 -*-
import time

class userdb(object):
    db = {}
    index = False
    #初始化时加载文件信息
    def __init__(self):
        f = open('ar.txt','r')
        lines = f.readlines()
        f.close()
        for line in lines:
            #split返回的是list
            st1 = line.split(':')
            st2 = st1[1].split(',')
            name = st1[0]
            paswd = int(st2[0])
            time = st2[1].strip()
            li = []
            li.append(paswd)
            li.append(time)
            self.db[name] = li

    #登录
    def login(self,name,paswd):
        if self.db[name][0] == paswd:
            print 'your last time login:',self.db[name][1]
            self.db[name][1] = time.strftime("%Y %m %d %H %M", time.localtime())
            self.index = True
        else:
            print 'login fail'

    #添加
    def adduser(self,newname,newpaswd):
        if self.index == True:
            ti = time.strftime(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值