输入一个英文句子(句子中不包含标点符号)。把每个单词切分到一个列表中,并按单词的长度降序对列表进行排序。再用排序后的列表和每个单词的长度组合成一个新的列表,新列表中的每个元素是一个元组,元组的第1元素是单词,第2元素是其长度。最后输出这个新列表。 提示:用列表推导式构建一个单词长度组成的列表。然后应用zip函数把排序后单词列表和长度列表组合。 输入:一个不带标点符号的英文句子 输出:每行一个新列表元素 输入样例: Action speak louder than words 输出样例: ('Action', 6) ('louder', 6) ('speak', 5) ('words', 5) ('than', 4),请帮我写出满分python代码答案
时间: 2024-03-20 10:38:40 浏览: 169
以下是满分Python代码:
```python
sentence = input().split()
sorted_words = sorted(sentence, key=lambda x: len(x), reverse=True)
word_lengths = [len(word) for word in sorted_words]
result = list(zip(sorted_words, word_lengths))
for element in result:
print(element)
```
相关问题
.输入一个英文句子(句子中不包含标点符号)。把每个单词切分到一个列表中,并按单词的长度降序对列表进行排序。再用排序后的列表和每个单词的长度组合成一个新的列表,新列表中的每个元素是一个元组,元组的第1元素是单词,第2元素是其长度。最后输出这个新列表。 提示:用列表推导式构建一个单词长度组成的列表。然后应用zip函数把排序后单词列表和长度列表组合。 输入:一个不带标点符号的英文句子 输出:每行一个新列表元素 输入样例: Action speak louder than words 输出样例: ('Action', 6) ('louder', 6) ('speak', 5) ('words', 5) ('than', 4)
可以使用以下代码实现:
```python
sentence = input() # 获取输入的英文句子
words = sentence.split() # 将句子按空格切分成单词列表
lengths = [len(word) for word in words] # 构建单词长度组成的列表
sorted_words = sorted(words, key=len, reverse=True) # 按单词长度降序排序
result = list(zip(sorted_words, lengths)) # 将排序后的单词列表和长度列表组合成元组列表
for item in result:
print(item) # 输出每个元组
```
这里首先使用 `split()` 方法将输入的句子按空格切分成单词列表。然后使用列表推导式构建一个单词长度组成的列表,即 `lengths`。接着使用 `sorted()` 函数按单词长度降序对单词列表进行排序,并将结果存储在 `sorted_words` 中。最后使用 `zip()` 函数将排序后的单词列表和长度列表组合成元组列表,存储在 `result` 中,并逐行输出。
给定一个由英文字符、数字、空格和英文标点符号组成的字符串,长度不超过2000,请将其切分为单词,要求去掉所有的非英文字母,每行输出一个单词
好的,您的第一个问题是如何将一个字符串切分为单词,要求只保留英文字母?
可以使用正则表达式来匹配英文单词,并且去除非英文字母。以下是一种实现方式:
```
import re
def split_words(s):
# 编译匹配英文单词的正则表达式
pattern = re.compile(r'[a-zA-Z]+')
# 查找所有匹配的单词并去除非英文字母
words = [match.group() for match in pattern.finditer(s) if match.group().isalpha()]
return words
# 测试
s = "Hello, world! This is a test string. 123"
words = split_words(s)
for word in words:
print(word)
```
输出结果:
```
Hello
world
This
is
a
test
string
```
阅读全文