python 案例(二)

使用方法:把每个案例分别执行下,看它的运行结果,再试着根据括号提示编写程序代码

  • 《python 案例(一)》里不包含类 eg 1~17
  • 《python 案例(二)》里有类的练习 eg 18~23
  • 《python 案例(三)》关于文件操作 eg 24~26

题目:

  1. 设置字体颜色 ‘\033[x:xm xxxxxxxx\033[0m’
  2. 把数字转为二、八、十六进制数
  3. 判断支付密码是否合法(只能是数字) .isdigit()
  4. 循环输出26个字母对应ascii
  5. 模拟账户登录
  6. 猜数游戏:我心中有个1~100的数 random.randint
  7. 千年危机:根据年份后两位,补齐年份(4位)(列表) enumerate
  8. 进货 出货(列表) .find()
  9. 逆序遍历列表
  10. 查询动漫分类(列表) zip dict.get()
  11. 查询车次信息(字典+列表) 遍历
  12. 点餐(元组) enumerate()
  13. 打印榜单(元组) enumerate()
  14. 模拟手机通讯录 (集合)
  15. 统计字符串出现个数(字符、字符串)
  16. 字符串格式化输出 (字符串拼接)
  17. 能否构成三角形 (函数中异常处理) raise Exception
  18. 圆的面积与周长(类)(格式化字符串)
  19. 定义学生类,录入5个学生信息,存到列表中(类)(字符串劈分)
  20. 乐手弹奏乐器 (类)(多态)
  21. 买票系统 (模块:pretttable)
  22. 引子 (字符串) .stript() (模块:datetime)
  23. 推算时间 (模块:datetime)
  24. 引子 (模块time)
  25. 记录用户登录日志
  26. 模拟tb客服自动回复
# ============ 18、圆的面积与周长(类)(格式化字符串)
'''
import math
class Circle:
    def __init__(self,r):
        self.r=r
    def get_area(self):
        return math.pi *math.pow(self.r,2)
    def get_perimeter(self):
        return 2*math.pi*self.r

if __name__ == '__main__':
    r = int(input('请输入圆的半径:'))
    c1 = Circle(r)
    print(f'面积:{c1.get_area()}')
    print(f'周长:{c1.get_perimeter()}')
    print('面积:{:.2f}'.format(c1.get_area()))
    print('周长:{:.2f}'.format(c1.get_perimeter()))
    std = '{:^6}\t{:^10}\t{:^6}'
    print(std.format('半径','周长','面积'))
    print(std.format(r,'{:.2f}'.format(c1.get_area()),'{:.2f}'.format(c1.get_perimeter())))
'''

# ============ 19、定义学生类,录入5个学生信息,存到列表中(类)(字符串劈分)
'''
class Student:
    def __init__(self,name,age,sex,score):
        self.name=name
        self.age=age
        self.sex=sex
        self.score=score
    def show(self):
        print(self.name,self.age,self.sex,self.score)

if __name__ == '__main__':
    info_lst=[]
    print('录入信息格式:姓名#年龄#性别#成绩')
    for i in range(5):
        info = input(f'请输入第{i+1}名学员的成绩:')
        s_lst = info.split('#')
        stu = Student(s_lst[0],int(s_lst[1]),s_lst[2],float(s_lst[3]))
        info_lst.append(stu)
    for item in info_lst:
        # print(item) # 列表里存的item是对象
        item.show()
'''

# ============ 20、乐手弹奏乐器 (类)(多态)
'''
class Instrument():
    def make_sound(self):
        pass
class Erhu(Instrument):
    def make_sound(self): # 重写
        print('二胡ererer')
class Piano(Instrument):
    def make_sound(self):
        print('钢琴dingdingding')
class Bird:
    def make_sound(self):
        print('小鸟jijiji')

def play(anything):
    anything.make_sound() # 多态

if __name__ == '__main__':
    play(Erhu())
    play(Piano())
    play(Bird())
'''

# 面向对象思想 公开车接送客人,私家车自驾游(类)(面向对象编程思想)
'''
class Car(object):
    def __init__(self,type,no):
        self.type=type
        self.no=no
    def start(self):
        pass
    def stop(self):
        pass

class Taxi(Car):
    def __init__(self,type,no,company):
        super().__init__(type,no)
        self.company=company
    def start(self):
        print(f'本车隶属{self.company}公司,车牌为{self.no},车内监控已开启')
    def stop(self):
        print('乘客到达目的地附近,请付款下车.')

class PrivateCar(Car):
    def __init__(self,type,no,person):
        super().__init__(type,no)
        self.person=person
    def start(self):
        print(f'驾驶员{self.person}请系好安全带,准备出发')
    def stop(self):
        print('到达目的地附近,本次导航结束。')

if __name__ == '__main__':
    taxi=Taxi('本田','京A6688','东航')
    taxi.start()
    taxi.stop()
    print('-'*30)
    pc=PrivateCar('本田','京A6688','LP')
    pc.start()
    pc.stop()
'''

# ============ 21、买票系统 (模块:pretttable)
'''
import prettytable as pt
# 显示座席
def show(row_num):
    tb = pt.PrettyTable() # 创建对象
    tb.field_names = ['行号','座位1','座位2','座位3','座位4','座位5',]
    for i in range(row_num):
        lst = [f'第{i+1}行','有票','有票','有票','有票','有票']
        tb.add_row(lst)
    print(tb)
# 订票
def order_ticket(row_num,hang,lie):
    tb = pt.PrettyTable()
    tb.field_names = ['行号','座位1','座位2','座位3','座位4','座位5',]
    for i in range(row_num):
        lst = [f'第{i + 1}行', '有票', '有票', '有票', '有票', '有票']
        if i+1 != hang:
            tb.add_row(lst)
        else:
            lst[lie] = '已售出'
            tb.add_row(lst)
    print(tb)

if __name__ == '__main__':
    row_num = 13
    show(row_num)
    target = input('请选择您要买的位置(行,列)')
    try:
        target_lst = target.split(',')
        hang = int(target_lst[0])
        lie = int(target_lst[1])
    except:
        print('输入格式有误,重输')
    order_ticket(row_num,hang,lie) # 共有几行
'''

# ============ 22、引子 (字符串) .stript() (模块:datetime)
'''
# Case 1
start = '\t2000 0208\n'
print(start)           # 2000 0208
start = start.strip()  # 去掉字符串首尾的空格
print(start)           # 2000 0208
print('--------')

# Case 2
import datetime
date = '2000-02-08'
print(datetime.datetime.strptime(date, '%Y-%m-%d'))  # 2000-02-08 00:00:00

# Case 3
import datetime
date = datetime.timedelta(days=10)
print(date)       # 10 days, 0:00:00
print(type(date)) # <class 'datetime.timedelta'>
'''
# ============ 23、推算时间 (模块:datetime)
'''
import datetime
def inputdate(date):
    date = date.strip() # 防止输入首尾有多余的空格扰乱字符串
    date = start[0:4] + '-' + start[4:6] + '-' + start[6:]
    return datetime.datetime.strptime(date, '%Y-%m-%d')

if __name__ == '__main__':
    start = input('请输入开始日期(格式:20000208):')
    start = inputdate(start)             # 2000-02-08 00:00:00

    gap = int(input('请输入间隔天数:'))
    gap = datetime.timedelta(days = gap) # 10 days, 0:00:00

    fdate = start + gap
    print('您推算的日期是:',fdate)
    print('您推算的日期是:'+str(fdate).split()[0])
'''
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值