Для Loops как использовать break - PullRequest
0 голосов
/ 28 ноября 2018

Я выполнял упражнения Loops на CodeAcademy, но не смог выяснить, что случилось с моим кодом

Упражнение: более 9000

  • Создать функцию, которая суммирует элементысписок, но останавливается, когда сумма больше 9000 - вернуть эту сумму
  • Если все элементы не достигают суммы 9000 - вернуть ее сумму
  • Если список пуст - вернуть 0

Мой код

Что не так с кодом, кажется, он возвращает None, когда он должен вернуть 9020?

#Write your function here

def over_nine_thousand(lst):
    max_sum = 0
    for i in lst:
        max_sum += i
    sum = 0
    for num in lst:
        sum += num
        if sum > 9000:
            break
            return sum
        elif sum == max_sum:
            return max_sum
    if len(lst) == 0:
        return 0


#Uncomment the line below when your function is done

print(over_nine_thousand([8000, 900, 120, 5000]))

Есть лилучший способ сделать это?

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018

Вы делаете перерыв перед возвращением.Использование:

   if sum > 9000:
         return sum

 # // 
 if sum > 9000:
        break # Breaks from the for loop
        return sum # This line code will never reached
0 голосов
/ 28 ноября 2018

Поскольку вы попросили лучший способ решения вашей проблемы:

def over_nine_thousand(lst):
    total = 0
    for x in lst:
        total += x
        if total > 9000:
            return total
    return total

print(over_nine_thousand([8000, 900, 120, 5000]))

Это перебирает список, складывает значения, и как только он видит, что добавленное значение больше 9000, выдается возврат.

return в конце цикла также обрабатывает регистр, если передан пустой список

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...