**已关闭。**此问题为not reproducible or was caused by typos。当前不接受答案。
这个问题是由一个错字或一个无法再复制的问题引起的。虽然类似的问题可能是on-topic在这里,但这个问题的解决方式不太可能帮助未来的读者。
8天前关闭
Improve this question
写一个程序,读取一个单词列表,然后,程序输出这些单词及其频率(不区分大小写)。
例如:如果输入为:
hey Hi Mark hi mark
输出为:
hey 1
Hi 2
Mark 2
hi 2
mark 2
提示:Use lower()
在比较之前将每个单词设置为小写。
freq_dict = {}
words = input().split()
for word in words:
low = word.lower()
if low in freq_dict:
freq_dict[low] += 1
else:
freq_dict[low] = 1
print(word, freq_dict[low])
输出为:
hey 1
Hi 1
Mark 1
hi 2
mark 2
我不知道我做错了什么。我非常接近实际输出。我已经反复思考了几个小时,请帮助。
3条答案
按热度按时间h79rfbju1#
我认为你的问题是,
print()
语句需要在一个单独的循环中,否则它会在程序完成计数之前打印一些东西。要解决这个问题,你可以这样做:输入:
输出:
但是,像这样使用内置的
Counter
可能更容易:上面的代码也给出了相同的输出:
输入:
输出:
编辑:
正如@Yash Mehta所指出的,使用
.get()
而不是if/else
语句“更好”:.get()
,获取键low
下的值,或者如果找不到它(即这是第一次迭代该单词),则返回0,并像正常一样添加1。sr4lhrrt2#
根据给定的例子,你应该首先计算这个词在文本中出现的次数,然后在第二个循环中打印结果。类似于这样:
3pmvbmvn3#
Python还有一个内置函数
Counter
,可以用来***计算单词的频率***。验证码:
此外,您正在创建 dictionary,您应该使用
.get()
方法,而不是应用if else
。编码:[按字典查找]
输出:[两个代码]