使用方法:把每个案例分别执行下,看它的运行结果,再试着根据括号提示编写程序代码
- 《python 案例(一)》里不包含类 eg 1~17
- 《python 案例(二)》里有类的练习 eg 18~23
- 《python 案例(三)》关于文件操作 eg 24~26
题目:
- 设置字体颜色 ‘\033[x:xm xxxxxxxx\033[0m’
- 把数字转为二、八、十六进制数
- 判断支付密码是否合法(只能是数字) .isdigit()
- 循环输出26个字母对应ascii
- 模拟账户登录
- 猜数游戏:我心中有个1~100的数 random.randint
- 千年危机:根据年份后两位,补齐年份(4位)(列表) enumerate
- 进货 出货(列表) .find()
- 逆序遍历列表
- 查询动漫分类(列表) zip dict.get()
- 查询车次信息(字典+列表) 遍历
- 点餐(元组) enumerate()
- 打印榜单(元组) enumerate()
- 模拟手机通讯录 (集合)
- 统计字符串出现个数(字符、字符串)
- 字符串格式化输出 (字符串拼接)
- 能否构成三角形 (函数中异常处理) raise Exception
- 圆的面积与周长(类)(格式化字符串)
- 定义学生类,录入5个学生信息,存到列表中(类)(字符串劈分)
- 乐手弹奏乐器 (类)(多态)
- 买票系统 (模块:pretttable)
- 引子 (字符串) .stript() (模块:datetime)
- 推算时间 (模块:datetime)
- 引子 (模块time)
- 记录用户登录日志
- 模拟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])
'''