从键盘读入由仅由英文构成的多行文本,借助于字典统计其中每个单词出现的次数。然后按字典递增序按格式输出每个单次出现的次数。 要求: 1. 所有单词不区分大小写,输出时按小写格式输出; 2. 需要排除! , : ?等英文符号,即这些符号不应作为单词的构成部分; 3. 需要排除0,1,2,... 9等数字,即这些数字不应作为单词的构成部分。
时间: 2024-02-20 09:56:59 浏览: 183
从键盘读入一段文本,统计其中的英文字母、数字、空格和除此之外的其他字符个数。[总结].pdf
下面是一个实现上述要求的Python程序:
```python
import string
# 定义一个空字典,用于存储单词出现的次数
word_count = {}
# 循环读入多行文本,直到输入空行为止
while True:
line = input().strip() # 去除输入字符串两端的空格
if not line: # 如果输入空行,跳出循环
break
# 将标点符号和数字替换为空格
line = line.translate(str.maketrans(string.punctuation + string.digits, ' ' * (len(string.punctuation) + len(string.digits))))
# 将字符串转换为小写,并按空格分割成单词列表
words = line.lower().split()
# 遍历单词列表,统计每个单词出现的次数
for word in words:
if word in word_count:
word_count[word] += 1
else:
word_count[word] = 1
# 按单词递增序输出每个单词出现的次数
for word in sorted(word_count):
print('{} {}'.format(word, word_count[word]))
```
程序中使用了Python内置的字符串模块,其中`string.punctuation`表示所有标点符号,`string.digits`表示所有数字。使用`str.translate()`方法将标点符号和数字替换为空格。
程序使用了一个while循环来读入多行文本,每次读入一行,去除首尾空格,然后将标点符号和数字替换为空格,最后将字符串转换为小写,并按空格分割成单词列表。接着遍历单词列表,统计每个单词出现的次数,并存储到一个字典`word_count`中。最后按字典递增序输出每个单词出现的次数。
示例输入:
```
This is a test!
How many words are in this text?
Let's count them!
```
示例输出:
```
a 1
are 1
count 1
how 1
in 1
is 1
let's 1
many 1
test 1
text 1
them 1
this 2
words 1
```
阅读全文