Welcome to the Treehouse Community
Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.
Start your free trialMark Coup
1,112 PointsI'm having trouble referencing the argument specified in the function I've created. Please help.
I think that I'm generating a random number correctly, just having trouble referencing the argument. How can I get the correct reference?
# EXAMPLE
import random
# random_item("Treehouse")
def random_item("Treehouse"):
# The randomly selected number is 4.
index_num = random.randint(0, len(Treehouse) - 1
index_num = int(index_num)
# The return value would be "h"
if index_num is True:
return Treehouse[index_num]
3 Answers
Andreas cormack
Python Web Development Techdegree Graduate 33,011 PointsHI Mark
see below
# EXAMPLE
import random
# random_item("Treehouse")
def random_item("Treehouse"): # the purpose of a function is a pass a parameter rather than a static string
# The randomly selected number is 4.
index_num = random.randint(0, len(Treehouse) - 1 # your missing a closing bracket
index_num = int(index_num)
# The return value would be "h"
if index_num is True: # not sure what this condition is meant to be doing? because index_num is always true
return Treehouse[index_num]
# see my code below
# EXAMPLE
import random
# random_item("Treehouse")
def random_item(mystring):
# The randomly selected number is 4.
index_num = random.randint(0, len(mystring) - 1)
index_num = int(index_num)
# The return value would be "h"
return mystring[index_num]
print(random_item("Treehouse"))
# it does return h for the random index of 4
hope this helps
Chris Freeman
Treehouse Moderator 68,457 PointsFrom a syntax perspective, you are using a string literal as the function parameter. It is not a mutable object, that is, it can not be changed or assigned a value.
Remove the quotation marks and use just the plain variable name Treehouse
.
Considering the PEP 8 style guideline, the parameter name should not be capitalized, so use the name treehouse
instead.
Mark Coup
1,112 PointsThanks Chris. So you're saying that because the Treehouse string is a function parameter, it doesn't need any quotation marks? In the example given, Treehouse is in quotations marks.
Chris Freeman
Treehouse Moderator 68,457 PointsMore broadly I'm mean string objects can not be used as function parameters. Using treehouse
as a parameter without quotes defines a "placeholder" variable name that will receive the object listed in the function call argument list. This placeholder variable becomes a local variable inside the function.
On the call to the function randon_item()
, the argument "Treehouse" is allowed. This string will be assigned to the local parameter Treehouse
(or treehouse
if using proper lower-case parameter names)
Marcin Tokarzewski
3,487 Pointsi come up with this:
import random
def random_item(item):
n = random.randint(0, (len(item) - 1))
return item[n]
Mark Coup
1,112 PointsMark Coup
1,112 PointsThanks man, it did work. But I have a question. Why did you try to print(random_item("Treehouse")) at the end of your code? Mine worked with just the return block. And I'm not sure what you're referencing because you don't have Treehouse in any part of your code except that print.