Python: как сделать функцию, которая запрашивает точное количество слов?
Вот что у меня есть до сих пор:
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 ответа:
Ваша проблема заключается в том, что вы вызываете
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 вызвана, что почти наверняка не то, что вы хотите.
Прочитайте свой собственный вывод :): переменная '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: #...