python версия 3.6.3 Функции и списъци

Опитвам се да стартирам следното:

def count_small(numbers):
total = 0
for n in numbers:
    if n < 10:
        total = total + 1
    return total

lotto = [4, 8, 15, 16, 23, 42]
small = count_small(lotto)
print(small)

Тук дефинирах функция 'count_small(numbers)', тя започва с общо 0, след което проверява всеки елемент в списъка, за да провери дали е по-малък от 10, ако елементът е по-малък от 10, тогава ще бъде добавен 1 към общата сума. Изпълнявам функцията в списъка „лото“, както можете да видите, „лото“ има две числа, по-малки от 10, „4“ и „8“, следователно трябва да върне 2, но когато стартирам кода, той вместо това връща 1.


person Violet Flare    schedule 05.12.2017    source източник
comment
моля, отстъпете кода си   -  person Haifeng Zhang    schedule 05.12.2017
comment
Забавен факт: Можете да постигнете същото, просто като направите small = sum(n < 10 for n in lotto)   -  person Matias Cicero    schedule 05.12.2017
comment
Не е възможно да сте стартирали този код, кодът, който изброявате. Това може да прикрива истинската грешка.   -  person Jongware    schedule 05.12.2017
comment
Отбелязвам този въпрос за приключване. Питащият успя да намери своя проблем, което е добре, но грешката беше малка типографска грешка (отстъп на return), която беше разрешена по начин, за да помогне на бъдещите читатели, така че въпросът сега трябва да бъде затворен.   -  person Davy M    schedule 05.12.2017


Отговори (2)


Вашият оператор return е вътре в for-цикъла, така че функцията остава след първото число.

def count_small(numbers):
    total = 0
    for n in numbers:
        if n < 10:
            total += 1
    return total

Когато използвате генераторен израз, можете да напишете това в един ред:

def count_small(numbers):
    return sum(n<10 for n in numbers)
person Daniel    schedule 05.12.2017
comment
Благодаря ти! Това помага много, а опростяването е наистина полезно! - person Violet Flare; 05.12.2017

Вашият отстъп е неправилен. Поставете израза return извън вашия for цикъл.

person rma    schedule 05.12.2017
comment
Благодаря ти! Малка грешка, сега работи :) - person Violet Flare; 05.12.2017