I'm trying to run a For loop
in a function but when I call the function only the first value is returned.
I've tried ending the loop with a print
instead of a return
, which gets the correct result (It prints every value in the loop) but means a none
is added to the answer as there is now a double print.
PLEASE NOTE: In these examples one could one could just print "value" directly but I want to be able to run through a for loop, to add complexity later.
The function ending in return
only prints out the first value of the `For loop``:
def thing():
value = ( 1, 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 )
for x in value:
return x
print(thing())
# 1
This function uses print
and gives the correct result except with a none
added due to the double print.
def thing1():
value = ( 1, 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 )
for x in value:
print(x)
print(thing1())
>>> OutPut:
1
2
3
4
5
6
7
8
9
10
None
How exactly can I get the second result(the full printed loop of all values) whilst removing the "None"?
After return
is run, the function stops evaluating. If you'd like to return everything in a for loop, return a list of its outputs:
ret_vals = []
for x in value:
ret_vals.append(x)
return(ret_vals)
You can print them on new lines like you specified like so:
out = func()
for x in out:
print(x)