CatGod6 CatGod6 - 6 months ago 21
Python Question

TypeError: 'NoneType'

Alright so I came across this ridiculous error in my code and none of the other stackoverflow errors seem to help. I'm in need of help with figuring out what's wrong with this code especially in the

def makePoem()
section.

`import random

noun = ["fossil" , "horse" , "aardvark" , "chef" , "judge"]
verb= [ "kicks", "jingles", "bounces", "slurps", "meows"]
adjs= ["fury" , "balding" , "incredulous" , "fragant"]
prep= ["against" , "after" , "into" , "beneath" , "for", "in"]
ads= ["curiously" , "extravagantly" , "furiously" , "sensuously"]

def selectn(list, n) :
selection = []
while (len(selection) != n) :
w = random.choice(list)
if w not in selection :
selection.append(w)
print(selection)
# For some reason I'm getting TypeError: 'NoneType' object is not subscriptable for "makePoem()"
def makePoem() :
my_nouns = selectn(noun,3)
my_verbs = selectn(verb,3)
my_adj = selectn(adjs,3)
my_adverb = selectn(ads,1)
my_prepo = selectn(prep,2)

print ("A {} {}".format(my_adj[0], my_nouns[0]))
print("")
print("A {} {} {} {} the {} {}".format(my_adj[0], my_nouns[0], my_verbs[0], my_prepo[0], my_adj[1], my_nouns[1]))
print("{}, the {} {}".format(my_adverb[0], my_nouns[0], my_verbs[1]))
print("the {} {} {} a {} {}".format(my_nouns[1], my_verbs[2], my_prepo[1], my_adj[2], my_nouns[2]))
makePoem()


`

Answer

You're not returning selection, you're printing it instead. Replace print(selection) with return selection.

Comments