[英]Why is my python word counting program not working?
我正在上 python 课程,其中一个问题要求我编写一个程序来计算这样的单词:
Enter line: which witch
Enter line: is which
Enter line:
is 1
which 2
witch 1
我到目前为止的代码是:
occurences = {}
line = input('Enter line: ')
while line:
m = line.split()
for i in m:
if i in occurences:
occurences[i] += 1
else:
occurences[i] = 1
line = input('Enter line: ')
for word in sorted(occurences):
print(word, occurences[word])
但是当我运行这段代码时,它要么告诉我每个单词只出现一次,要么告诉我其他一些奇怪的输出。 谢谢您的帮助!
这是它不起作用的示例:
Enter line: test test test
Enter line: one two test
Enter line: one
Enter line:
test 3
这是我得到的输出,而预期的输出是:
test 4
two 1
one 2
您在for循环中输入的内容会引起问题,请尝试以下操作:
occurences = {}
line = input('Enter line: ')
while line:
m = line.split()
print( m)
for i in m:
if i in occurences:
occurences[i] += 1
else:
occurences[i] = 1
print(occurences)
line = input('Enter line: ')
for word in sorted(occurences):
print(word, occurences[word])
通过在for循环中重置输入,您可以在计算第一个单词之后请求新的输入,而忽略字符串中的后续单词。
你可以简单地做到这一点
m = line.split()
for i in m:
print(line.count(i), word)
当我运行代码时,我根本没有任何输出,这是因为您有一个无限循环,方法是在“ While”循环的末尾询问用户另一行,这将导致它无限期地运行。
在我稍加更改代码之前,与您的工作相匹配
occurences = {}
line = input('Enter line: ')
while line:
m = line.split()
for i in m:
if i in occurences:
occurences[i] += 1
else:
occurences[i] = 1
break ## Once the word has been put into occurences it breaks
## so that the next loop can run
for word in sorted(occurences):
print(word, occurences[word])
如果您希望它一直持续到用户退出程序,则可以执行以下操作:
while True:
occurences = {}
line = input('Enter line: ')
while line:
m = line.split()
for i in m:
if i in occurences:
occurences[i] += 1
else:
occurences[i] = 1
break
for word in sorted(occurences):
print(word, occurences[word])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.