[Python学习日记-28] 开发基础练习1——股票查询程序

news2024/11/15 12:48:18

[Python学习日记-28] 开发基础练习1——股票查询程序

简介

题目及效果参考

源码与解析

简介

        该练习使用了列表、字典、字符串等之前学到的数据类型,用于巩固实践之前学习的内容,题目当中使用到的数据均摘录与东方财富网,最好在学习完前面的知识点之后花两天时间自己做一下,然后再看该篇文章中的答案。

题目及效果参考

一、题目

        以下为股票数据源,请把它存入 stock_data.txt 当中

序号  代码      名称  价格      涨跌幅 涨跌额 5分钟涨跌额  今开  昨收      最高      最低  成交量     成交额 换手率     量比    委比    振幅   市盈率    流通市值  总市值 每股收益    净利润 主营收
1    600199    金种子酒    6.48    10.02%    0.59    0.00%    5.91    5.89    6.48    5.88    25.68万    1.61亿    4.61%    6.78    100.00%    10.19%    1661.5    36.01亿    36.01亿    0.00    162.4万    7.98亿
2    000860    顺鑫农业    54.69    10.00%    4.97    0.00%    53.00    49.72    54.69    51.12    20.18万    10.78亿    3.54%    8.30    100.00%    7.18%    41.9    312.0亿    312.0亿    1.30    7.44亿    120.7亿
3    603589    口子窖    51.80    8.21%    3.93    1.02%    48.11    47.87    51.80    48.00    37304    1.88亿    0.62%    4.33    49.82%    7.69%    22.8    309.4亿    309.4亿    2.26    11.41亿    32.07亿
4    000596    古井贡酒    98.88    8.09%    7.40    0.78%    92.47    91.48    99.88    92.00    20075    1.94亿    0.52%    2.46    -66.85%    8.61%    31.0    379.3亿    497.9亿    3.19    12.56亿    67.62亿
5    603369    今世缘    27.88    8.06%    2.08    0.12%    25.80    25.80    28.08    25.80    10.59万    2.86亿    0.84%    2.90    -46.05%    8.84%    30.5    350.0亿    350.0亿    0.92    10.29亿    31.59亿
6    600559    老白干酒    18.28    7.59%    1.29    -0.29%    17.06    16.99    18.59    16.99    17.72万    3.16亿    2.87%    4.98    -61.26%    9.42%    38.1    112.2亿    126.3亿    0.48    2.44亿    24.31亿
7    000568    泸州老窖    57.10    7.19%    3.83    -0.47%    54.40    53.27    57.88    54.40    14.35万    8.11亿    0.98%    4.12    1.20%    6.53%    25.3    833.9亿    836.3亿    2.26    27.51亿    92.63亿
8    000799    酒鬼酒    21.82    6.86%    1.40    0.10%    21.10    20.42    22.05    21.10    18.65万    4.01亿    5.74%    5.88    72.10%    4.65%    32.1    70.90亿    70.90亿    0.68    1.61亿    7.60亿
9    600809    山西汾酒    58.39    6.14%    3.38    0.05%    55.50    55.01    58.54    55.15    72118    4.15亿    0.83%    4.00    35.20%    6.16%    36.1    506.3亿    506.3亿    1.62    12.64亿    69.15亿
10    603919    金徽酒    15.16    5.94%    0.85    -0.35%    14.32    14.31    15.55    14.20    55030    8229万    1.51%    4.20    -78.50%    9.43%    21.4    55.18亿    55.18亿    0.71    2.59亿    14.62亿
11    002461    珠江啤酒    5.96    5.49%    0.31    0.35%    5.69    5.65    6.00    5.69    10.57万    6202万    0.78%    4.55    -48.27%    5.49%    38.7    81.08亿    131.9亿    0.15    3.17亿    33.07亿
12    000858    五粮液    83.05    5.42%    4.27    -0.33%    78.68    78.78    83.38    78.50    28.78万    23.53亿    0.76%    3.31    -41.49%    6.19%    26.1    3152亿    3223亿    3.18    94.94亿    292.5亿
13    002304    洋河股份    117.19    4.33%    4.86    -0.06%    113.11    112.33    117.50    113.11    56404    6.54亿    0.45%    3.08    -35.91%    3.91%    21.8    1473亿    1766亿    5.37    70.39亿    209.6亿
14    603198    迎驾贡酒    17.85    4.32%    0.74    0.58%    17.12    17.11    18.06    17.08    68543    1.21亿    0.86%    3.75    12.86%    5.73%    19.4    142.8亿    142.8亿    0.92    4.98亿    24.37亿
15    002646    青青稞酒    13.00    4.25%    0.53    0.32%    12.48    12.47    13.09    12.48    40479    5203万    0.90%    3.84    40.55%    4.89%    -49.8    58.50亿    58.50亿    -0.26    8680万    9.52亿
16    200596    古井贡B    54.28    4.18%    2.18    0.15%    52.10    52.10    55.00    52.10    2166    1169万    0.06%    2.96    -16.18%    5.57%    17.0    208.2亿    273.3亿    3.19    12.56亿    67.62亿
17    600197    伊力特    19.49    4.11%    0.77    0.85%    18.67    18.72    19.72    18.50    12.59万    2.44亿    2.85%    3.55    -71.57%    6.52%    22.2    85.95亿    85.95亿    0.88    2.90亿    14.98亿
18    600702    舍得酒业    29.90    4.00%    1.15    -0.21%    28.81    28.75    30.30    28.81    13.12万    3.89亿    3.98%    4.22    -57.22%    5.18%    29.3    98.53亿    100.8亿    1.02    3.42亿    22.12亿
19    603711    香飘飘    27.15    3.78%    0.99    -0.76%    26.16    26.16    27.60    25.60    14216    3788万    3.05%    1.62    -49.38%    7.65%    37.7    12.57亿    113.9亿    0.72    8400万    16.80亿
20    600132    重庆啤酒    34.70    3.64%    1.22    0.93%    33.64    33.48    34.70    33.64    17215    5894万    0.36%    2.86    42.98%    3.17%    42.3    167.9亿    167.9亿    0.82    3.85亿    29.24亿
21    600300    维维股份    3.46    3.59%    0.12    0.00%    3.36    3.34    3.49    3.35    14.09万    4830万    0.84%    2.04    -22.22%    4.19%    63.3    57.85亿    57.85亿    0.05    9824万    37.28亿
22    600059    古越龙山    8.11    3.58%    0.28    -0.51%    7.85    7.83    8.20    7.80    46570    3742万    0.57%    2.95    10.46%    5.11%    38.6    65.57亿    65.57亿    0.21    1.15亿    12.75亿
23    600600    青岛啤酒    40.30    3.49%    1.36    0.03%    39.31    38.94    40.37    39.00    51910    2.08亿    0.73%    3.43    -77.14%    3.52%    36.4    280.2亿    544.0亿    1.10    21.00亿    236.4亿
24    000995    *ST皇台    4.57    3.39%    0.15    0.23%    4.47    4.42    4.57    4.41    26640    1196万    1.50%    2.13    -35.66%    3.62%    -5.0    8.11亿    8.11亿    -0.92    -4190万    950.4万
25    600616    金枫酒业    6.14    3.37%    0.20    0.00%    5.95    5.94    6.21    5.81    60674    3655万    1.18%    3.80    -5.79%    6.73%    87.6    31.55亿    31.55亿    0.07    2694万    5.81亿
26    000869    张裕A    30.18    3.18%    0.93    0.10%    29.28    29.25    30.25    29.26    25527    7642万    0.56%    4.26    -68.76%    3.38%    21.0    136.9亿    207.0亿    1.44    7.70亿    38.61亿
27    000752    西藏发展    7.79    3.04%    0.23    -0.40%    7.67    7.56    7.83    7.54    44459    3438万    1.67%    2.01    -16.35%    3.84%    -2888.9    20.57亿    20.57亿    -0.00    -54.36万    2.61亿
28    600779    水井坊    43.44    2.99%    1.26    -0.12%    42.30    42.18    44.15    41.89    74683    3.23亿    1.52%    5.69    3.15%    5.36%    38.2    211.8亿    211.8亿    1.14    4.63亿    21.39亿
29    000729    燕京啤酒    6.50    2.85%    0.18    0.47%    6.32    6.32    6.50    6.31    14.29万    9171万    0.55%    3.16    -27.34%    2.69%    113.7    162.6亿    182.6亿    0.06    6.11亿    102.3亿
30    603156    养元饮品    50.37    2.82%    1.38    0.39%    49.00    48.99    50.69    48.43    19029    9486万    0.41%    2.34    -39.61%    4.61%    13.1    229.9亿    379.2亿    3.84    17.41亿    57.57亿
31    600365    通葡股份    4.69    2.40%    0.11    -0.22%    4.58    4.58    4.72    4.58    64760    3022万    1.62%    2.11    -12.34%    3.06%    260.6    18.76亿    18.76亿    0.02    206.5万    6.68亿
32    600543    莫高股份    7.08    2.31%    0.16    0.14%    6.98    6.92    7.14    6.86    48127    3380万    1.47%    1.90    -38.43%    4.05%    118.0    22.74亿    22.74亿    0.06    2046万    1.39亿
33    603779    威龙股份    14.72    2.22%    0.32    0.00%    14.36    14.40    14.88    14.16    8443    1229万    0.81%    1.56    -19.41%    5.00%    50.7    15.17亿    33.76亿    0.29    3472万    5.54亿
34    600962    国投中鲁    9.91    2.16%    0.21    0.10%    9.80    9.70    9.97    9.71    27928    2761万    1.09%    1.83    -10.94%    2.68%    177.6    25.17亿    25.99亿    0.06    657.4万    5.90亿
35    600084    中葡股份    3.47    2.06%    0.07    -0.59%    3.40    3.40    3.55    3.30    14.16万    4862万    1.26%    1.44    -28.41%    7.35%    -38.8    39.11亿    39.11亿    -0.09    -8387万    2.84亿
36    601579    会稽山    9.92    1.95%    0.19    0.00%    9.77    9.73    10.03    9.70    22768    2248万    0.56%    2.53    7.02%    3.39%    26.5    39.64亿    49.29亿    0.37    1.02亿    7.80亿
37    600519    贵州茅台    791.86    1.87%    14.56    -0.22%    778.80    777.30    795.00    777.00    22723    17.92亿    0.18%    1.97    -49.84%    2.32%    31.3    9948亿    9948亿    25.34    247.3亿    522.4亿
38    000929    兰州黄河    7.82    1.56%    0.12    0.00%    7.70    7.70    7.87    7.65    9615    745.8万    0.50%    1.15    -13.31%    2.86%    -21.5    14.55亿    14.55亿    -0.36    -6755万    5.09亿
39    200869    张裕B    16.91    1.32%    0.22    0.00%    16.69    16.69    17.04    16.59    977        165.2万    0.02%    1.85    -8.02%    2.70%    11.7    76.68亿    115.9亿    1.44    7.70亿    38.61亿
40    600573    惠泉啤酒    8.34    0.97%    0.08    0.36%    8.29    8.26    8.38    8.15    15798    1303万    0.62%    1.51    16.27%    2.78%    50.5    20.95亿    20.95亿    0.17    2459万    4.96亿
41    600189    吉林森工    4.76    0.63%    0.03    -0.21%    4.76    4.73    4.79    4.71    14280    678.8万    0.30%    1.05    -1.09%    1.69%    12.6    22.09亿    34.19亿    0.38    3542万    10.46亿
42    000848    承德露露    9.17    0.44%    0.04    -0.33%    9.04    9.13    9.27    8.88    62919    5707万    0.64%    2.25    25.46%    4.27%    21.8    89.73亿    89.73亿    0.42    4.13亿    21.22亿
43    002568    百润股份    13.40    0.30%    0.04    0.52%    13.29    13.36    13.48    13.07    8835    1173万    0.17%    0.99    9.38%    3.07%    51.5    68.85亿    69.65亿    0.26    1.30亿    8.53亿
44    600238    *ST椰岛    9.85    -1.00%    -0.10    0.20%    9.85    9.95    10.03    9.71    15848    1561万    0.35%    1.47    80.97%    3.22%    -16.1    43.61亿    43.92亿    -0.61    -1.63亿    3.48亿

开发程序对stock_data.txt进行以下操作:

  1. 程序启动后,给用户提供查询接口,允许用户重复查股票行情信息(用到循环)
  2. 允许用户通过模糊查询股票名,比如输入“啤酒”,就把所有股票名称中包含“啤酒”的信息打印出来
  3. 允许按股票价格、涨跌幅、换手率这几列来筛选信息,比如输入“价格>50”则把价格大于50的股票都打印,输入“市盈率<50“,则把市盈率小于50的股票都打印,不用判断等于。

        思路提示:加载文件内容到内存,转成 dict 或 list 结构,然后对 dict 或 list 进行查询等操作。 这样以后就不用每查一次就要打开一次文件了,效率会更高。 

二、程序启动后执行效果参考

源码与解析

一、思路

模糊查询:

  1. 为了方便不用每次都从硬盘读取方便查询,需要把原数据加载到内存里,需要选择存储为 dict 或 list 结构
  2. 如果使用 list 来存储的话就使用 for 循环一行行的提取,然后搜索包含需要搜索字符的项,但这种结构不利于日后的表格增项
  3. 如果使用 dict 来存储的话就可以把名称作为 key 然后其他数据作为 value,模糊查询只需要查询 key 值就好了,而日后如果需要在表格中增项只需要替换 value 中的内容即可
  4. 经过上面的分析,明显的在这个要求下 dict 明显更加合适,所以我们选择用 dict 这种数据结构来存储数据

允许按股票价格、涨跌幅、换手率这几列来筛选信息,并且进行大于小于的判断:

  1. 接受用户指令,根据查询条件(股票价格、涨跌幅、换手率)去循环 dict,例如条件为“换手率>20”,每循环一次找到对应的值,然后跟用户输入的条件进行大于小于的判断
  2. 写出判断逻辑的伪代码

user_input = 换手率>10

q_name,q_val = user_input.split(">")

for k in stock_data:

        val = stock_data[k]

        if val[10] > q_val:匹配上了        # 假设换手率的下标是10

                print(val)

二、答案

# 1.打开文件,加载内容,把内容转换成dict
# 2.while,

f = open('stock_data', 'r', encoding='utf-8')
stock_data = {
    # 'N德恩':['1','300780','N德恩'...]
    # '德国大众':['2','300781','德国大众'...]
}
query_columns = ["最新价", "涨跌幅", "换手率"]

# 先把第一行存读出来,存下来,变成列表
columns = f.readline().strip().split()

for line in f:
    line = line.strip().split()
    stock_data[line[2]] = line

while True:
    match_count = 0
    cmd = input("输入查询指令>:").strip()
    if len(cmd) == 0:    # 排除空值,因为 '' in 'Jove' ——> True
        continue
    print(columns)
    for s_name in stock_data:
        if cmd in s_name:   # 模糊匹配
            print(stock_data[s_name])
            match_count += 1
    # 输入,最新价、涨跌、换手率 ; 换手率>20
    # 要确保用户输入的要查的列是可允许。
    # 只支持 > and <
    if ">" in cmd:
        q_name, q_val = cmd.split(">")   # 换手率>20 拆分后q_name='换手率' q_val='20'
        q_name = q_name.strip()
        q_val = float(q_val)
        if q_name in query_columns:     # 代表 这是支持的可进行查询的列
            q_name_index = columns.index(q_name)    # 取到这一列的下标
            for s_name, s_vals in stock_data.items():
                # 不知道 用户输入的是["最新价","涨跌幅","换手率"]里面的那个值
                # 解决方案:拿q_name去到文件 第一行的列名里,去找对应的列的下标。拿到这个下标后,再循环去到每行去取对应的值
                if float(s_vals[q_name_index].strip("%")) > q_val:  # 用户输入和数据进行对比
                    print(s_vals)   # 打印符合条件的
                    match_count += 1
    elif "<" in cmd:
        q_name, q_val = cmd.split("<")  # 换手率<20 拆分后q_name='换手率' q_val='20'
        q_name = q_name.strip()
        q_val = float(q_val)
        if q_name in query_columns:  # 代表 这是支持的可进行查询的列
            q_name_index = columns.index(q_name)  # 取到这一列的下标
            for s_name, s_vals in stock_data.items():
                # 不知道 用户输入的是["最新价","涨跌幅","换手率"]里面的那个值
                # 解决方案:拿q_name去到文件 第一行的列名里,去找对应的列的下标。拿到这个下标后,再循环去到每行去取对应的值
                if float(s_vals[q_name_index].strip("%")) < q_val:  # 用户输入和数据进行对比
                    print(s_vals)  # 打印符合条件的
                    match_count += 1

    if match_count > 0:
        print("匹配到%s条" % match_count)
    else:
        print("无效指令...")

代码输出如下:  

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2160362.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【论文阅读】Grounding Language with Visual Affordances over Unstructured Data

Abstract 最近的研究表明&#xff0c;大型语言模型&#xff08;llms&#xff09;可以应用于将自然语言应用于各种各样的机器人技能。然而&#xff0c;在实践中&#xff0c;学习多任务、语言条件机器人技能通常需要大规模的数据收集和频繁的人为干预来重置环境或帮助纠正当前的…

USB总线同步数据采集卡6路高速模拟量采集带DIO功能USB2884/2885/2886

USB2884/2885/2886 数据采集卡 概述&#xff1a; 系统框图&#xff1a; 规格参数&#xff1a; 板卡外形图&#xff1a; 尺寸图及元器件功能说明&#xff1a;

图像识别OCR(Tess4J)

&#x1f353; 简介&#xff1a;java系列技术分享(&#x1f449;持续更新中…&#x1f525;) &#x1f353; 初衷:一起学习、一起进步、坚持不懈 &#x1f353; 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正&#x1f64f; &#x1f353; 希望这篇文章对你有所帮助,欢…

ZBrush入门使用介绍——16、ArrayMesh

大家好&#xff0c;我是阿赵。   继续介绍ZBrush的用法。这次看看ArrayMesh功能。   简单来说&#xff0c;ArrayMesh功能是可以复制很多个模型&#xff0c;然后根据路径排列。 一、 从阵列预设生成ArrayMesh 先把模型转换成多边形网格体 这时候&#xff0c;ArrayMesh的选…

jupyter安装与使用——Ubuntu服务器

jupyter安装与使用——Ubuntu服务器 一、安装miniconda3/anaconda31. 下载miniconda32. 安装miniconda33. 切换到bin文件夹4. 输入pwd获取路径5. 打开用户环境编辑页面6. 重新加载用户环境变量7. 初始化conda8.验证是否安装成功9.conda配置 二、安装jupyter2.1 conda安装2.2 配…

Java调用数据库 笔记05(查询篇)

一. 数据库&#xff08;通过各种驱动来实现调用&#xff09;&#xff1a; &#xff08;应用程序通过接口控制的各种数据库驱动来调用数据库-->jdbc方法&#xff09; 1.创建Java的普通class类 2.加载驱动 Class.forName("com.mysql.jdbc.Driver"); 3.驱动管理类…

C++_23_STL容器

文章目录 STL容器概念常用容器A string作用构造函数基本赋值操作获取字符串长度存取字符操作拼接操作查找和替换注意:查找是不存在返回-1比较操作截取操作插入与删除string与char * 转换 B vector概述与数组区别迭代器构造函数赋值操作插入与删除取值操作大小相关存储自定义类型…

linux 安装 tomcat9、java环境

一、安装 Java环境 1. 下载文件 https://repo.huaweicloud.com/java/jdk/ 或者网盘&#xff1a;通过网盘分享的文件&#xff1a;jdk-8u192-linux-x64.tar.gz 链接: https://pan.baidu.com/s/1V3pQWzgSLJxdrUdmmKueRA 提取码: qspw 2. 查看Linux系统是否有自带的jdk&#xf…

智慧水利采砂船在线监控平台:构建高效、智能的河道采砂监管体系

随着科技的不断发展&#xff0c;水利行业的智慧化转型也日益受到重视。智慧水利采砂船在线监控平台便是这一转型的重要成果之一。该平台主要服务于水政执法人员&#xff0c;针对取得河道采砂许可证的采砂公司及采砂船&#xff0c;实施在线自动监控&#xff0c;旨在提高监管效率…

评论表设计与实现(多级评论)

首先分析评论的类型 对文章的回复&#xff08;也称根回复或一级回复&#xff09;对根评论的回复 &#xff08;二级回复&#xff0c;被回复的评论id和根评论相同&#xff09;对回复的回复&#xff08;二级回复&#xff0c;被回复的评论id和根评论不同&#xff09; 抽象出数据库…

if __name__ == ‘__main__‘: 在 Python 中的作用

Python Python 是一种广泛使用的高级编程语言&#xff0c;它以其易读性和简洁的语法而闻名。Python 支持多种编程范式&#xff0c;包括面向对象、命令式、函数式和过程式编程。它由 Guido van Rossum 创建&#xff0c;并在 1991 年首次发布。 Python 的一些关键特性包括&#…

MacOS Catalina 从源码构建Qt6.2开发库之02: 配置QtCreator

安装Qt-creator-5.0.2 在option命令中配置Qt Versions指向 /usr/local/bin/qmake6 Kits选入CLang

解决银河麒麟桌面操作系统V10SP1 SSH连接“connection reset by ip地址 port 22”问题

解决银河麒麟桌面操作系统V10SP1 SSH连接“connection reset by ip地址 port 22”问题 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 遇到SSH连接银河麒麟V10SP1时“connection reset by ip地址 port 22”的错误&#xff0c;可以尝试以下步…

GNU链接器(LD):设置入口点(ENTRY命令)的用法及实例解析

0 参考资料 GNU-LD-v2.30-中文手册.pdf GNU linker.pdf1 前言 一个完整的编译工具链应该包含以下4个部分&#xff1a; &#xff08;1&#xff09;编译器 &#xff08;2&#xff09;汇编器 &#xff08;3&#xff09;链接器 &#xff08;4&#xff09;lib库 在GNU工具链中&…

#嵌入式笔面经分享#科大讯飞公司嵌入式硬件面经(第1面)

DNS是什么 DNS&#xff08;Domain Name System&#xff09;是一种用于将域名转换为IP地址的分布式命名系统。它充当 7.12 440 一个组产出最 7.12 440 一个组产出最多的是组长&#xff0c;是管理&#xff0c;这个组不正常。​出一个小学数学应用题&#xff1a;在 OSI七层模型?…

基于二自由度汽车模型的汽车质心侧偏角估计

一、质心侧偏角介绍 在车辆坐标系中&#xff0c;质心侧偏角通常定义为质心速度方向与车辆前进方向的夹角。如下图所示&#xff0c;u为车辆前进方向&#xff0c;v为质心速度方向&#xff0c;u和v之间的夹角便是质心侧偏角。 质心侧偏角的作用有如下三点&#xff1a; 1、稳定性…

什么是反射,反射用途,spring哪些地方用到了反射,我们项目中哪些地方用到了反射

3分钟搞懂Java反射 一、反射是什么 在Java中&#xff0c;反射&#xff08;Reflection&#xff09;是一种强大的工具&#xff0c;它允许程序在运行时获取和操作类、接口、构造器、方法和字段等。反射是Java语言的一个重要特性&#xff0c;它为开发人员提供了许多灵活性&#xf…

PHP探索校园新生态校园帮小程序系统小程序源码

探索校园新生态 —— 校园帮小程序系统&#xff0c;让生活更精彩&#xff01; &#x1f331;【开篇&#xff1a;走进未来校园&#xff0c;遇见新生态】&#x1f331; 你是否厌倦了传统校园的繁琐与单调&#xff1f;是否渴望在校园里也能享受到便捷、智能的生活体验&#xff1…

APS软件:生产计划排程的秩序守护者

生产计划制定 &#xff08;1&#xff09;APS排程是一种高度精细化的生产计划制定方法&#xff0c;它精准地计算出不同产品不同工序生产任务的起始、结束时间、每段工序加工时间内的生产数量以及产品的整个生产周期&#xff0c;同时全面考量设备性能、人员配置、物料供应等关键…

全球地图——为论文增色

✨全球地图是全球研究常用的结果表现形式&#xff0c;随着学科交叉&#xff0c;很多非地学&#xff08;环境、化学、生物等&#xff09;的顶刊也会运用到全球地图&#xff0c;为结果增色不少 ✨我总结了一些顶刊 (NSP&#xff0c;NG&#xff0c;NC)最新发布的相关图表✨ 这些图…