Python-VBA编程500例-024(入门级)

字符串写入的行数(Line Count For String Writing)在实际应用中有着广泛的应用场景。常见的应用场景有:

1、文本编辑及处理:在编写或编辑文本文件时,如使用文本编辑器或文本处理器,经常需要处理字符串并确定其在文件中的行数。这有助于用户更好地理解和组织文本内容。

2、日志文件分析:系统或应用程序的日志文件通常包含大量的字符串信息,这些信息按行写入。分析这些日志文件的行数可以帮助识别错误、异常或性能问题,进而进行故障排除和优化。

3、代码格式化与检查:在编程领域,字符串写入的行数对于代码格式化、风格检查和版本控制等任务至关重要。通过统计行数,可以确保代码符合一定的格式规范,便于阅读和维护。

4、文档与报告生成:在生成文档或报告时,可能需要将特定的字符串信息按行写入文件。例如,生成报告摘要、数据表格或列表时,每一行可能代表一个数据点或一条记录。

5、网络通信与协议:在网络通信中,字符串信息经常以特定的格式按行发送和接收。例如,在HTTP协议中,请求和响应的头部信息通常按行分隔。处理这些字符串的行数有助于解析和处理网络数据。

6、配置文件解析:许多应用程序使用配置文件来存储设置和参数。这些配置文件通常以键值对或特定格式的行存储信息。解析这些文件的行数有助于读取和解析配置参数。

7、数据处理与统计:在处理大量数据时,字符串的行数可以作为数据量的一个指标。通过对行数进行统计和分析,可以了解数据的分布、趋势和异常情况。

总之,字符串写入的行数在多个领域中都有广泛的应用,有助于更好地处理、分析和呈现字符串信息。 

1、字符串写入的行数:
1-1、Python:
# 1.问题描述:
# 把字符串str1中的字符从左至右写入行中,每行最大宽度为100,写入操作过程中,若内容超过100的宽度,则自动转行.把字符串str1全部写完,
# 至少需要多少行?最后一行用去的宽度是多少?将结果以整数数列的形式返回.
# 2.问题示例:
# 输入 str1_width = [10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10],
# str1 = "abcdefghijklmnopqrstuvwxyz",输出[3, 60],即每个字符的宽度为10,若要将26个字符都写进去,则需两整行和一个长度为60的行.
# 3.代码实现:
class Solution:
    '''
    num_len_ofline函数:计算给定字符串str1在给定字符宽度数组str1_width下的行数和最后一行的剩余长度
    参数str1_width:一个列表,表示每个字符的打印宽度
    参数str1:待打印的字符串
    返回值:一个包含两个元素的列表,第一个元素为行数,第二个元素为最后一行的剩余长度
    '''
    def num_len_ofline(self, str1_width, str1):
        line = 1  # 当前行数
        length = 0  # 当前行的长度
        for c in str1:
            # 累加当前字符的宽度到当前行的长度
            length += str1_width[ord(c) - ord('a')]
            # 如果当前行长度超过100,则换行,并重置当前行长度为当前字符的宽度
            if length > 100:
                line += 1
                length = str1_width[ord(c) - ord('a')]
        # 如果字符串遍历完,但最后一行长度恰好为100,需要额外增加一行(因为下一行即使没有字符也需要开始新的一行)
        if length == 100:
            line += 1
        return [line, length]
# 主函数
if __name__ == '__main__':
    # 初始化字符宽度列表,这里每个字符的宽度都是10
    str1_width = [10] * 26
    # 待处理的字符串,包含所有小写英文字母
    str1 = "abcdefghijklmnopqrstuvwxyz"
    # 创建Solution类的实例
    solution = Solution()
    # 打印输入的字符宽度和字符串
    print("输入的字符宽度:", str1_width)
    print("输入的字符串:", str1)
    # 调用num_len_ofline函数并打印结果
    result = solution.num_len_ofline(str1_width, str1)
    print("输出:", result)
# 4.运行结果:
# 输入的字符宽度: [10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10]
# 输入的字符串: abcdefghijklmnopqrstuvwxyz
# 输出: [3, 60]
1-2、VBA:
Rem 自定义函数,功能:计算给定字符串str1在给定字符宽度数组str1_width下的行数和最后一行的剩余长度
Function num_len_ofline(str1_width As Variant, str1 As String) As Variant
    Dim line As Integer ' 当前行数
    Dim length As Integer ' 当前行的长度
    Dim i As Integer ' 循环计数器
    Dim c As String ' 当前字符
      
    line = 1 ' 初始化行数
    length = 0 ' 初始化当前行长度
    ' 遍历字符串中的每个字符
    For i = 1 To Len(str1)
        c = mid(str1, i, 1) ' 获取当前字符
        ' 累加当前字符的宽度到当前行的长度
        length = length + str1_width(Asc(c) - Asc("a"))
        ' 如果当前行长度超过100,则换行,并重置当前行长度为当前字符的宽度
        If length > 100 Then
            line = line + 1
            length = str1_width(Asc(c) - Asc("a"))
        End If
    Next i
    ' 如果字符串遍历完,但最后一行长度恰好为100,需要额外增加一行
    If length = 100 Then
        line = line + 1
    End If
    ' 返回一个包含两个元素的数组,第一个元素为行数,第二个元素为最后一行的剩余长度
    num_len_ofline = Array(line, length)
End Function
Rem 执行程序,功能:调用自定义函数num_len_ofline,在立即窗口中输出结果
Sub TestRun()
    Dim str1_width() As Variant ' 初始化字符宽度数组
    Dim str1 As String ' 待处理的字符串
    Dim result() As Variant ' 存储结果的数组
    Dim line As Integer ' 行数
    Dim length As Integer ' 最后一行的剩余长度
    Dim i As Integer '计数器
    
    ' 初始化字符宽度列表,这里每个字符的宽度都是10
    ReDim str1_width(25) ' 因为数组是从0开始索引的,所以大小为25(对应26个小写字母)
    For i = 0 To 25
        str1_width(i) = 10
    Next i
    ' 待处理的字符串,包含所有小写英文字母
    str1 = "abcdefghijklmnopqrstuvwxyz"
    ' 调用num_len_ofline函数
    result = num_len_ofline(str1_width, str1)
    ' 提取结果并打印
    line = result(0)
    length = result(1)
    ' 打印输入的字符宽度和字符串
    Debug.Print "输入的字符宽度:" & vbCrLf & "[" & Join(str1_width, ", ") & "]"
    Debug.Print "输入的字符串:" & vbCrLf & str1
    ' 打印结果
    Debug.Print "输出:[" & line & "," & length & "]"
End Sub
'结果输出:
'输入的字符宽度:
'[10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10]
'输入的字符串:
'abcdefghijklmnopqrstuvwxyz
'输出: [3,60]

注意:1-2中的代码需粘贴到你的VBA编辑器中,按F5执行TestRun程序,在立即窗口中输出结果。

2、相关文章:

2-1、Python-VBA编程500例-022(入门级) 

2-2、Python-VBA编程500例-023(入门级)​​​​​​​ 

Myelsa的Python算法之旅(高铁直达):Myelsa的Python算法之旅(高铁直达)-CSDN博客
欢迎访问个人主页:非风V非雨-CSDN博客
欢迎志同道合者一起交流学习,我的QQ:94509325/微信:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【数据结构 | 图论】如何用链式前向星存图(保姆级教程,详细图解+完整代码)

一、概述 链式前向星是一种用于存储图的数据结构,特别适合于存储稀疏图,它可以有效地存储图的边和节点信息,以及边的权重。 它的主要思想是将每个节点的所有出边存储在一起,通过数组的方式连接(类似静态数组实现链表…

基于Springboot+Vue的酒店管理系统!新鲜出炉,可商用,带源码

新年了给大家分享一套基于SpringbootVue的酒店管理系统源码,在实际项目中可以直接复用。(免费提供,文末自取) 一、系统运行图(管理端和用户端) 1、管理登陆 2、房间管理 3、订单管理 4、用户登陆 5、房间预定 二、系统搭建视频教…

JavaEE—— HTTP协议和与Tomcat (末篇)

本篇文章,承接前面两篇文章: 在前面的两篇文章中,简单介绍了 什么是 HTTP 协议,介绍了抓包工具,如何构造 HTTP 请求,以及,如何使用第三方工具来简化构造请求的过程。 如果需要了解前面的知识可…

算法---动态规划练习-6(地下城游戏)

地下城游戏 1. 题目解析2. 讲解算法原理3. 编写代码 1. 题目解析 题目地址:点这里 2. 讲解算法原理 首先,定义一个二维数组 dp,其中 dp[i][j] 表示从位置 (i, j) 开始到达终点时的最低健康点数。 初始化数组 dp 的边界条件: 对…

AI赋能微服务:Spring Boot与机器学习驱动的未来应用开发

🧑 作者简介:阿里巴巴嵌入式技术专家,深耕嵌入式人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟。提供嵌入式方向的学习指导、简历面…

实践笔记-harbor搭建(版本:2.9.0)

harbor搭建 1.下载安装包(版本:2.9.0)2.修改配置文件3.安装4.访问harbor5.可能用得上的命令: 环境:centos7 1.下载安装包(版本:2.9.0) 网盘资源:https://pan.baidu.com/s/1fcoJIa4x…

Vue中的一些指令与计算方法

语法 插值语法 HTML的双标签内容中使用,在{{}}之内书写JS代码 属性语法 1.v-bind或: 2.:属性名"值"或v-bind"值" 事件语法 v-on或 v-on:事件名"方法名"或事件名"方法名" 选项 选项:可选的配置项——官方…

vue3封装Element动态表单组件

1. 封装组件DymanicForm.vue 使用component实现动态组件组件不能直接使用字符串传入,所以根据传入的组件名称找到对应的组件校验规则,可使用rule传入自定义规则,也可以使用封装好的基本规则 示例中使用了checkRequired暴露重置方法和校验方法…

奥比中光Astra SDK相机SDK openni相机成像原理

目录 1.1 成像原理简介 1.1.1 结构光 1.1.2 双目视觉 1.1.3 光飞行时间TOF​ 2.使用手册 参考网址 2.1 产品集成设计 2.2 SDK介绍与使用 2.3 常用API介绍 OPENNI API 2 OpenNI类(OpenNI.h) 1.1 成像原理简介 1.1.1 结构光 结构光&#xff0…

Elastic 8.13:Elastic AI 助手中 Amazon Bedrock 的正式发布 (GA) 用于可观测性

作者:来自 Elastic Brian Bergholm 今天,我们很高兴地宣布 Elastic 8.13 的正式发布。 有什么新特性? 8.13 版本的三个最重要的组件包括 Elastic AI 助手中 Amazon Bedrock 支持的正式发布 (general availability - GA),新的向量…

小狐狸JSON-RPC:钱包连接,断开连接,监听地址改变

detect-metamask 创建连接,并监听钱包切换 一、连接钱包,切换地址(监听地址切换),断开连接 使用npm安装 metamask/detect-provider在您的项目目录中: npm i metamask/detect-providerimport detectEthereu…

【MySQL】5.2MySQL高级语句与sql语句

模板 test、class、class0 mysql> select * from test; -------------------------------- | idcard | name | age | hobbid | -------------------------------- | 01 | lizi | 18 | guangjie | | 02 | monor | 22 | zhaijia | | 03 | sansan | …

对form表单对象中数组中的字段进行校验的方法

当对form表单中&#xff0c;数组readings中的字段进行校验时&#xff0c;prop和rules绑定要写成动态的&#xff0c;如下代码 <div v-for"(item,index) in form.readings"><el-form-item label"上次读数" > <!--prop"scds"-->…

Pytorch入门实战 P4-猴痘图片,精确度提升

目录 一、前言&#xff1a; 二、前期准备&#xff1a; 1、设备查看 2、导入收集到的数据集 3、数据预处理 4、划分数据集&#xff08;8:2&#xff09; 5、加载数据集 三、搭建神经网络 四、训练模型 1、设置超参数 2、编写训练函数 3、编写测试函数 4、正式训练 …

LabVIEW智能降噪系统

LabVIEW智能降噪系统 随着噪声污染问题的日益严重&#xff0c;寻找有效的降噪技术变得尤为关键。介绍了一种基于LabVIEW平台开发的智能降噪系统&#xff0c;该系统能够实时采集环境噪声&#xff0c;并通过先进的信号处理技术实现主动降噪&#xff0c;从而有效改善生活和工作环…

kubernetes(K8S)学习(五):K8S进阶(Lifecycle......偏理论)

K8S进阶&#xff08;Lifecycle......偏理论&#xff09; 一、Pod进阶学习之路1.1 Lifecycle1.2 重启策略1.3 静态Pod1.4 健康检查1.5 ConfigMap1.6 Secret1.7 指定Pod所运行的Node 二、Controller进阶学习之路2.1 Job & CronJob2.2 StatefulSet2.3 DaemonSet2.4 Horizontal…

vue3 渲染一个后端返回的图片字段渲染、table表格内放置图片

一、后端直接返回图片url 当图片字段接口直接返回的是图片url&#xff0c;可以直接放到img标签上 <img v-if"thumbLoader" class"r-image-loader-thumb" :src"resUrl" /> 二、当图片字段接口直接返回的是图片Id 那么就需要去拼一下图片…

改Jenkins版本号

旧服务器迁移到新&#xff0c;打包版本号更新 Jenkins.instance.getItemByFullName("双机热备").updateNextBuildNumber(65)

知识蒸馏到底怎么蒸?

1知识蒸馏简介 定义&#xff1a;知识蒸馏代表将知识从大模型向小模型传输的过程。 作用&#xff1a;可以用于模型压缩和训练加速 手段。 2基于响应的知识&#xff08;Response-Based Knowledge&#xff09; 基于响应的知识一般指的是神经元的响应&#xff0c;即教师模型的最…

前端学习<二>CSS基础——09-CSS案例讲解:博雅互动

前言 CSS已经学了一些基础内容了&#xff0c;我们来讲解一个小案例吧。以博雅互动的官网首页举例。 版心 首页的版心如下&#xff1a; 这里我们要普及一个概念&#xff0c;叫“版心”。版心是页面中主要内容所在的区域。 比如说&#xff0c;网站左上角的logo&#xff0c;设计…