zoukankan      html  css  js  c++  java
  • Python核心编程第二版 第十三章课后答案

    13-1.程序设计。请列举一些面对对象编程与传统旧的程序设计形式相比的先进之处。

    没什么只有OO能做到,OO更多的是给了你一种能力,一种忽略细节的能力:忽略的越多,人类有限的智力就可以容纳越多越复杂的问题,并由此提高生产效率。

    任何抽象的本质都是忽略,OO刚好是其中一种

    13-2.函数和方法的比较。函数和方法之间的区别是什么?

    从定义的角度上看,我们知道函数(function)就相当于一个数学公式,它理论上不与其它东西关系,它只需要相关的参数就可以。所以普通的在module中定义的称谓函数是很有道理的。
    那么方法的意思就很明确了,它是与某个对象相互关联的,也就是说它的实现与某个对象有关联关系。这就是方法。虽然它的定义方式和函数是一样的。也就是说,在Class定义的函数就是方法

    13-3.对类进行定制。写一个类,用来将浮点型值转换为金额。

    import re
     
    class MoneyFmt(object):
        def __init__(self,value = 0.0):
            self.mvalue = value
              
        def dollarize(self):
            val = round(self.mvalue,2)
            strval = str(val).split('.')[0]
            strlen = len(strval)
            num = strlen%3
            ele1 = strval[:num]
            ele2 = strval[num:]
            l = re.findall(r'.{3}', ele2)
            newstr = ele1
            for i in l:
                if num == 0:
                    newstr = str(i)
                    num += 1
                else:
                    newstr = newstr + ',' + str(i)
            return '$' + newstr + '.' + str(val).split('.')[1]
        
        def __nonzero__(self):
            if self.mvalue == 0:
                return False
            else:
                return True
        
        def __str__(self):
            return self.dollarize()   
        
        def __repr__(self):
            repr = str 

    13-7.数据类。提供一个time模块的接口,允许用户按照自己给定的时间格式来查看日期。你的类应该维护一个日期值,并用给定的时间创建一个实例,如果没有给出时间值,程序执行时会默认采用当前的系统时间。

    import time
    
    class TimeFormat(object):
        def __init__(self,t = time.time()):
            self.mytime = t
        
        def update(self,t = time.time()):
            self.mytime = t
        
        def display(self,types = None):
            l = time.strftime('%Y-%m-%d',time.localtime(self.mytime))
            ele = l.split('-')
            day = ele[2]
            mon = ele[1]
            year = ele[0]
            if types == 'MDY':
                print(mon + '/' + day + '/' + year[-2:])
            elif types == 'MDYY':
                print(mon + '/' + day + '/' + year)
            elif types == 'DMY':
                print(day + '/' + mon + '/' + year[-2:])
            elif types == 'DMYY':
                print(day + '/' + mon + '/' + year)
            elif types == 'MODYY':
                print(mon + ' ' + day + ', ' + year)

    13-8.堆栈类。实现一个堆栈类,类中应该有push()和pop()方法,还有一个isempty()方法,如果堆栈是空的,返回布尔值1,否则返回0。

    class Stack(object):
        def __init__(self,l = []):
            self.list = l
        
        def isempty(self):
            if len(self.list) == 0:
                return False
            else:
                return True
        
        def peek(self):
            if self.isempty() == False:
                print('堆为空')
            else:
                return self.list[-1]
    
        def push(self,ele):
            self.list.append(ele)
            
        def pop(self):
            if self.isempty() == False:
                print('堆为空')
            elif 'pop' in dir(self.list):  
                pass
            else:  
                self.list.remove(self.peek())
        
        def viewstack(self):  
            print(self.list)

    13-9.队列类。实现一个队列类,这个类必须支持下面几种方法:enqueue()在队列的尾部加入一个新的元素,dequeue()在队列的头部取出一个元素,返回它并且把它从列表中删除。

    13-10.堆栈和队列。编写一个类,定义一个能够同时具有堆栈和队列操作行为的数据结构。这个类和Perl语言中数组相像。需要实现四个方法。

    13-11.电子商务。你需要为一家B2C零售商编写一个基础的电子商务引擎。你需要写一个针对顾客的类User,一个对应存货清单的类Item,还有一个对应购物车的类叫Cart。货物放到购物车里,顾客可以有多个购物车。同时购物车里可以有多个货物,包括多个同样的货物。

  • 相关阅读:
    6-[多线程]-互斥锁、GIL、死锁、递归锁、信号量
    5-[多线程]-线程理论
    4-1 多进程练习题
    压缩与解压缩
    检测SSL证书很好用的三个网站
    shell之sort和uniq 及wc 的使用
    shell之cut和tr 的命令的使用
    三剑客之awk数组实战
    三剑客之sed
    linux文件查找(find,locate)
  • 原文地址:https://www.cnblogs.com/jiaoyang77/p/7499832.html
Copyright © 2011-2022 走看看