这是我到目前为止所拥有的:
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
答案 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
。
程序一步一步地进行。有条不紊。