.输入一个英文句子(句子中不包含标点符号)。把每个单词切分到一个列表中,并按单词的长度降序对列表进行排序。再用排序后的列表和每个单词的长度组合成一个新的列表,新列表中的每个元素是一个元组,元组的第1元素是单词,第2元素是其长度。最后输出这个新列表。 提示:用列表推导式构建一个单词长度组成的列表。然后应用zip函数把排序后单词列表和长度列表组合。 输入:一个不带标点符号的英文句子 输出:每行一个新列表元素 输入样例: Action speak louder than words 输出样例: ('Action', 6) ('louder', 6) ('speak', 5) ('words', 5) ('than', 4)
时间: 2023-12-03 22:47:10 浏览: 216
可以使用以下代码实现:
```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` 中,并逐行输出。
相关问题
字符串切分连接:输入一个包含多个单词的英文句子,单词间以空格分隔,标点符号后跟一个空格。定义一个函数,功能是用指定的符号把单词连接起来。
好的,我理解了你的问题,可以给你一个 Python 实现的例子:
```python
def join_words(sentence, symbol):
words = sentence.split()
for i in range(len(words)):
# 去除标点符号
words[i] = words[i].strip('.,!?')
return symbol.join(words)
```
这个函数接收两个参数,第一个是输入的句子,第二个是指定的符号。它首先将句子按照空格切分成单词,然后对每个单词去除标点符号,最后使用指定的符号将单词连接起来。你可以这样调用这个函数:
```python
sentence = "This is a test sentence, with some punctuation."
symbol = "-"
result = join_words(sentence, symbol)
print(result)
```
输出结果为:
```
This-is-a-test-sentence-with-some-punctuation
```
注意,这个例子中使用了 Python 内置的字符串方法 `split` 和 `join`,以及字符串的 `strip` 方法来去除标点符号。如果你使用其他编程语言,需要使用相应的方法来实现这些功能。
打出一个统计英文句子中单词个数的代码,句子中包括各种标点符号。
好的,请稍等,我为您打出Python代码:
```python
import string
def count_words(sentence):
# 去掉标点符号
sentence = sentence.translate(str.maketrans('', '', string.punctuation))
# 切分单词,并计算个数
words = sentence.strip().split()
return len(words)
# 测试
sentence = "Hello, world! This is a test sentence. Can you count the words?"
print(count_words(sentence)) # 输出 11
```
这段代码可以统计英文句子中单词的个数,包括标点符号在内。注释已经说明了每一步的操作。您可以直接复制到Python环境中运行测试。
阅读全文