案例2:东方财富股吧文本分析----code模块封装命令行运行版

news2024/11/15 10:41:12

案例2:东方财富股吧文本分析----code模块封装命令行运行版

  • 0. 先导语
  • 1.东方财富股吧文本信息爬取
    • 1.1 模块getGuBaNews.py的内容
    • 1.2 东方财富股吧文本信息爬取主运行文件run_main_getnews.py内容
    • 1.3 命令行运行
  • 2.东方财富股吧文本信息分析
    • 2.1 模块gubaNewsAnalyse.py的内容
    • 2.2 东方财富股吧文本信息分析主运行文件run_main_gubaNews.py内容
    • 2.3 命令行运行

0. 先导语

Python代码模块化是指将大型的代码分割成小的、可重用的代码块,这些代码块被称为模块。模块可以通过import语句导入到其他代码中,从而提供了一种有效的组织和重用代码的方法。Python代码模块化有以下几个好处:

  • 1. 提高代码的可读性和可维护性:模块化将代码分解为更小、更容易理解的组件,可以更容易地理解每个模块所做的工作,使得代码更加清晰易懂,提高代码的可读性。可以更容易地找到和修复问题。有助于代码的可维护性。

  • 2. 降低代码的复杂度:模块化使得代码更加模块化、组合和重用,从而降低了代码的复杂度,避免了代码过于臃肿和混乱。可以更容易地管理代码,并且可以更容易地添加、修改或删除功能。

  • 3. 加快开发效率:模块化使得代码可以被多个人共同开发和维护,从而加快了开发效率。

  • 4. 提高代码的可重用性:模块化使得代码可以被多个程序和项目共同使用,如果需要多次使用相同的代码,只需要将代码保存在一个模块中,然后在需要的地方导入即可。从而提高了代码的可重用性,减少了重复开发的工作。

  • 5. 便于测试和调试:模块化将代码分解为更小的组件,可以更容易地编写单元测试,使得测试和调试变得更加容易,以确保每个模块都按照预期工作。从而提高了程序的稳定性和可靠性。

总的来说,代码模块化是一个非常重要的编程技巧,能够使得代码更加清晰易懂、可维护性更高、开发效率更高、可重用性更高,也更容易测试和调试。

1.东方财富股吧文本信息爬取

1.1 模块getGuBaNews.py的内容

getGuBaNews.py下载地址

import requests
from bs4 import BeautifulSoup
import pandas as pd
import time

headers={
    "User-Agent":"你自己的User-Agent",
    "Cookie":"你自己的Cookie"
    }

# 获取单页股吧新闻
def get_guba_news_onePage(url):
    response=requests.get(url=url,headers=headers)
    html_content = response.text
    soup = BeautifulSoup(html_content, "html.parser")
    guba_news = soup.find('div', {'id': 'articlelistnew'})
    read_num = []
    for read in guba_news.find_all('span', {'class': 'l1 a1'})[1:]:
        if '万' in read.text:
            read_num.append(int(float(read.text.replace('万', '')) * 10000))
        else:
             read_num.append(int(read.text))
    comment_num = []
    for comment in guba_news.find_all('span', {'class': 'l2 a2'})[1:]:
        if '万' in comment.text:
            comment_num.append(int(float(comment.text.replace('万', '')) * 10000))
        else:
             comment_num.append(int(comment.text))
    title_content = list(map(lambda x:x.text,guba_news.find_all('span', {'class': 'l3 a3'})[1:]))
    author_name = list(map(lambda x:x.text,guba_news.find_all('span', {'class': 'l4 a4'})[1:]))
    update_time = list(map(lambda x:'2023-'+x.text,guba_news.find_all('span', {'class': 'l5 a5'})[1:]))
    guba_news = pd.DataFrame({
        'read_num': read_num,
        'comment_num': comment_num,
        'title_content':title_content,
        'author_name':author_name,
        'update_time':update_time 
    })
    return guba_news

def get_guba_news_batch(stockID,start_page,end_page):
    save_file = './data/guba_news_'+stockID+f'_pages{start_page}-{end_page}'+'.csv'
    for page_num in range(start_page,end_page+1):
        time.sleep(1)
        url = "https://guba.eastmoney.com/list,{}_{}.html".format(stockID,page_num)
        if page_num==start_page:
            guba_news = get_guba_news_onePage(url)
            guba_news.to_csv(save_file, index=False)
            print(f'第{page_num}页数据已保存。')
        else:
            guba_news = pd.concat([pd.read_csv(save_file), get_guba_news_onePage(url)], axis=0)
            guba_news.to_csv(save_file, index=False)
            print(f'第{page_num}页数据已保存。')

1.2 东方财富股吧文本信息爬取主运行文件run_main_getnews.py内容

run_main_getnews.py下载地址

import getGuBaNews
import warnings
warnings.filterwarnings('ignore')
import sys

stockID = sys.argv[1]
start_page = int(sys.argv[2])
end_page = int(sys.argv[3])
getGuBaNews.get_guba_news_batch(stockID,start_page,end_page)

1.3 命令行运行

在这里插入图片描述
在文件getGuBaNews.py和run_main_getnews.py的同级目录下shift_右键打开PowerShell 窗口,然后输入下面的命令运行:

python run_main_getnews.py 601318 1 30

601318 1 30分别表示run_main_getnews.py中需要输入的三个参数:

  • stockID = sys.argv[1]
  • start_page = int(sys.argv[2])
  • end_page = int(sys.argv[3])

多个参数之间用空格分开

2.东方财富股吧文本信息分析

2.1 模块gubaNewsAnalyse.py的内容

gubaNewsAnalyse.py下载地址

import pandas as pd
import re
import matplotlib.pyplot as plt
import seaborn as sns
import jieba
from wordcloud import WordCloud
from snownlp import SnowNLP, sentiment#情感分析库
import networkx as nx
#中文字符设定
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

def loadData(file):
    guba_news = pd.read_csv(file)
    guba_news['update_time'] = pd.to_datetime(guba_news['update_time'], format='%Y-%m-%d %H:%M:%S')
    return guba_news

def hotTopicAnalyse(df,top_num=10):
    # 按照阅读数排序
    guba_news = df.sort_values(by='read_num', ascending=False)

    # 获取前20条数据
    top = guba_news.head(top_num)
    print('热门话题排行榜:')
    print(top)

    # 绘制阅读数和评论数的关系图
    plt.figure(figsize=(8, 6))
    sns.scatterplot(x=guba_news['read_num'], y=guba_news['comment_num'])
    plt.title('阅读数与评论数的关系')
    plt.xlabel('阅读数')
    plt.ylabel('评论数')
    plt.show()

    # 分词
    text = ' '.join(guba_news['title_content'].tolist())
    words = list(jieba.cut(text))

    # 去除停用词
    stopwords = [' ','[',']',',', '。', '!', '?', '的', '了', '在', '是', '我', '你', '他', '她', '它', '我们', '你们', '他们', '她们', '它们','今天','明天','中国','平安','都','资讯','2023']
#     stopwords = pd.read_csv("data/stopwords.txt",index_col=False,quoting=3,sep="\t",names=['stopword'],encoding='utf-8')  #quoting=3全部引用
    words = [w for w in words if w not in stopwords and len(w)>=2]
    word_count = {}
    for word in words:
        if word in word_count:
            word = re.escape(word)
            word_count[word] += guba_news[guba_news['title_content'].str.contains(word)]['read_num'].sum()
        else:
            word = re.escape(word)
            word_count[word] = guba_news[guba_news['title_content'].str.contains(word)]['read_num'].sum()

    # 绘制主题词词云图
    wordcloud = WordCloud(width=800,height=600,background_color="white",font_path="msyh.ttc")
    wordcloud.generate_from_frequencies(word_count)
    plt.imshow(wordcloud, interpolation="bilinear")
    plt.axis("off")
    plt.show()
    return word_count


def investSentimentAnalyse(df, sentiment_thres=0.5):
    titles = df['title_content'].tolist()
    sentiments = []
    for title in titles:
        s = SnowNLP(title)
        sentiments.append(s.sentiments)

    # 统计情感分布
    positive_num = len(
        [sentiment for sentiment in sentiments if sentiment > sentiment_thres])
    negative_num = len(
        [sentiment for sentiment in sentiments if sentiment < sentiment_thres])
    neutral_num = len([
        sentiment for sentiment in sentiments if sentiment == sentiment_thres
    ])

    # 输出结果
    print(f'积极评论数:{positive_num},占比:{positive_num/len(sentiments):.2%}')
    print(f'消极评论数:{negative_num},占比:{negative_num/len(sentiments):.2%}')
    print(f'中性评论数:{neutral_num},占比:{neutral_num/len(sentiments):.2%}')


def postTimeAnalyse(df):
    # 统计每个小时的帖子数量
    post_count_by_hour = df.groupby(df['update_time'].dt.hour)['title_content'].count()

    # 统计每个小时的评论数量
    comment_count_by_hour = df.groupby(df['update_time'].dt.hour)['comment_num'].sum()

    # 统计每天的帖子数量
    post_count_by_day = df.groupby(df['update_time'].dt.date)['title_content'].count()

    # 统计每天的评论数量
    comment_count_by_day = df.groupby(df['update_time'].dt.date)['comment_num'].sum()

    # 可视化绘制图表
    fig, ax = plt.subplots(2, 2, figsize=(10, 6))
    post_count_by_hour.plot(ax=ax[0, 0], title='帖子数量按小时统计')
    comment_count_by_hour.plot(ax=ax[0, 1], title='评论数量按小时统计')
    post_count_by_day.plot(ax=ax[1, 0], title='帖子数量按天统计')
    comment_count_by_day.plot(ax=ax[1, 1], title='评论数量按天统计')
    plt.tight_layout()
    plt.show()
    
def topicRelationAnalyse(df,top_num=10):
    # 将主题进行分词
    df['seg_title'] = df['title_content'].apply(lambda x: ' '.join(jieba.cut(x)))

    text = ' '.join(df['title_content'].tolist())
    words = list(jieba.cut(text))
    # 去除停用词
    stopwords = [' ','[',']',',', '。', '!', '?', '的', '了', '在', '是', '我', '你', '他', '她', '它', '我们', '你们', '他们', '她们', '它们','今天','明天','中国','平安','都','资讯','2023']
    words = [w for w in words if w not in stopwords and len(w)>=2]

    word_count={}
    for word in words:
        if word in word_count:
            word_count[word]+= df[df['title_content'].str.contains(word)]['read_num'].sum()
        else:
            word_count[word] = df[df['title_content'].str.contains(word)]['read_num'].sum()
        
    # 取出出现次数最多的前top_num个词汇
    sorted_word_count = sorted(word_count.items(), key=lambda x: x[1], reverse=True)
    top_words = [x[0] for x in sorted_word_count[:top_num]]
    print(f"出现次数最多的前{top_num}个词汇:")
    print(top_words)
    df['seg_title'] = df['title_content'].apply(lambda x: ' '.join(jieba.cut(x)))


    # 构建图
    G = nx.Graph()
    for text in df['seg_title']:
        words = set(text.split())
        for word1 in words:
            if word1 in top_words:
                for word2 in words:
                    if word1 != word2 and word2 in top_words:
                        if G.has_edge(word1, word2):
                            G[word1][word2]['weight'] += 1
                        else:
                            G.add_edge(word1, word2, weight=1)

    # 绘制图
    plt.figure(figsize=(10, 10))
    pos = nx.spring_layout(G, k=0.5)
    nx.draw_networkx_nodes(G, pos, node_size=2000, node_color='lightblue')
    nx.draw_networkx_edges(G, pos, width=[G[u][v]['weight']*0.1 for u, v in G.edges()])
    nx.draw_networkx_labels(G, pos, font_size=20, font_family='Microsoft YaHei')
    plt.axis('off')
    plt.show()
def userActionAnalyse(df,top_post_user_Num=10):
    
    # 统计每个作者的发帖数量、阅读数和评论数量
    author_post_count = df.groupby('author_name')['title_content'].count()
    read_count = df.groupby('author_name')['read_num'].sum()
    comment_count = df.groupby('author_name')['comment_num'].sum()

    # 合并数据
    df1 = pd.concat([author_post_count,read_count,comment_count], axis=1)
    df1.columns = ['发帖数', '阅读数','评论数']
    # 根据发帖数进行排序
    df1 = df1.sort_values(by='发帖数', ascending=False)
    df_topUser = df1[1:1+top_post_user_Num]

    # 分析每个作者的平均发帖和评论时间间隔

    filtered_author_df = df[df['author_name'].isin(list(df_topUser.index))]
    df_sorted = filtered_author_df.sort_values(['author_name', 'update_time'])
    df_sorted['time_interval'] = df_sorted.groupby('author_name')['update_time'].diff().dt.total_seconds()

    # 可视化作者发帖数量和评论数量
    fig, ax = plt.subplots(2, 2, figsize=(10, 10))

    df_topUser['发帖数'].plot(kind='bar', ax=ax[0, 0])
    ax[0, 0].set_title('作者发帖数')
    ax[0, 0].set_xlabel('作者')
    ax[0, 0].set_ylabel('发帖数')

    df_topUser['阅读数'].plot(kind='bar', ax=ax[0, 1])
    ax[0, 1].set_title('作者帖子阅读数')
    ax[0, 1].set_xlabel('作者')
    ax[0, 1].set_ylabel('阅读数')

    df_topUser['评论数'].plot(kind='bar', ax=ax[1, 0])
    ax[1, 0].set_title('作者帖子评论数')
    ax[1, 0].set_xlabel('作者')
    ax[1, 0].set_ylabel('评论数')

    # 可视化每个作者的平均发帖和评论时间间隔
    author_mean_time_interval = df_sorted.groupby('author_name')['time_interval'].mean().dropna()
    author_mean_time_interval.plot(kind='bar', ax=ax[1, 1])
    ax[1, 1].set_title('作者发帖的平均时间间隔')
    ax[1, 1].set_xlabel('作者')
    ax[1, 1].set_ylabel('时间间隔 (秒)')

    plt.tight_layout()
    plt.show()
    return df1

2.2 东方财富股吧文本信息分析主运行文件run_main_gubaNews.py内容

run_main_gubaNews.py下载地址

import warnings
warnings.filterwarnings('ignore')
import sys
import gubaNewsAnalyse as gna
file = sys.argv[1]
what_analyse = sys.argv[2]

df = gna.loadData(file)
what_analyse = what_analyse.split('#')

if '1' in what_analyse:
    print('正在进行热门话题分析>>>>>>>>>>>>>>>>>>')
    gna.hotTopicAnalyse(df)
if '2' in what_analyse:
    print('正在进行投资情绪分析>>>>>>>>>>>>>>>>>>')
    gna.investSentimentAnalyse(df)
if '3' in what_analyse:
    print('正在进行发帖时间分析>>>>>>>>>>>>>>>>>>')
    gna.postTimeAnalyse(df)
if '4' in what_analyse:
    print('正在进行热门主题关联分析>>>>>>>>>>>>>>>>>>')
    gna.topicRelationAnalyse(df)   
if '5' in what_analyse:
    print('正在进行用户行为分析>>>>>>>>>>>>>>>>>>')
    gna.userActionAnalyse(df)
    
print('已完成所有分析!')

2.3 命令行运行

在这里插入图片描述
多个参数之间用空格分开

在文件gubaNewsAnalyse.py和run_main_gubaNews.py的同级目录下shift+右键打开PowerShell 窗口,然后输入下面的命令运行:

python run_main_gubaNews.py './data/guba_news_601318_pages1-30.csv' 1#3

‘./data/guba_news_601318_pages1-30.csv’ 1#3分别表示run_main_gubaNews.py中需要输入的两个参数:

  • file = sys.argv[1] #数据文件路径及文件名
  • what_analyse = sys.argv[2] #需要执行的一种或多种文本分析

若仅执行其中一种文本分析(如2:投资情绪分析)则直接:

python run_main_gubaNews.py './data/guba_news_601318_pages1-30.csv' 2

若执行其中某几种文本分析(如2:投资情绪分析,3:发帖时间分析,5:用户行为分析)则用#连接各文本分析对应的数字代码即可:

python run_main_gubaNews.py './data/guba_news_601318_pages1-30.csv' 2#3#5

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

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

相关文章

『python爬虫』11. xpath解析实战之获取csdn文章信息(保姆级图文)

目录 网页结构分析爬取思路得到所有的文章遍历每个文章得到其中的信息 实现代码总结 欢迎关注 『python爬虫』 专栏&#xff0c;持续更新中 欢迎关注 『python爬虫』 专栏&#xff0c;持续更新中 网页结构分析 我的csdn主页 https://blog.csdn.net/u011027547我们先找一篇文章…

AI 工具合辑盘点(八)持续更新 之 AI 面部生成工具和AI 角色生成工具

&#xff08;一&#xff09;AI 面部生成工具 需要一张真实人物的肖像画来用于你的营销材料&#xff1f;正在寻找具有特定面部特征的模特&#xff0c;但你的预算有限&#xff1f;正在创建你的买家人物&#xff0c;但不想从互联网上窃取图片&#xff1f; 如果是这样&#xff0c…

pytorch——损失函数之nn.L1Loss()和nn.SmoothL1Loss()

文章目录 【回归损失函数】L1&#xff08;MAE&#xff09;、L2&#xff08;MSE&#xff09;、Smooth L1 Loss详解1. L1 Loss&#xff08;Mean Absolute Error&#xff0c;MAE&#xff09;1.1 数学定义1.2 、使用场景与问题1.3 、如何使用 2. L2 Loss&#xff08;Mean Squared E…

[项目实战] 博客系统实现

水到渠成,冲呀冲呀 文章目录 1 准备工作1.1 在Idea创建一个Maven项目1.2 引入servlet,masql,jackson依赖1.3 准备web.xml文件 2. 数据库建表3. 封装DBUtil4. 创建实体类4.1 Blog类4.2 User类 5. 封装数据库的增删改查5.1 对于blog的操作5.1.1 增加操作5.1.2 根据blogId查询5.1 …

Notepad++配置C语言环境和C++环境

背景&#xff1a; Notepad是我们经常使用的编辑器&#xff0c;我们可以用它编译和运行各种类型的文档&#xff0c;其中就包括了C和C文档。但是编译和运行C或者C文档首先要配置编译环境&#xff0c;下面给大家分享一下如何在NotePad配置C/C编译环境。 工具&#xff1a; NoteP…

在全志V851S开发板上进行屏幕触摸适配

1.修改屏幕驱动 从ft6236 &#xff08;删掉&#xff0c;不要保留&#xff09;&#xff0c;改为下面的 路径&#xff1a;/home/wells/tina-v853-open/tina-v853-open/device/config/chips/v851s/configs/lizard/board.dts&#xff08;注意路径&#xff0c;要设置为自己的实际路…

docker-compose部署flume

一、docker-compose部署 1. 依赖的服务/组件 java8flume 1.9.0 2. 下载离线安装包 jdk8https://repo.huaweicloud.com/java/jdk/8u202-b08/jdk-8u202-linux-x64.tar.gzflume 1.9.0https://mirrors.tuna.tsinghua.edu.cn/apache/flume/1.9.0/apache-flume-1.9.0-bin.tar.gzs…

【Python入门篇】——Python基础语法(标识符与运算符)

作者简介&#xff1a; 辭七七&#xff0c;目前大一&#xff0c;正在学习C/C&#xff0c;Java&#xff0c;Python等 作者主页&#xff1a; 七七的个人主页 文章收录专栏&#xff1a; Python入门&#xff0c;本专栏主要内容为Python的基础语法&#xff0c;Python中的选择循环语句…

鸿蒙Hi3861学习六-Huawei LiteOS(软件定时器)

一、简介 软件定时器&#xff0c;是基于系统Tick时钟中断且由软件来模拟的定时器。当经过设定的Tick时钟计数值后&#xff0c;会触发用户定义的回调函数。定时精度与系统Tick时钟周期有关。 硬件定时器受硬件的限制&#xff0c;数量上不足以满足用户的实际需求。因此&#xff0…

【算法】什么是离散化

作者&#xff1a;指针不指南吗 专栏&#xff1a;算法篇 &#x1f43e;人类做题的过程&#xff0c;就是个暴搜的过程&#x1f43e; 文章目录 1.引入2.思路3.模板题 1.引入 特指有序、整数的离散化。 离散化&#xff0c;本质上是一种哈希&#xff0c;它在保持原序列大小关系的前…

肝一肝设计模式【六】-- 装饰器模式

系列文章目录 肝一肝设计模式【一】-- 单例模式 传送门 肝一肝设计模式【二】-- 工厂模式 传送门 肝一肝设计模式【三】-- 原型模式 传送门 肝一肝设计模式【四】-- 建造者模式 传送门 肝一肝设计模式【五】-- 适配器模式 传送门 文章目录 系列文章目录前言一、什么是装饰器模…

PLSQL Developer远程连接Oracle报错提示:“ORA-12541:TNS:无监听程序”的解决方案及思路

环境&#xff1a; 1、Windows Server 2、远程Oracle数据库&#xff1a;Oracle11g R2 3、PL/SQL程序&#xff1a;PL/SQL Developer Version 11.0.5.1790 (64 bit) 一、思路拆解&#xff1a; 此现象一般定位到远端的监听服务来找问题&#xff0c;在远端查看监听服务状态&#x…

DolphinScheduler 3.1.4详细教程

文章目录 第一章 DolphinScheduler介绍1.1 关于DolphinScheduler1.2 特性1.3 名词解释1.3.1 名词解释1.3.2 模块介绍 第二章 DolphinScheduler系统架构2.1 系统架构图2.2 架构说明该服务包含&#xff1a; 2.3 启动流程活动图2.4 架构设计思想2.4.1 去中心化vs中心化2.4.1.1 中心…

制作帮助中心过程中常见的误区与解决方法?

制作帮助中心是为了帮助用户了解产品和解决问题的重要手段。然而&#xff0c;在制作的过程中&#xff0c;我们可能会遇到一些误区&#xff0c;这些误区可能会导致我们的帮助中心无法达到预期的效果。因此&#xff0c;在本文中&#xff0c;我们将探讨制作帮助中心过程中常见的误…

今年产品经理这么卷,大家怎么面试的呢?

随着互联网行业的快速发展&#xff0c;产品经理这个职位变得越来越重要。产品经理需要具备多方面的能力&#xff0c;如市场调研、用户需求分析、产品设计、项目管理等等。因此&#xff0c;对于企业来说&#xff0c;招聘一名合适的产品经理是非常关键的。 而对于求职者来说&…

中国奇人周兴和——记四川星河建材有限公司董事长周兴和(中)

经商送礼 关押收审 从10多岁就开始闯荡社会的周兴和&#xff0c;可以说是社会大熔炉锻炼出来的奇人。他仅有小学文化程度&#xff0c;但是他的社会经验和社会知识却相当丰富&#xff0c;可以称得上是一个“社会学专家”。他口才超常&#xff0c;其处事能力、应变能力和综合能力…

ASEMI代理ADUM1250ARZ-RL7原装ADI车规级ADUM1250ARZ-RL7

编辑&#xff1a;ll ASEMI代理ADUM1250ARZ-RL7原装ADI车规级ADUM1250ARZ-RL7 型号&#xff1a;ADUM1250ARZ-RL7 品牌&#xff1a;ADI/亚德诺 封装&#xff1a;SOIC-8-150mil 批号&#xff1a;2023 引脚数量&#xff1a;8 工作温度&#xff1a;-40C~105C 安装类型&#…

4.7亿加元!爱立信和加拿大政府巨额投资量子计算

​ &#xff08;图片来源&#xff1a;网络&#xff09; 爱立信与加拿大政府的研发合作为期五年&#xff0c;项目价值超过4.7亿加元&#xff08;约合23.9亿元人民币&#xff09;&#xff0c;主要投入在爱立信位于安大略省渥太华和魁北克省蒙特利尔的工厂。预计将创造数百个工作…

三十岁成功入职京东啦!

我是小九小九不爱喝酒&#xff1a; 自己工作5年后&#xff0c;我成功拿到了京东的offer。下面说下我是如何从传统行业到京东的经历&#xff0c;希望能对你有所帮助。 本科我学的是机械电子工程专业&#xff0c;2013年本科毕业后&#xff0c;同学们大多到各研究所从事智能机器人…

真题详解(归纳法)-软件设计(六十七)

真题详解(关系模型)-软件设计&#xff08;六十六)https://blog.csdn.net/ke1ying/article/details/130495791 1、2018上半年 将小阶向大阶对奇&#xff0c;尾数右移动 解析&#xff1a; 0.23 * 10的2次方 0.22 *10的3次方 第一步&#xff1a;0.023*10的3次方&#xff0c;…