Python:如何创建一个要求确切数量的单词的函数?

时间:2012-02-23 04:04:01

标签: python python-2.7 word-count

这是我到目前为止所拥有的:

import string

所以我让用户写了一个5个措辞,只要求5个字:

def main(sentence = raw_input("Enter a 5 worded sentence: ")):
    if len(words)<5:
        words = string.split(sentence)
        wordCount = len(words)
        print "The total word count is:", wordCount

如果用户输入的字数超过5个字:

    elif len(words)>5:
        print 'Try again. Word exceeded 5 word limit'

少于5个字:

    else:
        print 'Try again. Too little words!'

它一直说明:

UnboundLocalError: local variable 'words' referenced before assignment

4 个答案:

答案 0 :(得分:2)

您的问题是您在变量len(words)存在之前呼叫words。这是在第二个代码块的第二行。

words = []
while len(words) != 5:
  words = raw_input("Enter a 5 worded sentence: ").split()
  if len(words) > 5:
    print 'Try again. Word exceeded 5 word limit'
  elif len(words) < 5:
    print 'Try again. Too little words!'

请注意,在python中,默认参数在函数 definition 时绑定,而不是在函数调用时绑定。这意味着你的raw_input()将在定义main时触发,而不是在调用main时触发,这几乎肯定不是你想要的。

答案 1 :(得分:1)

读取你自己的输出:):在赋值之前引用'words'变量。

换句话说,在说出“单词”的含义之前,你正在调用len(单词)!

def main(sentence = raw_input("Enter a 5 worded sentence: ")):
    if len(words)<5: # HERE! what is 'words'?
        words = string.split(sentence) # ah, here it is, but too late!
        #...

尝试使用之前尝试定义它:

words = string.split(sentence)
wordCount = len(words)
if wordCount < 5:
    #...

答案 2 :(得分:0)

使用raw_input()获取输入。 使用Split()执行wordcount 如果它不等于5,则重新读取。

答案 3 :(得分:0)

  

UnboundLocalError:赋值前引用的局部变量'words'

这正是它所说的。您试图在找出words实际上是什么的部分之前使用words

程序一步一步地进行。有条不紊。