Python: как использовать цикл while и вывести правильное количество слов
Это то, что я до сих пор:
while len(words) != 5:
words = raw_input("Enter a 5 worded sentence: ").split()
print "Try again. The word count is:", wordCount
if len(words) == 5:
print "Good! The word count is 5!"
Проблема в том, что я получаю это:
Enter a 5 worded sentence: d d d d
Try again. The word count is: 4
Enter a 5 worded sentence: d d d d d d
Try again. The word count is: 4
Enter a 5 worded sentence: d d d d d
Try again. The word count is: 4
Good! The word count is 5!
Когда я ввожу больше или меньше 5 слов, он сохраняет количество слов и не меняется.
5 ответов
Поскольку Python не имеет do-while
как и некоторые другие языки, эта идиома предотвращает дублирование raw_input
функция, и убедитесь, что цикл запускается хотя бы один раз. Обязательно обновите word_count
после получения нового ввода.
while 1:
words = raw_input("Enter a 5 worded sentence: ").split()
word_count = len(words)
if word_count == 5: break
print "Try again. The word count is:", word_count
print "Good! The word count is 5!"
Вам просто нужно изменить порядок вашей логики:
# prompt before entering loop
words = raw_input("Enter a 5 worded sentence: ").split()
while len(words) != 5:
print "Try again. The word count is:", len(words)
words = raw_input("Enter a 5 worded sentence: ").split()
# no need to test len again
print "Good! The word count is 5!"
Я думаю, что в вашем фрагменте кода отсутствуют части. В любом случае, вы должны оценить wordCount
после raw_input
так что он обновляется с новыми значениями.
wordCount = 0
while wordCount != 5:
words = raw_input("Enter a 5 worded sentence: ").split()
wordCount = len(words)
print "Try again. The word count is:", wordCount
print "Good! The word count is 5!"
Переменная wordCount должна быть обновлена внутри цикла после того, как вы примете ввод. Только тогда это будет отражать новое значение. Что-то вроде этого:-
while len(words) != 5:
words = raw_input("Enter a 5 worded sentence: ").split()
wordCount = len(words)
print "Try again. The word count is:", wordCount
if len(words) == 5:
print "Good! The word count is 5!"
def xlen(string_data):
try:
count = 0
while 1:
string_data[count]
count = count + 1
except(IndexError):
print count
xlen('hello')