• python练习题-day27


    1、写一个类,用来将浮点型值转换成金额。在本练习里,我们使用美国货币,但读者也可以自选任意货币。

    class MoneyFmt:
        def __init__(self,money):
            self.money=round(float(money),2)
        def dollarrize(self):
            if "-" in str(self.money):
                if "." in str(self.money):
                    money=str(self.money).split(".")
                    money_int=money[0][1:]
                    count=len(str(money_int))//4
                    money_lis=list(str(money_int))
                    for i in range(count):
                        money_lis.insert(-3-4*i,",")
                    return "-$"+"".join(money_lis)+"."+str(money[-1])
                else:
                    money = str(self.money).split(".")
                    money_int = money[0][1:]
                    count = len(str(money_int)) // 4
                    money_lis = list(str(money_int))
                    for i in range(count):
                        money_lis.insert(-3 - 4 * i, ",")
                    return "-$" + "".join(money_lis)
            else:
                if "." in str(self.money):
                    money = str(self.money).split(".")
                    money_int = money[0]
                    count = len(str(money_int)) // 4
                    money_lis = list(str(money_int))
                    for i in range(count):
                        money_lis.insert(-3 - 4 * i, ",")
                    return "$"+"".join(money_lis) + "." + str(money[-1])
                else:
                    money = str(self.money).split(".")
                    money_int = money[0]
                    count = len(str(money_int)) // 4
                    money_lis = list(str(money_int))
                    for i in range(count):
                        money_lis.insert(-3 - 4 * i, ",")
                    return "$" + "".join(money_lis)
        def update(self,new_money=None):
            if new_money is not None:
                self.money=round(float(new_money),2)
        def __nonzero__(self):
            if self.money==0:
                return False
            return True
        def __str__(self):
            return self.dollarrize()
        def __repr__(self):
            return repr(self.money)

    2、几何。创建一个由有序数值对(x,y)组成的Point类,代表某个点的X和Y坐标。

    class Point:
        def __init__(self,x,y):
            self.x=x
            self.y=y
        def __str__(self):
            return "(%s,%s)"%(self.x,self.y)
    if __name__=="__main__":
        p=Point(2,3)
        print(p)

    3、几何。创建一个直线类,除主要属性:一对坐标值外,它还具有长度和斜线属性。你需要覆盖__repr__()方法,使得代表那条直线的字符串表示形式是由一对元组构成的元组。

    import math
    class Line:
        def __init__(self,x1,y1,x2,y2):
            self.x1=x1
            self.y1=y1
            self.x2=x2
            self.y2=y2
        @property
        def length(self):
            return math.sqrt(abs(self.x1-self.x2)**2+abs(self.y1-self.y2)**2)
        def __str__(self):
            return "p1=(%d,%d),p2=(%d,%d)"%(self.x1,self.y1,self.x2,self.y2)

    4、建立一个用户数据库类,来管理一个系统,该系统要求用户在登录后才能访问某些资源。这个数据库类对用户进行管理,并在实例化操作时加载之前保存的用户信息,提供访问函数来添加或更新数据库的信息。在数据修改后,数据库会在垃圾回收时将新信息保存到磁盘。

    import shelve
    import time
    class Data:
        def __init__(self,name):
            self.name=name
            f=shelve.open(self.name,"c")
            f.close()
            self.flag=False
        def register(self,user,pwd):
            f=shelve.open(self.name,"r")
            if user in f:
                print("用户名已存在")
                f.close()
            else:
                f1=shelve.open(self.name,"c")
                f1[user]=[user,pwd,time.strftime("%Y/%m/%d %H:%M:%S",time.localtime(time.time()))]
                f1.close()
    
        def login(self,user,pwd):
            f=shelve.open(self.name,"r")
            if user not in f:
                print("用户名不存在!")
            if f[user][1]==pwd:
                self.flag=True
            else:
                print("用户名或密码错误")
        def list(self):
            f=shelve.open(self.name,"r")
            if self.flag:
                for user in f:
                    print(f[user])
    m=Data("myfu_m")
    m.register("jordan",123)
    m.login("melon",123)

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

    import time
    class Time_display:
        def __init__(self,t=time.time()):
            self.mytime=t
        def update(self,t=time.time()):
            self.mytime=t
        def display(self,formating=None):
            fmt={}
            fmt["MDY"]="%m/%d/%y"
            fmt["MDYY"]="%m/%d/%Y"
            fmt["DMY"]="%d/%m/%y"
            fmt["MODYY"]="%b %d,%Y"
            if formating in fmt:
                return time.strftime(fmt[formating],time.localtime(self.mytime))
            else:
                return time.ctime(self.mytime)
    melo=Time_display()
    print(melo.display("MODDY"))
    print(melo.display("MDYY"))
    print(melo.display("MDY"))
    melo.update(time.time()+60)
    print(melo.display())

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

    class Item:
        def __init__(self,name,price):
            self.name=name
            self.price=price
        def __str__(self):
            return "%s,%.2f"%(self.name,self.price)
    class Cart:
        def __init__(self,name):
            self.name=name
            self.cart_list={}
        def add_item(self,product,count=1):
            if product not in self.cart_list:
                self.cart_list[product]=count
            if product in self.cart_list:
                self.cart_list[product]+=count
            else:
                print("所选商品有误!")
        def show_item(self):
            for i in self.cart_list:
                print("商品名:%s	数量:%s"%(i,self.cart_list[i]))
        def del_item(self,goods,count=1):
            if goods in self.cart_list:
                if count>self.cart_list[goods]:
                    del self.cart_list[goods]
                else:
                    self.cart_list[goods]-=count
            else:
                print("输入有误!")
    class User:
        def __init__(self,name,):
            self.name=name
            self.userdb=[]
        def equip_cart(self,cart):
            self.userdb.append(cart.name)
        def show_user(self):
            print(self.name,self.userdb)

    7、为DOS机器编写一个Unix操作界面的shell。

    import os
    class Shell:
        def __init__(self):
            self.cmds={"ls":"dir","cd":"cd","cp":"copy","rm":"del","mv":"ren"}
        def transfer(self,cmd):
            cmd_list=cmd.split()
            cmd_list[0]=self.cmds[cmd_list[0]]
            cmd="".join(cmd_list)
            return os.system(cmd)
        def start(self):
            while True:
                cmd=input(">>>")
                cmd_1=cmd.split()
                if cmd_1[0] in self.cmds:
                    self.transfer(cmd)
                if cmd=="exit":
                    break
    if __name__=="__main__":
        s=Shell()
        s=s.start()
  • 相关阅读:
    Linux 下编译Android-VLC开源播放器详解(附源码下载)
    VC/Wince 实现仿Win8 Metro风格界面2——页面滑动切换(附效果图)
    Android Launcher分析和修改3——Launcher启动和初始化
    VC/Wince 实现仿Win8 Metro风格界面1——设计概述和自绘Button(附效果图)
    Android Launcher分析和修改2——Icon修改、界面布局调整、壁纸设置
    Android Launcher分析和修改1——Launcher默认界面配置(default_workspace)
    WARNING: APP_PLATFORM android-14 is larger than android:minSdkVersion 8
    编程工具系列之二------使用GDB的源代码查看功能
    编程工具系列之一------使用GDB的堆栈跟踪功能
    unable to open sync connection
  • 原文地址:https://www.cnblogs.com/fumy/p/10809325.html
Copyright © 2020-2023  润新知