求助
# -*- coding: utf-8 -*-'''
请只在 "
########## 下面可以改动
########## 上面可以改动 "
中间部分作答,作答行数自由调整
题目:定义一个函数,实现输入一句话,单词之间使用空格隔开,统计出其中各单词的词频数,
并以keyword:count的格式存在一个dict中,返回这个dict。
注意 jkl; 不是一个单词,jkl 是一个单词,要把“; + ”等非字符符号去掉
即输入:“abc fjf jkl+ abc abc jkl;” 结果是 {"abc":3,"fjf":1,"jkl":2}
'''
def TEST_DO_NOT_CHANGE(str_line):
word_dict = {}
########## 开始作答
str_line.strip(";")
str_line.strip("+")
str_line.join(" ")
str_line
words=str_line.split()
for word in words:
if word in word_dict:
word_dict+=1
else:
word_dict=1
########## 结束作答
return word_dict
if __name__ == "__main__":
str_line = "abc fjf jkl+ abc abc jkl;"
print(TEST_DO_NOT_CHANGE(str_line))
请问问题出在哪里了 如何用简单代码修改完成 问题出在您在处理字符串时没有正确地去除非字符符号。请参考以下修改后的代码:
def TEST_DO_NOT_CHANGE(str_line):
word_dict = {}
########## 开始作答
# 使用replace替换非字符符号为空字符
str_line = str_line.replace(";", "").replace("+", "")
words = str_line.split()
for word in words:
if word in word_dict:
word_dict += 1
else:
word_dict = 1
########## 结束作答
return word_dict
if __name__ == "__main__":
str_line = "abc fjf jkl+ abc abc jkl;"
print(TEST_DO_NOT_CHANGE(str_line))
这里使用了 replace 方法替换输入字符串中的非字符符号。这样处理后的字符串可以正确地统计各单词的词频数。 这段代码中存在几个问题:
1. `str_line.strip(";")` 和 `str_line.strip("+")` 不会修改原字符串,需要将修改后的结果赋值给一个变量。
2. `str_line.join(" ")` 的参数是应该是一个列表而不是一个字符串,可以使用 `split()` 将字符串转换成列表再进行操作。
3. 修改字符串没有实际效果,需要将修改后的字符串赋值给 `str_line`。
以下是修改后的代码:
def TEST_DO_NOT_CHANGE(str_line):
word_dict = {}
# 去除非字符符号并将单词之间用空格隔开
str_line = str_line.replace("+", " ").replace(";", " ")
# 统计每个单词出现的次数
words = str_line.split()
for word in words:
if word in word_dict:
word_dict += 1
else:
word_dict = 1
return word_dict
if __name__ == "__main__":
str_line = "abc fjf jkl+ abc abc jkl;"
print(TEST_DO_NOT_CHANGE(str_line))# 输出 {"abc": 3, "fjf": 1, "jkl": 2}
修改后的代码使用了 `replace()` 替换非字符符号,使用了 `split()` 转换成列表,并且将修改后的字符串赋值给了 `str_line`。
有用请设置最佳答案
页:
[1]