2013-04-15 2 views
0

У меня есть этот код:Синтаксическая ошибка: плохой вход - Python

num = range(1,33) 
num[0]=1 
num[1]=2 
for i in range(2,32): 
    num[i]=num[i-1]+num[i-2] 


total=0 
for i in range(0,32): 
    print num[i] 
    if num[i]%2==0: 
    total=total+num[i] 
    else: 
    num[i]=num[i+1] 

Я хочу найти сумму четных чисел в массиве num. Может ли кто-нибудь предположить, что я сделал здесь неправильно?

ответ

7

отступы очень важны в питоне

if num[i]%2==0: 
total=total+num[i] 
else: 
num[i]=num[i+1] 

должен быть

if num[i]%2==0: 
    total=total+num[i] 
else: 
    num[i]=num[i+1] 

Кроме того, используйте последовательные отступы например 4 место каждое, где вы должны ввести отступ.

+0

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

+0

очень верно. Это хорошая функция, которая заставляет вас писать читаемый, хорошо сшитый код – karthikr

+0

@karthikr К некоторому моменту ... когда это становится серьезной болью в заднице: P – Ngenator

2

В качестве альтернативы:

total = sum([i for i in num if i % 2 == 0]) 
  • Sum() возвращает суммирование списка.

  • [i for i in num if i % 2 == 0] является List Comprehensions.

Например:

>> num = [1,2,3,4] 
>> tmp = [i for i in num if i % 2 == 0] 
>> print tmp 
[2,4] 

>> total = sum(tmp) 
>> print total 
6 
Смежные вопросы