2017-02-16 10 views
0

Вот проблема, что у меня возникают проблемы, решая:CS Круги - Python - списки - это естественно упражнения

Написать функцию naturalNumbers, которая принимает положительное целое число n в качестве входных данных и возвращает список [1, 2, ...], состоящий из первых n натуральных чисел.

Вот код, который я до сих пор:

def naturalNumbers(x): 
    x = input() 
    myList = [] 
    for i in range (0, x): 
     return myList = myList + [i] 
     print(myList) 

Я действительно путают, когда ставить return для функций.

+1

возвращение всегда последнее, что вы делаете. после возврата функция выйдет, и в этой функции не будет больше кода. – Nullman

+0

Почему вы передаете 'x' в качестве параметра функции и переопределяете это значение, беря возвращаемое значение из' input() '? – slackmart

+1

Хотя ответы ниже являются точными ОП, вы можете использовать простое понимание списка для выполнения своей задачи: '[n для n в диапазоне (1, x + 1)]'. Это выглядело бы намного чище, чем выполнение «регулярного» цикла. –

ответ

1

вы работаете очень трудно функция range() возвращает объект литьевой в список, так что все, что вам нужно сделать, это

def naturalNumbers(x): 
    return list(range(1,x + 1)) #didnt notice we are in python 3 

0 не считается натуральное число

+0

@leaf on python 2 im doing 'type (range (1,5))' и получение списка, являются ли объекты диапазона питонной 3-й штукой? – Nullman

+0

@leaf спасибо за указание, я исправил свой ответ – Nullman

+1

Нет проблем. Рад помочь. –

0
def naturalNumbers(n): 
    n = input() 
    myList = [] 
    for i in range(1, n + 1): 
     myList.append(i) 
    return myList 

Или использование лист осмысление:

def naturalNumbers(n): 
    n = input() 
    myList = [i for i in range(1, n + 1)] 
    return myList 

return - это конец функции, он должен быть вне цикла.

+0

В Python функция 'range()' _exclusive_. Это означает, что это произойдет до чисел 'n', но остановитесь там. Вам нужно сделать 'range (0, n + 1)' вместо этого. –

+0

Спасибо, что напомнили. –

0

Вы смешиваете как свой «главный» код, так и функцию, которую вас просят написать.

Пусть ваша функция будет только для вашей функции генерации списка naturalNumbers. и используйте другую основную функцию.

вы можете игнорировать основной метод и, если __name__ = '__main__' это просто для правильной работы с хорошей формой.

# this method outputs a list from 0 to x 
def naturalNumbers (x): 
    l = list[] 
    for i in range(0, x+1): 
     list.append(i) 
    return l 

def main(): 
    x = input() 
    # should check if x is an integer (defensive programming) 
    print (naturalNumbers(x)) 

if __name__ = "__main__" 
    main() 
  • также в зависимости от определения, используемые натуральные числа могут начать форму 0 или 1
0

Возвращение выход из функции. Без возврата функция не «возвращает» что-либо туда, где она была вызвана.

def naturalNumbers(n): 
    return [x for x in range(0,n)] 

print(naturalNumbers(5)) 

Вышеприведенный оператор печати использует выходные данные натуральных чисел и печатает [0,1,2,3,4].

Скажем, мы удаляем возврат и просто присваиваем его значению.

def naturalNumbers(n): 
    numbers = [x for x in range(0,n)] 
    #assignment rather than return, we could do other operations. 

print(naturalNumbers(5)) 
#returns None 

выше оператор печати печатает «None», как это возвращаемое значение по умолчанию в Python

+0

В Python функция 'range()' является исключительной. Это означает, что это произойдет до чисел 'n', но остановитесь там. Вам нужно сделать 'range (0, n + 1)' вместо этого. –

+0

Спасибо, что понятия не имел, что такое эксклюзив. –

0

Попробуйте этот простой метод:

def naturalNumbers(n): 
    myList = [] 
    for i in range(0,n): 
     myList = myList+[i+1] 
    return myList 
Смежные вопросы