简体   繁体   中英

CS Circles - Python - Lists - It's Natural exercise

Here is a problem that I am having trouble solving:

Write a function naturalNumbers which takes a positive integer n as input, and returns a list [1, 2, ...] consisting of the first n natural numbers.

Here is the code that I have so far:

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

I'm really confused as to when to put return for functions.

you are working very hard the function range() returns a an object castable to list, so all you need to do is

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

0 is not considered a natural number

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

Or use list comprehension :

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

return is the end of a function, it should be outside of a loop.

Your are mixing both your 'main' code and the function that you are being asked to write.

let your function be only for your list generating function naturalNumbers . and use a different main function.

you can ignore the main method and the if __name__ = '__main__' this is just to run correctly with good form.

# 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()
  • also depending on the definition used natural numbers can start form 0 or 1

Return is the output from a function. Without the return the function doesn't 'give back' anything to where it was called.

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

print(naturalNumbers(5))

The above print statement uses the output of natural numbers and will print [0,1,2,3,4].

Say we remove the return and just assign it to a value.

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

The above print statement prints 'None' as this is the default return value in Python

Try this simple method:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM