Hey I'm trying to learn how to define a function.
As an example I made a "only want even number from a range" function
def even_numbers_only(a, b):
even_numbers_list = []
for i in range(a, b):
if (i % 2) == 0:
even_numbers_list.append(i)
return even_numbers_list
even = [even_numbers_only(1000, 3001)]
print(even)
But I don't understand how i can output a list from a defined function
Please put your code in Python code tags, as you have been warned about that before. You can find
help here.
(Jan-05-2020, 10:02 AM)Coastal Wrote: [ -> ]Hey I'm trying to learn how to define a function.
As an example I made a "only want even number from a range" function
def even_numbers_only(a, b):
even_numbers_list = []
for i in range(a, b):
if (i % 2) == 0:
even_numbers_list.append(i)
return even_numbers_list
even = [even_numbers_only(1000, 3001)]
print(even)
But I don't understand how i can output a list from a defined function
even = [even_numbers_only(1000, 3001)]
you have to remove the [ ]
even = even_numbers_only(1000, 3001)
You can directly print the output without added to a var
print(even_numbers_only(1000, 3001))
Some suggestions:
- use meaningful parameter names
- take andvantage that True and False are integer subclass with respective values of 1, 0.
Some ideas:
def get_evens(start, stop):
evens = []
for i in range(start, stop+1): # we need +1 if we want to include stop
if not i % 2:
evens.append(i)
return evens
However, if one already writes functions then list comprehension should be covered topic. So this function can be written:
def get_evens(start, stop):
return [i for i in range(start, stop+1) if not i % 2]
But if function works on continuous range of numbers one can just verify first number and then use range with step:
def get_evens(start, stop):
if start % 2:
return list(range(start+1, stop+1, 2))
else:
return list(range(start, stop+1, 2)
One can observe that only difference between returns above is value of dividing by 2 and therefore we can write this function like:
def evens(start, stop):
return list(range(start+start % 2, stop+1, 2))
If function result is used to iterate over then there is no need to convert into list and range can be returned.