2

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

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

4 回答 4

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 中,默认参数是在函数定义时绑定的,而不是在函数调用时绑定的。这意味着您raw_input()将在定义 main 时触发,而不是在调用 main 时触发,这几乎肯定不是您想要的。

于 2012-02-23T04:14:32.043 回答
1

阅读您自己的输出:):在赋值之前引用了“words”变量。

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

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:
    #...
于 2012-02-23T04:18:25.953 回答
0

使用 raw_input() 获取输入。使用 Split() 计算字数,如果不等于 5,则重新读取。

于 2012-02-23T04:32:29.597 回答
0

UnboundLocalError:分配前引用的局部变量“单词”

这正是它所说的。你试图words在你弄清楚words实际是什么的部分之前使用。

程序逐步进行。有条不紊。

于 2012-02-23T04:40:02.250 回答