2016-08-22 6 views
-4

Может кто-нибудь объяснить, почему этот код печатает только 6? :)заявление о возврате или заявление о печати?

def func(x): 
    result = 0 
    for i in range(x): 
     result = result + i 
    return result 

print(func(4)) 
+0

Потому что это то, что он должен делать. Он печатает возвращаемое значение функции. Диапазон является эксклюзивным, поэтому 1 + 2 + 3 = 6 – Li357

+0

Попробуйте 'print (func (1))'. – Zety

ответ

0

Прежде всего, так как ваш код не отформатированы права в вопросе, и я не могу изменить его из-за отложенное редактирование (который я держал пари, фиксирую это), я буду считать, ваш код должен выглядеть примерно так:

def func(x): 
    result = 0 
    for i in range(x): 
     result = result + i 
    return result 

print(func(4)) 

Позволяет сломать его шаг за шагом. Печать напечатает func, дайте ему номер 4, а затем распечатайте все номера. Таким образом, управление переходит на func и начинает его обрабатывать, с номером 4 для x. Вы инициализируете результат до 0, а затем вводите цикл. for i in range(x) предоставит вам список номеров [0, 1, 2, 3] (на самом деле это не список, но мы можем рассматривать его таким образом для этого упрощенного объяснения). Для каждого номера i в этом списке вы добавляете его к текущему значению result. Так result проходит через эти этапы:

result = 0 + 0 
result = 0 + 1 
result = 1 + 2 
result = 3 + 3 

Окончательное значение result составляет 6, который возвращается, и распечатать. Вот откуда у вас 6. Если вы вызываете func(5), вы получите 10, так как он проходит те же шаги, но добавляет дополнительные 4 к тому же вычислению. Эта функция выполняет добавление чисел от 0 до x - 1 (по крайней мере для положительных целых входов).

+0

О, я понимаю. Я просто предположил, что он вернет все результаты, а не только последний. Итак, я ожидал увидеть :. 0 1 3 6. – Prince

Смежные вопросы