Предполагая, что вы скопировали это добросовестно, это спорный вопрос. В коде есть две серьезные ошибки: они не действуют так, как ожидалось, и вы, вероятно, должны найти эти ошибки.
Что вы бы как это сделать, это подсчитать количество длинных и коротких слов, и вернуться False
, '='
или True
в зависимости от того, как они соотносятся. Поскольку тестовое предложение имеет 7 коротких слов и 3 длинных, оно должно возвращать False
.
Ноты if
с отступом внутриfor
петля. Это означает, что вместо того, чтобы делать проверку после того, как все слова подсчитаны, вы делаете это после каждого слова. Поэтому, как только возникает дисбаланс, 1 > 0
, и поэтому вы просто проверяете, длинное ли первое слово, а не то, являются ли большинство слов длинными. Поскольку 'There'
длинный (5 или более символов), он должен вернуть True
.
Но есть другой ошибка; Второе сравнение не longCount > shortCount
, это longCount > longCount
. Это, очевидно, никогда не будет правдой. Таким образом, программа будет зацикливаться до тех пор, пока количество коротких слов не будет превышать количество длинных слов - в этом случае оно вернет False
- или оно просто выпадет из цикла и вернет '='
. В этом случае, как только вы доберетесь до слова 'no'
, shortWords
- 2
, longWords
- 1
, поэтому он возвращает False
.
Если правильный ответ должен был быть =
, то либо вы его не скопировали, либо ответ был просто неправильным. Одна из возможностей заключается в том, что есть третья ошибка, которую вы невольно исправили при копировании вопроса. Например, я замечаю, что у вас есть вне функции. Это странно, и это должно быть NameError
. Но если есть строка, например, aStr = ''
где-то ранее в коде, который вы нам не показали, тогда вы должны установить действительную глобальную переменную с именем splitLine
. И если в фактическом коде есть опечатка, например, splitline = aStr.split()
, тогда ваша функция будет перебирать эту глобальную переменную. Если бы это было, скажем, ''.split()
, или 'There there'
, то в сочетании с двумя другими ошибками, которые приведут к возврату '='
.
Он возвращает False для меня –
Он вернет 'False' try, выполнив его –
, где вы определяете' aStr' в первой строке. если удалить первую строку, верните «False» для меня тоже. –