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]
5 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].
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:
By default, range(n) produces list of numbers [0, 1, ..., n-1].
If you want a list of numbers from a to b inclusive, you should call:
range(a, b + 1)
Which in your case is:
range(1, 11)
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)).
You probably want to create a list in your function, use the yield keyword, or use the built in list function.
def generateNumberList(num):
myList = []
for i in range(num):
myList.append(i)
#Notice that your return the list you've created rather
#than each individaul integer
return myList
print generateNumberList(10)
def generateNumberList2(num):
for i in range(10):
yield i
for i in generateNumberList2(10):
print i
def generateNumberList3(num):
return list(range(num))
print generateNumberList3(10)