I don't understand where the "none" comes from in the output of my Python program. Can anyone help me?
Program
def printColumn(x):
if type(x) is not list:
x = list(range(0,5))
for i in range(len(x)):
print(x[i])
x = [8,24,48,2,16]
print(printColumn(x))
Output
8
24
48
2
16
None
Thank you in advance
I just don't understand why it doesn't work
CodePudding user response:
The function prints the values 8 thru 16.
But your main-level code has print(printColumn(x))
, which means that the return value of the function is also printed. And since the function has no return
statement, it returns None
by default.
If you want to just call the function, without printing its result, just use printColumn(x)
without the outer print()
call.
CodePudding user response:
you should just call the function without print()
like that: printColumn(x)
NOT print(printColumn(x))
CodePudding user response:
The way you deal with this depends on where you want the printing to occur.
If you want to print the return value from printColumn() then you could do this:
def printColumn(x=None):
return x if isinstance(x, list) else range(5)
x = [8,24,48,2,16]
print(*printColumn(x), sep='\n')
print()
print(*printColumn(), sep='\n')
Output:
8
24
48
2
16
0
1
2
3
4