2016-10-27 5 views
0

У меня есть эти две простые функции для суммирования и подсчета элементов списка без использования стандартных команд python, таких как sum() и len().Считать или добавить элементы списка без использования встроенных функций python

#sum the elements of a list 
def sum_list(x): 
    n=0 
    for i in x: 
     n= n+i 
    return n 

ex. если x = [1,5] - следует вернуть 6

#count the number of elements in a list 
def count_list(x): 
    n=0 
    for i in x: 
     n= n+1 
    return n 

ex. если х = [1,5] - должен вернуть 2

Проблема заключается в том, я не могу понять, как они работают. Более конкретно:

1) Что означает п = 0 представляет перед циклом? Это какая-то начальная точка?

2) После этого, я могу понять, что для цикла делает, но я не могу получить то, что п = п + я и п = п + 1 на самом деле означает. Что такое «n» в этом случае, и почему, если я добавляю «i» (n + i), выдает сумму, добавляя «1» (n + 1), чтобы указать длину списка?

+2

Похоже, вы слишком быстро научились программированию, и вам нужно пересмотреть основы. Подумайте о том, чтобы пройти через [codecademy] (https://www.codecademy.com/learn/python) или какой-то другой ресурс с нуля. Также проверьте [thonny] (http://thonny.cs.ut.ee/), чтобы помочь вам визуализировать, что делает код. –

+0

Это очень простой вопрос, который также, вероятно, не поможет другим людям. Возможно, вам захочется прочитать несколько основных руководств по [переменным] (http://www.tutorialspoint.com/python/python_variable_types.htm) и [петлям] (http://www.tutorialspoint.com/python/python_for_loop.htm). – DeFazer

+0

Ну .. ты абсолютно прав Алекс Холл. Они пытаются научить нас программированию на Python через 4 недели, и мы бежим, как ад ..! –

ответ

2

использование Make выписок печати, чтобы помочь вам понять, как цикл работает. (Копия вставить код и запустить) Чтобы ответить вам вопросы

п -> это переменная, которая содержит значения n+i и n+1, поэтому значение n+i и n+1 сохраняется в n (код движется слева направо) , Вы можете думать об этом в качестве отправной точки

так n+i или n+1 делает вычисление необходимо, и сохраняет число в n, а затем возвращает его в следующем шаге.

Чтобы ответить вам вопрос «почему, если я добавлю„я“(п + я) дает сумму при добавлении„1“(п + 1) дает длину списка?» : i будет продолжать меняться с каждой итерацией цикла, но в n+1, только n меняется каждый раз. Поэтому функция sum дает вам сумму, а функция count дает вам длину.

Вы можете использовать len, чтобы получить число элементов в списке

Надеется, что это помогает.

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

def sum_list(x): 
    print("SUM FUNCTION START")  
    n = 0 
    for i in x: 
     print("n: ",n) 
     print("i: ",i)   
     n = n + i 
     print("n =",n,",","i= ",i) 
     print("n + i = ",n) 
     print() 
    print("SUM FUNCTION END") 
    print() 
    return n 

def count_list(x): 
    print() 
    print("COUNT FUNCTION START") 
    n = 0 
    for i in x: 

     print("n: ",n) 
     print("i: ",i)   
     print("n =",n,",","i= ",i) 
     print("n + 1 = ",n) 
     n = n + 1 
     print() 
    print("COUNT FUNCTION END")     
    return n 

#EASIER WAY TO COMPUTER LENGTH OF THE LIST USING len FUNCTION   
def count_list2(x): 
    return len(x) 

def main(): 
    x = [1,2,3,4,5] 
    answer = sum_list(x) 
    print("Sum : ", answer) 
    elements = count_list(x) 
    elements2 = count_list2(x) 
    print() 
    print("There are", elements, "elements in the list") 
    print() 
    print("There are", elements2, "elements in the list") 
main()