2016-11-05 2 views
-2

Я пытаюсь подсчитать слово fizz с помощью python. Однако это дает мне ошибку.Синтаксис error 'return' external function in python

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

item= ["fizz","cat", "fizz", "Dog", "fizz"] 

example= fizz_count(item) 

print example 

Я проверил с отступом, но все равно он не работает. Где я делаю неправильно?

+0

Что такое ошибка? Сообщения об ошибках Python обычно очень полезны. – Jakub

+0

Ошибка - Файл «python», строка 8 СинтаксисError: функция «return» вне функции –

+2

Ваш отступ * есть * проблема. –

ответ

1

Ваш отступ, кажется, неверен, и у вас не должно быть первого return count (зачем вы возвращаете count, как только вы его определяете ??).

def fizz_count(x): 
    count = 0 
    for item in x: 
     if item == "fizz": 
      count += 1 # equivalent to count = count + 1 
    return count 

item = ["fizz", "cat", "fizz", "Dog", "fizz"] 

example = fizz_count(item) 

print example 
1

Пожалуйста, попробуйте следующий код: удалить return count сразу после count = 0

Есть также несколько изменений отступа.

def fizz_count(x): 
    count = 0 

    for item in x: 
     if item== "fizz": 
      count=count+1 
    return count 

item = ["fizz","cat", "fizz", "Dog", "fizz"] 

example = fizz_count(item) 

print example 
1

проблема является identation в возвращении линии

Попробуйте с этим:

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

Вам не нужно первое утверждение «возвращение» в вашем коде. Он работает следующим образом: с фиксированным отступом и интервалом:

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

item= ["fizz","cat", "fizz", "Dog", "fizz"] 

example = fizz_count(item) 
print example 
+0

первый счетчик возврата был ошибкой, я удалил его, но все еще есть проблема. –

+0

Вы уверены, что хотите отложить свой оставшийся оператор возврата? Ваш код работает без первого оператора return, оттуда вы получите сообщение об ошибке, если не убедитесь, что вы правильно отпечатаны. Отступы имеют значение в Python; попробуйте запустить код точно так, как я его написал здесь (четыре пробела или один отступ табуляции перед оператором return, поэтому он находится в вашей функции fizz_count). – AnneV

+0

Я работаю с codecademy python IDE, я проверил с отступом. Это не работает. –

0

Ну, я новичок в мире python. То, что я узнал, - это заявление о возврате, должно быть что-то вроде этого.

Пример один: -

def split_train_test(data, test_ratio): 
    shuffled_indices = np.random.permutation(len(data)) 
    test_set_size = int(len(data) * test_ratio) 
    test_indices = shuffled_indices[:test_set_size] 
    train_indices = shuffled_indices[test_set_size:] 
    return data.iloc[train_indices],data.iloc[test_indices] 

Пример два: -

def load_housing_data(housing_path=HOUSING_PATH): 
    csv_path = os.path.join(housing_path, "housing.csv") 
    return pd.read_csv(csv_path)