【字符串】给定一个字符串 text 和字符串列表 words,返回 words 中每个单词在 text 中的位置(要求最终的位置从小到大进行排序)

# 给定一个字符串 text 返回 words 中每个单词在 text 中的位置
#(要求最终的位置从小到大进行排序)text = input("请输入text的内容:")words = input("请输入words的内容:")words = words.split()result = []for each in words:temp = text.find(each)while temp != -1:result.append([temp,temp+len(each)-1])temp = text.find(each, temp+1)print(sorted(result))

以下是代码的详细解析————

这段代码的目的是在给定的文本 `text` 中查找一系列单词 `words` 的出现位置,并返回这些位置的列表。接下来,我将逐步分析代码的每一部分。

### 第 1 部分:输入
```python
text = input("请输入text的内容:")
words = input("请输入words的内容:")
```
- `input()` 函数用于从用户那里获取输入数据。
- `text` 是用户输入的文本字符串。
- `words` 是用户输入的单词列表,但最初它是一个由空格分隔的字符串。

### 第 2 部分:将 `words` 转换为单词列表
```python
words = words.split()
```
- `split()` 方法将 `words` 字符串按空格分割成一个列表。
- 假设用户输入的 `words` 是像 "apple banana cherry" 这样的字符串,`split()` 方法会将其转换为 `['apple', 'banana', 'cherry']` 的列表。

### 第 3 部分:初始化结果列表
```python
result = []
```
- `result` 是一个空列表,用来存储找到的每个单词的位置。

### 第 4 部分:遍历 `words` 中的每个单词
```python
for each in words:
```
- 这个 `for` 循环会遍历 `words` 列表中的每个单词。假设 `words = ['apple', 'banana', 'cherry']`,这个循环会分别处理 `'apple'`, `'banana'`, `'cherry'` 这三个单词。

### 第 5 部分:查找每个单词的位置
```python
temp = text.find(each)
```
- `text.find(each)` 用来查找 `each`(当前单词)在 `text`(文本)中第一次出现的位置。
- `find()` 方法返回单词第一次出现的起始位置,如果找不到该单词,则返回 `-1`。

### 第 6 部分:使用 `while` 循环查找所有出现位置
```python
while temp != -1:
```
- 这是一个 `while` 循环,它会在 `temp` 不等于 `-1` 时持续执行,即直到没有找到该单词为止。
- 每次找到一个单词后,`temp` 会更新为该单词下一个可能出现的位置。

### 第 7 部分:记录单词的位置
```python
result.append([temp, temp + len(each) - 1])
```
- 每次找到单词,都会将该单词的起始位置 `temp` 和结束位置 `temp + len(each) - 1`(即单词的最后一个字符的位置)作为一个列表 `([temp, temp + len(each) - 1])` 添加到 `result` 列表中。
- 比如,如果 `each` 是 `"apple"`,且 `temp` 是 5,那么 `temp + len(each) - 1` 就是 9,表示 `"apple"` 从索引 5 到 9 出现。

### 第 8 部分:更新 `temp` 查找下一个位置
```python
temp = text.find(each, temp + 1)
```
- `find(each, temp + 1)` 会继续从当前位置 `temp + 1` 开始,查找下一个 `each` 单词出现的位置。
- 如果找到了下一个位置,`temp` 会更新为新的起始位置;如果没有找到,`temp` 会变成 `-1`,`while` 循环就会终止。

### 第 9 部分:输出结果
```python
print(sorted(result))
```
- 最后,通过 `sorted(result)` 对 `result` 列表进行排序,并输出排序后的结果。
- `sorted(result)` 会返回按起始位置从小到大排列的子列表。例如,`result` 列表中的每个元素是一个 `[start, end]` 形式的子列表,`sorted(result)` 会按 `start` 位置升序排序。

### 代码中的问题:
- **缺少括号**:在 `print(sorted(result)` 中,缺少一个右括号,应为 `print(sorted(result))`。

### 总结:
1. 用户输入一个文本 `text` 和一个单词列表 `words`(多个单词通过空格分隔)。
2. 程序查找每个单词在文本中出现的位置(包括所有出现的位置)。
3. 每个单词的位置通过起始位置和结束位置表示,并存入 `result` 列表。
4. 最终输出按位置排序的结果。

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

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

相关文章

Nuget For Unity插件介绍

NuGet for Unity:提升 Unity 开发效率的利器 NuGet 是 .NET 开发生态中不可或缺的包管理工具,你可以将其理解为Unity的Assets Store或者UPM,里面有很多库可以帮助我们提高开发效率。当你想使用一个库,恰好这个库没什么依赖(比如newtonjson),那么下载包并找到Dll直接…

如何在 Ubuntu 上安装 Mattermost 团队协作工具

简介 Mattermost 是一个开源、自托管的通信平台,专为团队协作设计。它类似于 Slack,提供聊天、消息传递和集成功能。Mattermost 在重视数据隐私的组织中特别受欢迎,因为它允许团队在自己的服务器上管理通信。以下是 Mattermost 的一些关键特…

初识Linux—— 基本指令(上)

前言 Linux简述 ​ Linux是一种开源、自由、类UNIX的操作系统,由著名的芬兰程序员林纳斯托瓦兹(Linus Torvalds)于1991年首次发布。Linux的内核在GNU通用公共许可证(GPL)下发布,这意味着任何人都可以自由…

VBA技术资料MF223:从文件添加新模块

我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的工作效率,而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套,分为初级、中级、高级三大部分,教程是对VBA的系统讲解&#…

利用RAGflow和LM Studio建立食品法规问答系统

前言 食品企业在管理标准、法规,特别是食品原料、特殊食品法规时,难以通过速查法规得到准确的结果。随着AI技术的发展,互联网上出现很多AI知识库的解决方案。 经过一轮测试,找到问题抓手、打通业务底层逻辑、对齐行业颗粒度、沉…

路径规划——RRT*算法

路径规划——RRT*算法 算法原理 RRT Star 算法是一种渐近最优的路径规划算法,它是 RRT 算法的优化版本。RRT Star 算法通过不断地迭代和优化,最终可以得到一条从起点到目标点的最优路径。 在学习RRT Star 算法之前最好先学习一下RRT原始算法&#xff1…

Java——并发工具类库线程安全问题

摘要 本文探讨了Java并发工具类库中的线程安全问题,特别是ThreadLocal导致的用户信息错乱异常场景。文章通过一个Spring Boot Web应用程序示例,展示了在Tomcat线程池环境下,ThreadLocal如何因线程重用而导致异常,并讨论了其他并发…

网络编程套接字

前言: 认识了网络,我们就应该考虑一下如何编程实现不同主机上的应用进程之间如何进行双向互通的端点。 套接字(Socket)是网络编程的一种基本概念,套接字是应用程序通过网络协议进行通信的接口,是操作系统提…

计算机网络:运输层 —— TCP 的拥塞控制

文章目录 TCP的拥塞控制拥塞控制的基本方法流量控制与拥塞控制的区别拥塞控制分类闭环拥塞控制算法 TCP的四种拥塞控制方法(算法)窗口慢开始门限慢开始算法拥塞避免算法快重传算法快恢复算法 TCP拥塞控制的流程TCP拥塞控制与网际层拥塞控制的关系 TCP的拥…

vue学习第8章(vue的购物车案例)

🎉🎉🎉欢迎来到我的博客,我是一名自学了2年半前端的大一学生,熟悉的技术是JavaScript与Vue.目前正在往全栈方向前进, 如果我的博客给您带来了帮助欢迎您关注我,我将会持续不断的更新文章!!!🙏🙏🙏 文章目录…

【SpringBoot】什么是Maven,以及如何配置国内源实现自动获取jar包

前言 🌟🌟本期讲解关于Maven的了解和如何进行国内源的配置~~~ 🌈感兴趣的小伙伴看一看小编主页:GGBondlctrl-CSDN博客 🔥 你的点赞就是小编不断更新的最大动力 &#x1f3…

【Linux】:进程信号(详谈信号捕捉 OS 运行)

✨ 来去都是自由风,该相逢的人总会相逢 🌏 📃个人主页:island1314 🔥个人专栏:Linux—登神长阶 ⛺️ 欢迎关注:👍点赞…

七、利用CSS和多媒体美化页面的习题

题目一&#xff1a; 利用CSS技术&#xff0c;结合表格和列表&#xff0c;制作并美化 “ 翡翠阁 ”页面。运行效果如下 运行效果&#xff1a; 代码 <!DOCTYPE html> <html><head><meta charset"utf-8" /><title>翡翠阁</title>&…

动态规划 —— 子数组系列-等差数列划分

1. 等差数列划分 题目链接&#xff1a; 413. 等差数列划分 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/arithmetic-slices/description/ 2. 算法原理 状态表示&#xff1a;以某一个位置为结尾或者以某一个位置为起点 dp[i]表示&#xff1a;以i位置为…

vue使用List.reduce实现统计

需要对集合的某些元素的值进行计算时&#xff0c;可以在计算属性中使用forEach方法 1.语法&#xff1a;集合.reduce ( ( 定义阶段性累加后的结果 , 定义遍历的每一项 ) > 定义每一项求和逻辑执行后的返回结果 , 定义起始值 ) 2、简单使用场景&#xff1a;例如下面…

TensorFlow 2.0 windows11 GPU 训练环境配置

前言 在一切开始之前&#xff0c;请确保你的cmd命令行和powershell命令行可以正常打开。如果不能&#xff0c;建议重装系统。我不确定这是否会影响你最终的结果&#xff0c;毕竟windows的坑太多了。 安装顺序&#xff1a;visual studio -> cuda -> cudnn -> python…

MyISAM和InnoDB介绍及切换存储引擎方法

MyISAM 和 InnoDB 都是 MySQL 数据库管理系统中常用的存储引擎&#xff08;Storage Engine&#xff09;。存储引擎决定了数据库如何存储、读取、更新数据以及如何管理事务、锁定等操作。 1. MyISAM 存储引擎 MyISAM 是 MySQL 的默认存储引擎之一&#xff0c;尤其是在早期版本…

什么是嵌入式?

目录 一、什么是嵌入式 二、嵌入式系统的特点 &#xff08;一&#xff09;专用性与隐蔽性 &#xff08;二&#xff09;高可靠性与实时性 &#xff08;三&#xff09;资源固定与小型化 三、嵌入式系统的发展历史 &#xff08;一&#xff09;20 世纪 60 年代早期雏形 &am…

在几分钟内将数据从 Oracle 迁移到 ClickHouse

ClickHouse 是一个开源的面向列的数据库管理系统。它在实时数据处理方面的出色性能显着增强了数据分析和业务洞察力。将数据从 Oracle 迁移到 ClickHouse 可以释放数据在决策中的力量&#xff0c;这是单独使用 Oracle 无法实现的。 本教程介绍如何使用 BladePipe 将数据从 Orac…

Linux网络:HTTPS协议

Linux网络&#xff1a;HTTPS协议 加密方式对称加密非对称加密混合加密中间人攻击 证书数据签名CA认证 HTTPSSSL/TSLHTTPS 在HTTP协议中&#xff0c;所有的数据都采用明文的形式传输&#xff0c;这就会导致数据非常容易泄露&#xff0c;只要拿到HTTP报文&#xff0c;就可以窃取各…