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。货物放到购物车里,顾客可以有多个购物车。同时购物车里可以有多个货物,包括多个同样的货物。

  • 相关阅读:
    Vue路由机制
    谷歌浏览器打不开应用商店的解决方法
    Vue报错——Component template should contain exactly one root element. If you are using vif on multiple elements, use velseif to chain them instead.
    Vue.js学习之——安装
    Vue使用axios无法读取data的解决办法
    关于localstorage存储JSON对象的问题
    2013年整体计划
    个人喜欢的警语收集
    Linux防火墙的关闭和开启
    Flex修改title 转载
  • 原文地址:https://www.cnblogs.com/jiaoyang77/p/7499832.html
Copyright © 2011-2022 走看看