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

python 复制代码
# 给定一个字符串 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. 最终输出按位置排序的结果。

相关推荐
9***P33431 分钟前
PHP代码覆盖率
开发语言·php·代码覆盖率
daidaidaiyu35 分钟前
一文入门 LangGraph 开发
python·ai
CoderYanger37 分钟前
优选算法-栈:67.基本计算器Ⅱ
java·开发语言·算法·leetcode·职场和发展·1024程序员节
jllllyuz1 小时前
Matlab实现基于Matrix Pencil算法实现声源信号角度和时间估计
开发语言·算法·matlab
多多*1 小时前
Java复习 操作系统原理 计算机网络相关 2025年11月23日
java·开发语言·网络·算法·spring·microsoft·maven
p***43481 小时前
Rust网络编程模型
开发语言·网络·rust
ᐇ9592 小时前
Java集合框架深度实战:构建智能教育管理与娱乐系统
java·开发语言·娱乐
不知更鸟2 小时前
前端报错:快速解决Django接口404问题
前端·python·django
4***72132 小时前
【玩转全栈】----Django模板语法、请求与响应
数据库·python·django
梁正雄2 小时前
1、python基础语法
开发语言·python