Trying to append an input number in a list function is returning none
Question:
I need to return a list of numbers input by the user.
I have tried to insert an empty list and then using the .append
function to append the input value to the list.
def ask_a_number():
trials = []
playernumber = int(input('Guess a number: '))
trials = trials.append(playernumber)
return playernumber, trials
ask_a_number()
Lets say I want to input 5.
So I want the function to return 5 and also a list trials = [5]
.
Next time when I input 10, the function should return trials = [5,10]
.
Answers:
Change
trials = trials.append(playernumber)
to
trials.append(playernumber)
Since list.append
returns None
(it alters the state of trials
instead) and you reassign its return value to trials
, you get None
in your returned tuple.
append()
doesn’t return anything. It is designed to do in-place modification. So just do the following:
def ask_a_number(trials=None):
trials = trials or []
playernumber = int(input('Guess a number: '))
trials.append(playernumber)
return playernumber, trials
ask_a_number()
I’ve also added a default value for trials
so that if you want to do this in a loop, you can like so:
trials = []
for i in range(6):
player, trials = ask_a_number(trials)
def ask_a_number():
trials = []
while True:
playernumber = int(input('Guess a number: '))
trials.append(playernumber)
if playernumber==0:
break
print(playernumber, trials)
return
ask_a_number()
I need to return a list of numbers input by the user.
I have tried to insert an empty list and then using the .append
function to append the input value to the list.
def ask_a_number():
trials = []
playernumber = int(input('Guess a number: '))
trials = trials.append(playernumber)
return playernumber, trials
ask_a_number()
Lets say I want to input 5.
So I want the function to return 5 and also a list trials = [5]
.
Next time when I input 10, the function should return trials = [5,10]
.
Change
trials = trials.append(playernumber)
to
trials.append(playernumber)
Since list.append
returns None
(it alters the state of trials
instead) and you reassign its return value to trials
, you get None
in your returned tuple.
append()
doesn’t return anything. It is designed to do in-place modification. So just do the following:
def ask_a_number(trials=None):
trials = trials or []
playernumber = int(input('Guess a number: '))
trials.append(playernumber)
return playernumber, trials
ask_a_number()
I’ve also added a default value for trials
so that if you want to do this in a loop, you can like so:
trials = []
for i in range(6):
player, trials = ask_a_number(trials)
def ask_a_number():
trials = []
while True:
playernumber = int(input('Guess a number: '))
trials.append(playernumber)
if playernumber==0:
break
print(playernumber, trials)
return
ask_a_number()