Python: как использовать цикл while и вывести правильное количество слов - PullRequest
0 голосов
/ 23 февраля 2012

Это то, что у меня есть:

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 ]

3 голосов
/ 23 февраля 2012

Поскольку в 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!"
1 голос
/ 23 февраля 2012

Вам просто нужно изменить порядок логики:

# 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!" 
0 голосов
/ 10 октября 2016
def xlen(string_data):
    try:
        count = 0
        while 1:
            string_data[count]
            count = count + 1
    except(IndexError):
        print count

xlen('hello')
0 голосов
/ 23 февраля 2012

Я думаю, что в вашем фрагменте кода отсутствуют части.В любом случае, вы должны оценить 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!" 
0 голосов
/ 23 февраля 2012

Переменная 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!" 
...