程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

关注本站官方公众号:程序员总部,领取三大福利!
福利一:python和前端辅导
福利二:进程序员交流微信群,专属于程序员的圈子
福利三:领取全套零基础视频教程(python,java,前端,php)

  价值13000svip视频教程,python大神匠心打造,零基础python开发工程师视频教程全套,基础+进阶+项目实战,包含课件和源码

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2021-10(9)

2021-11(18)

【模拟共享单车租借平台~python】

发布于2022-08-07 20:29     阅读(609)     评论(0)     点赞(25)     收藏(4)



个人昵称:lxw-pro
个人主页:欢迎关注 我的主页
个人感悟: “失败乃成功之母”,这是不变的道理,在失败中总结,在失败中成长,才能成为IT界的一代宗师。

共享单车租借平台

先创建两个类。
一个单车类Bike,用来实例化单车对象,绑定单车的属性。
一个平台管理类Manage,将查询车辆,共享车辆,租借车辆,归还车辆功能封装到该类中。

并且,当平台管理类Manage实例化对象时,可以给用户弹出一个菜单,让用户选择不同的功能。

相关程序代码如下:

class Bike2:
    def __init__(self):
        pass

    def menu(self):
        pass

    def xx(self):
        pass

    def gx(self):
        pass

    def zj(self):
        pass

    def gh(self):
        pass

# 利用初始化__init__ ,让实例被创建时自动获取这些属性

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)


bike = Bike(1001, 2)
print(bike)


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)

# 查询所有车辆信息,完善info_bike方法
    # 系统菜单
    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):
        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()

程序运行效果如下:

在这里插入图片描述


每日一言:

少年乘着希望之风,奔向遥远的未来!!!


持续更新中…

点赞,你的认可是我创作的动力
收藏,你的青睐是我努力的方向
评论,你的意见是我进步的财富
关注,你的喜欢是我长久的坚持
在这里插入图片描述

欢迎关注微信公众号【程序人生6】,一起探讨学习哦!!!

原文链接:https://blog.csdn.net/m0_66318554/article/details/125761644



所属网站分类: 技术文章 > 博客

作者:74873487

链接:https://www.pythonheidong.com/blog/article/1645104/8f8f2494a312d55bcea6/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

25 0
收藏该文
已收藏

评论内容:(最多支持255个字符)