繁体   English   中英

为什么我的 python 字数统计程序不起作用?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM