Может кто-нибудь объяснить, почему этот код печатает только 6? :)заявление о возврате или заявление о печати?
def func(x):
result = 0
for i in range(x):
result = result + i
return result
print(func(4))
Может кто-нибудь объяснить, почему этот код печатает только 6? :)заявление о возврате или заявление о печати?
def func(x):
result = 0
for i in range(x):
result = result + i
return result
print(func(4))
Прежде всего, так как ваш код не отформатированы права в вопросе, и я не могу изменить его из-за отложенное редактирование (который я держал пари, фиксирую это), я буду считать, ваш код должен выглядеть примерно так:
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 1 3 6. – Prince
Потому что это то, что он должен делать. Он печатает возвращаемое значение функции. Диапазон является эксклюзивным, поэтому 1 + 2 + 3 = 6 – Li357
Попробуйте 'print (func (1))'. – Zety