2015-07-29 4 views
-6

Я пытаюсь подсчитать количество раз 'fizz' в списке.Подсчет с использованием для циклов в Python

def fizz_count(x): 
    count=0 
    for item in x: 
     if item=='fizz': 
      count +=1 
     return count 

Этот питон программа возвращается:

"Oops, try again. fizz_count(['buzz', 'buzz', 'fizz', 'buzz']) returned 0 instead of the correct answer: 1"

Что я делаю неправильно?

+0

[Пожалуйста, ознакомьтесь с вопросом о том, как задать правильный вопрос перед отправкой] (http://stackoverflow.com/help/how-to-ask) – Gnarlywhale

+2

Переместите свой счетчик возврата обратно на вкладку. – CoryKramer

+0

В Codecademy есть форумы, в которых обычно рассматриваются общие проблемы с упражнениями. В левом нижнем углу нажмите «Q & A Forum» – brandaemon

ответ

2
def fizz_count(x): 
    count=0 
    for item in x: 
     if item=='fizz': 
      count +=1 
    return count 

В программном коде функция обратного результата в первом для итерации, где счетчик = 0

+0

thanx много, я только знал некоторые Java, прежде чем начал изучать python, поэтому я не мог распознать проблему с пробелами –

4

Вы возвращаетесь после первой итерации, необходимо перебрать все элементы, а затем вернуться за пределы цикла:

def fizz_count(x): 
    count=0 
    for item in x: 
     if item=='fizz': 
      count +=1 
    return count # outside the loop 

первый элемент х является "buzz", вы возвращаете внутри цикла, так что вы только проверить, что первый элемент и возвращать количество, которое 0, перемещение возврата вне цикла означает, что вы проверить каждый элемент в x.

Ваш код может быть упрощен возвращающимся выражение генератора с помощью sum:

def fizz_count(x): 
    return sum(s == "fizz" for s in x) 
+0

thanx много, Я только знал некоторую java, прежде чем начал изучать python, поэтому я не мог распознать проблему с пробелами –

0

Вашей проблема заключается в том, что

return count 

вспыхивает из fizzCount после первой итерации цикла, когда только первый «гул» был проверен на значение. Таким образом, у счетчика не было возможности увеличиваться.

Python немного отличается от других языков - он использует уровень отступа, где другие языки могут использовать скобки, do/end или другие символы без пробелов, чтобы представить объем методов и блоков. Это может быть немного запутанным для новичков, и похоже, что это то, где вас поймали.

Unindent return count 1 вкладкой, так что она называется после окончания цикла.

+0

thanx много, я знал только некоторую java, прежде чем начал изучать python, поэтому я не мог распознать проблему с пробелами –