self.lease_bike()
elif select == 4:
# 归还车辆
self.revert_bike()
elif select == 5:
# 退出系统
print('期待您下次使用!祝您生活愉快!')
break
单车信息
def info\_bike(self):
print("所有车辆信息如下:")
for bike in self.bike_list:
print(bike)
def add\_bike(self):
new_NO = int(input('请输入车辆编码'))
new_age = int(input('请输入车辆使用年限'))
new_bike = Bike(new_NO, new_age)
self.bike_list.append(new_bike)
print('车辆共享成功!')
# 租借车辆
def lease\_bike(self):
lease_NO = int(input("请输入租借的车辆编号"))
for bike in self.bike_list:
# 遍历自行车列表,与用户租借的编号进行匹配
if bike.NO == lease_NO:
# 如果单车在平台中存在
if bike.state == 1:
# 车辆租借中
print("你来晚了,车被租走了")
break
else:
# 车辆待租借
print("租借成功,欢迎您使用绿色出行")
bike.state = 1
break
else:
# print('车辆编号输入错误')
# break
print("该车辆不存在")
def select\_bike(self, NO):
# 遍历整个自行车列表
for bike in self.bike_list:
# 如果存在输入编号与车辆列表中的编号一致
if bike.NO == NO:
# 返回该车辆信息
return bike
# 归还车辆
def revert\_bike(self):
# 输入归还车辆的编号
revert_NO = int(input("请输入归还的车辆编号"))
# 进行查询
res = self.select_bike(revert_NO)
# 车辆存在
if res != None:
# 租借中,还车成功
if res.state == 1:
# 还车成功
print("还车成功,期待下次使用")
res.state = 0
# 未租借,等待租借
else:
# 车辆等待租借
print("车辆整备完成,等待租借")
# 车辆不存在
else:
print("该车辆不存在,想必您是输错了")
user = Manage()
print(user)
user.menu()
或
class Bike:
# 初始化方法 no代表车辆编号、age代表车辆年限、
# state代表车辆状态,0代表待租借,1代表租借中
def __init__(self, NO, age, state=0):
self.NO = NO
self.age = age
self.state = state
def \_\_str\_\_(self):
if self.state == 0:
status = '待租借'
else:
status = '租借中'
return '车辆编号%d 已经运行%d年,车辆状态:%s' % (self.NO, self.age, status)
class Manage:
# 定义一个列表,用来存储所有的车辆
bike_list = []
def \_\_init\_\_(self):
bikeA = Bike(1001, 2)
bikeB = Bike(1002, 2)
bikeC = Bike(1003, 1)
self.bike_list.append(bikeA)
self.bike_list.append(bikeB)
self.bike_list.append(bikeC)
# 系统菜单
def menu(self):
print("欢迎使用共享单车租借系统\n")
while True:
print(' 1.查询所有车辆\n 2.共享车辆\n 3.租借车辆\n 4.归还车辆\n 5.退出系统\n')
select = int(input('请输入所选功能对应得数字:'))
if select == 1:
# 单车信息
self.info_bike()
elif select == 2:
# 共享单车
self.add_bike()
elif select == 3:
# 租借车辆
self.lease_bike()
elif select == 4:
# 归还车辆
self.revert_bike()
elif select == 5:
# 退出系统
print('期待您下次使用!祝您生活愉快!')
break
单车信息
def info\_bike(self):
for bike in self.bike_list:
print(bike)
# 共享单车
def add\_bike(self):
new_NO = int(input('请输入车辆编码'))
new_age = int(input('请输入车辆使用年限'))
new_bike = Bike(new_NO, new_age)
self.bike_list.append(new_bike)
print('车辆共享成功!')
# 租借车辆
def lease\_bike(self):
lease_NO = int(input("请输入租借的车辆编号"))
res = self.select_bike(lease_NO)
if res != None:
if res.state == 1:
# 车辆租借中
print("你来晚了,车被租走了")
else:
# 车辆待租借
print("租借成功,欢迎您使用绿色出行")
res.state = 1
else:
print("该车辆不存在")
def select\_bike(self, NO):
# 遍历整个自行车列表
for bike in self.bike_list:
# 如果存在输入编号与车辆列表中的编号一致
if bike.NO == NO:
# 返回该车辆信息
return bike
# 归还车辆
def revert\_bike(self):
# 输入归还车辆的编号
revert_NO = int(input("请输入归还的车辆编号"))
# 进行查询
res = self.select_bike(revert_NO)
# 车辆存在
if res != None:
# 租借中,还车成功
if res.state == 1:
# 还车成功
print("还车成功,期待下次使用")
res.state = 0
# 未租借,等待租借
else:
# 车辆等待租借
print("车辆整备完成,等待租借")
# 车辆不存在
else:
print("该车辆不存在,想必您是输错了")
user = Manage()
print(user)
user.menu()
#### 程序运行效果如下:
车辆编号1001 已经运行2年,车辆状态:待租借
<main.Manage object at 0x00000248B56E5808>
欢迎使用共享单车租借系统
1.查询所有车辆
2.共享车辆
3.租借车辆
4.归还车辆
5.退出系统
请输入所选功能对应得数字:>? 1
所有车辆信息如下:
车辆编号1001 已经运行2年,车辆状态:待租借
车辆编号1002 已经运行2年,车辆状态:待租借
车辆编号1003 已经运行1年,车辆状态:待租借
1.查询所有车辆
2.共享车辆
3.租借车辆
4.归还车辆
5.退出系统
请输入所选功能对应得数字:>? 2
请输入车辆编码>? 1006
请输入车辆使用年限>? 5
车辆共享成功!
1.查询所有车辆
2.共享车辆
3.租借车辆
4.归还车辆
5.退出系统
请输入所选功能对应得数字:>? 3
请输入租借的车辆编号>? 1002
租借成功,欢迎您使用绿色出行
1.查询所有车辆
2.共享车辆
3.租借车辆
4.归还车辆
5.退出系统
请输入所选功能对应得数字:>? 1
所有车辆信息如下:
车辆编号1001 已经运行2年,车辆状态:待租借
车辆编号1002 已经运行2年,车辆状态:租借中
车辆编号1003 已经运行1年,车辆状态:待租借
车辆编号1006 已经运行5年,车辆状态:待租借
1.查询所有车辆
2.共享车辆
3.租借车辆
4.归还车辆
5.退出系统
请输入所选功能对应得数字:>? 4
请输入归还的车辆编号>? 1002
还车成功,期待下次使用
1.查询所有车辆
2.共享车辆
3.租借车辆
4.归还车辆
5.退出系统
请输入所选功能对应得数字:>? 1
所有车辆信息如下:
车辆编号1001 已经运行2年,车辆状态:待租借
车辆编号1002 已经运行2年,车辆状态:待租借
车辆编号1003 已经运行1年,车辆状态:待租借
车辆编号1006 已经运行5年,车辆状态:待租借
1.查询所有车辆
2.共享车辆
3.租借车辆
4.归还车辆
5.退出系统
请输入所选功能对应得数字:>? 5
期待您下次使用!祝您生活愉快!
————————————————————————————————————————————
## pandas 每日一练:
`print()只为转行`
-*- coding = utf-8 -*-
@Time : 2022/7/27 16:31
@Author : lxw_pro
@File : pandas-9 练习.py
@Software : PyCharm
import pandas as pd
### 51、使用绝对路径读取本地Excel数据
lxw = pd.read_excel(“site.xlsx”)
print(lxw)
print()
#### 程序运行结果如下:
Unnamed: 0 Unnamed: 0.1 create_dt ... yye sku_cost_prc lrl
0 0 1 2016-11-30 … 8.8 6.77 30.00%
1 1 2 2016-11-30 … 7.5 5.77 30.00%
2 2 3 2016-11-30 … 5.0 3.85 30.00%
3 3 4 2016-11-30 … 19.6 7.54 30.00%
4 4 5 2016-12-02 … 13.5 10.38 30.00%
… … … … … … … …
751 751 752 2016-12-31 … 1.0 0.77 30.00%
752 752 753 2016-12-31 … 2.0 1.54 30.00%
753 753 754 2016-12-31 … 1.0 0.77 30.00%
754 754 755 2016-12-31 … 7.6 2.92 30.00%
755 755 756 2016-12-31 … 3.3 2.54 30.00%
[756 rows x 8 columns]
---
### 52、查看数据前三行
print(lxw.head(3))
print()
#### 程序运行结果如下:
Unnamed: 0 Unnamed: 0.1 create_dt … yye sku_cost_prc lrl
0 0 1 2016-11-30 … 8.8 6.77 30.00%
1 1 2 2016-11-30 … 7.5 5.77 30.00%
2 2 3 2016-11-30 … 5.0 3.85 30.00%
[3 rows x 8 columns]
---
### 53、查看每列数据缺失值情况
print(lxw.isnull().sum())
print()
#### 程序运行结果如下:
Unnamed: 0 0
Unnamed: 0.1 0
create_dt 3
sku_cnt 1
sku_sale_prc 1
yye 5
sku_cost_prc 2
lrl 3
dtype: int64
---
### 54、提取日期列含有空值de行
print(lxw[lxw[‘create_dt’].isnull()])
print()
#### 程序运行结果如下:
Unnamed: 0 Unnamed: 0.1 create_dt … yye sku_cost_prc lrl
6 6 7 NaN … 10.8 8.31 30.00%
18 18 19 NaN … 5.9 4.54 30.00%
21 21 22 NaN … 6.0 2.31 30.00%
[3 rows x 8 columns]
---
### 55、输出每列缺失值具体行数
for col in lxw.columns:
if lxw[col].count() != len(lxw):
loc = lxw[col][lxw[col].isnull().values==True].index.tolist()
print(f"列名:{col}, 第{loc}行位置有缺失值!")
print()
#### 程序运行结果如下:
列名:create_dt, 第[6, 18, 21]行位置有缺失值!
列名:sku_cnt, 第[5]行位置有缺失值!
列名:sku_sale_prc, 第[25]行位置有缺失值!
列名:yye, 第[9, 20, 29, 36, 60]行位置有缺失值!
列名:sku_cost_prc, 第[15, 44]行位置有缺失值!
列名:lrl, 第[15, 19, 50]行位置有缺失值!
---
### 56、删除所有存在缺失值的行
lxw.dropna(axis=0, how=‘any’, inplace=True)
print(lxw)
print()
#### 程序运行结果如下:
Unnamed: 0 Unnamed: 0.1 create_dt ... yye sku_cost_prc lrl
0 0 1 2016-11-30 … 8.8 6.77 30.00%
1 1 2 2016-11-30 … 7.5 5.77 30.00%
2 2 3 2016-11-30 … 5.0 3.85 30.00%
3 3 4 2016-11-30 … 19.6 7.54 30.00%
4 4 5 2016-12-02 … 13.5 10.38 30.00%
… … … … … … … …
751 751 752 2016-12-31 … 1.0 0.77 30.00%
752 752 753 2016-12-31 … 2.0 1.54 30.00%
753 753 754 2016-12-31 … 1.0 0.77 30.00%
754 754 755 2016-12-31 … 7.6 2.92 30.00%
755 755 756 2016-12-31 … 3.3 2.54 30.00%
[742 rows x 8 columns]
---
### 57、绘制营业额折线图
import matplotlib.pyplot as plt
plt.style.use(‘seaborn-darkgrid’)
plt.rc(‘font’, size=8)
plt.rc(‘figure’, figsize=(4, 3), dpi=150)
lxw[‘yye’].plot()
plt.show()
#### 程序运行效果如下-1:

或者
plt.plot(lxw[‘yye’])
plt.show()
#### 程序运行效果如下-2:

---
### 58、同时绘制yye与sku\_cost\_prc
lxw[[‘yye’, ‘sku_cost_prc’]].plot()
plt.show()
#### 程序运行效果如下:

---
### 59、绘制利润率的直方图
plt.hist(lxw[‘lrl’])
plt.show()
#### 程序运行效果如下:

---
### 60、让直方图更细致
lxw[‘lrl’].hist(bins=30)
plt.show()
#### 程序运行效果如下:

---
### [每日一言:]( )
*
>
> ***少年乘着希望之风,奔向遥远的未来!!!***
>
>
>
*
---
#### [持续更新中…]( )
>
> 点赞,你的认可是我创作的`动力`!
> 收藏,你的青睐是我努力的`方向`!
> 评论,你的意见是我进步的`财富`!
> 关注,你的喜欢是我长久的`坚持`!