Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python Sequence of Numbers

I've decided not to waste my summer and start learning python. I figured I'd start learning looping techniques so I wanted to start with a basic list of numbers, aka, write a for loop that will generate the numbers 1 - 10.

This is what I have:

def generateNumber(num):
    i=0 
for i in range(num):
    return i
return i

and the code doesn't work. I want to get an output in a list like this:

>>> generateNumber(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
like image 623
xtheking Avatar asked Jun 18 '13 18:06

xtheking


3 Answers

Trying to be consistent with what you first tried, you could do something like this

def generateNumber(num):
    mylist = []
    for i in range(num+1):
         mylist.append(i)
    return mylist


x = generateNumber(10)

but, you could, instead just say,

x = range(10+1)  # gives a generator that will make a list

or

x = list(range(10+1))  # if you want a real list

In general though, you should keep this list based on inputting the number 10 so it is [0...9] and not [0...10].

like image 118
tom10 Avatar answered Sep 19 '22 22:09

tom10


It might help to implement this with the ability to specify a range:

def generateNumber(low, high):
    '''returns a list with integers between low and high inclusive
    example: generateNumber(2,10) --> [2,3,4,5,6,7,8,9,10]
    '''
    return range(low, high+1)

This can also be done with the built-in range function:

range(10)   --> [0,1,2,3,4,5,6,7,8,9]   #note the "off by one"
range(11)   --> [0,1,2,3,4,5,6,7,8,9,10]
range(2,11) --> [2,3,4,5,6,7,8,9,10]

More about range: http://docs.python.org/2/library/functions.html#range

like image 35
codeprogress Avatar answered Sep 17 '22 22:09

codeprogress


The range function already does what you are setting out to do.

If you're in Python 2, range(10) returns 0 through 9, or in Python 3 it's list(range(10)).

like image 44
TankorSmash Avatar answered Sep 18 '22 22:09

TankorSmash