Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 617637
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 13, 20262026-05-13T18:27:27+00:00 2026-05-13T18:27:27+00:00

I’m creating a game for my sister, and I want a function to return

  • 0

I’m creating a game for my sister, and I want a function to return a list variable, so I can pass it to another variable.

The relevant code is as follows:

def startNewGame():
    while 1:
    #Introduction:
        print
        print """Hello,
    You will now be guided through the setup process.
There are 7 steps to this.
You can cancel setup at any time by typing 'cancelSetup'
        Thankyou"""
    #Step 1 (Name):
        print
        print """Step 1 of 7:
    Type in a name for your PotatoHead:
    """
        inputPHName = raw_input('|Enter Name:|')
        if inputPHName == 'cancelSetup':
            sys.exit()
    #Step 2 (Gender):
        print
        print """Step 2 of 7:
    Choose the gender of your PotatoHead:
                        input either 'm' or 'f'
    """
        inputPHGender = raw_input('|Enter Gender:|')
        if inputPHGender == 'cancelSetup':
            sys.exit()
    #Step 3 (Colour):
        print
        print """Step 3 of 7:
    Choose the colour your PotatoHead will be:
                        Only Red, Blue, Green and Yellow are currently supported
    """
        inputPHColour = raw_input('|Enter Colour:|')
        if inputPHColour == 'cancelSetup':
            sys.exit()
    #Step 4 (Favourite Thing):
        print
        print """Step 4 of 7:
    Type your PotatoHead's favourite thing:
    """
        inputPHFavThing = raw_input('|Enter Favourite Thing:|')
        if inputPHFavThing == 'cancelSetup':
            sys.exit()
    # Step 5 (First Toy):
        print
        print """Step 5 of 7:
    Choose a first toy for your PotatoHead:
    """
        inputPHFirstToy = raw_input('|Enter First Toy:|')
        if inputPHFirstToy == 'cancelSetup':
            sys.exit()
    #Step 6 (Check stats):
        while 1:
            print
            print """Step 6 of 7:
    Check the following details to make sure that they are correct:
    """
            print
            print """Name:\t\t\t""" + inputPHName + """
Gender:\t\t\t""" + inputPHGender + """
Colour:\t\t\t""" + inputPHColour + """
Favourite Thing:\t""" + inputPHFavThing + """
First Toy:\t\t""" + inputPHFirstToy + """
"""
            print
            print "Enter 'y' or 'n'"
            inputMCheckStats = raw_input('|Is this information correct?|')
            if inputMCheckStats == 'cancelSetup':
                sys.exit()
            elif inputMCheckStats == 'y':
                break
            elif inputMCheckStats == 'n':
                print "Re-enter info: ..."
                print
                break
            else:
                "The value you entered was incorrect, please re-enter your choice"
        if inputMCheckStats == 'y':
            break
    #Step 7 (Define variables for the creation of the PotatoHead):
    MFCreatePH = []
    print
    print """Step 7 of 7:
    Your PotatoHead will now be created...

    Creating variables...
    """
    MFCreatePH = [inputPHName, inputPHGender, inputPHColour, inputPHFavThing, inputPHFirstToy]
    time.sleep(1)
    print "inputPHName"
    print
    time.sleep(1)
    print "inputPHFirstToy"
    print
    return MFCreatePH
    print "Your PotatoHead varibles have been successfully created!"

Then it is passed to another function that was imported from another module

from potatohead import *

…

welcomeMessage()
MCreatePH = startGame()
myPotatoHead = PotatoHead(MCreatePH)

the code for the PotatoHead object is in the potatohead.py module which was imported above, and is as follows:

class PotatoHead:
#Initialise the PotatoHead object:
def __init__(self, data):
    self.data = data    #Takes the data from the start new game function - see main.py
    #Defines the PotatoHead starting attributes:
    self.name = data[0]
    self.gender = data[1]
    self.colour = data[2]
    self.favouriteThing = data[3]
    self.firstToy = data[4]
    self.age = '0.0'
    self.education = [self.eduScience, self.eduEnglish, self.eduMaths] = '0.0', '0.0', '0.0'
    self.fitness = '0.0'
    self.happiness = '10.0'
    self.health = '10.0'
    self.hunger = '0.0'
    self.tiredness = 'Not in this version'
    self.toys = []
    self.toys.append(self.firstToy)
    self.time = '0'
    #Sets data lists for saving, loading and general use:
    self.phData = (self.name, self.gender, self.colour, self.favouriteThing, self.firstToy)
    self.phAdvData = (self.name, self.gender, self.colour, self.favouriteThing, self.firstToy,
                      self.age, self.education, self.fitness, self.happiness, self.health, self.hunger,
                      self.tiredness, self.toys)

However, when I run the program this error appears:

Traceback (most recent call last):
 File "/Users/Jasper/Documents/Programming/Potato Head Game/Current/main.py", line 158, in <module>
myPotatoHead = PotatoHead(MCreatePH)
 File "/Users/Jasper/Documents/Programming/Potato Head Game/Current/potatohead.py", line 15, in __init__
self.name = data[0]
TypeError: 'NoneType' object is unsubscriptable

What am i doing wrong?

—–EDIT—–

The program finishes as so:

Step 7 of 7:

Your PotatoHead will now be created...

Creating variables...

inputPHName

inputPHFirstToy

Then it goes to the Tracback

—–EDIT2—–

This is the EXACT code I’m running in its entirety:

#+--------------------------------------+#
#| main.py                              |#
#| A main module for the Potato Head    |#
#|  Game to pull the other modules      |#
#|  together and control through user   |#
#|  input                               |#
#| Author:                |#
#| Date Created / Modified:             |#
#|              3/2/10 | 20/2/10         |#
#+--------------------------------------+#  Tested: No

#Import the required modules:
import time
import random
import sys
from potatohead import *
from toy import *

#Start the Game:
def welcomeMessage():
    print "----- START NEW GAME -----------------------"
    print "==Print Welcome Message=="
    print "loading... \t loading... \t loading..."
    time.sleep(1)
    print "loading..."
    time.sleep(1)
    print "LOADED..."
    print; print; print;
    print """Hello,
    Welcome to the Potato Head Game. In this game you can create
a Potato Head, and look after it, like a Virtual Pet.
    This game is constantly being updated and expanded. Please
look out for updates.
"""

#Choose whether to start a new game or load a previously saved game:
def startGame():
    while 1:
        print "--------------------"
        print """ Choose an option:
New_Game
or
Load_Game
"""
        startGameInput = raw_input('>>> >')
        if startGameInput == 'New_Game':
            startNewGame()
            break
        elif startGameInput == 'Load_Game':
            print "This function is not yet supported"
            print "Try Again"
            print
        else:
            print "You must have mistyped the command: Type either 'New_Game' or 'Load_Game'"
            print

#Set the new game up:
def startNewGame():
    while 1:
    #Introduction:
        print
        print """Hello,
    You will now be guided through the setup process.
There are 7 steps to this.
You can cancel setup at any time by typing 'cancelSetup'
        Thankyou"""
    #Step 1 (Name):
        print
        print """Step 1 of 7:
    Type in a name for your PotatoHead:
    """
        inputPHName = raw_input('|Enter Name:|')
        if inputPHName == 'cancelSetup':
            sys.exit()
    #Step 2 (Gender):
        print
        print """Step 2 of 7:
    Choose the gender of your PotatoHead:
                        input either 'm' or 'f'
    """
        inputPHGender = raw_input('|Enter Gender:|')
        if inputPHGender == 'cancelSetup':
            sys.exit()
    #Step 3 (Colour):
        print
        print """Step 3 of 7:
    Choose the colour your PotatoHead will be:
                        Only Red, Blue, Green and Yellow are currently supported
    """
        inputPHColour = raw_input('|Enter Colour:|')
        if inputPHColour == 'cancelSetup':
            sys.exit()
    #Step 4 (Favourite Thing):
        print
        print """Step 4 of 7:
    Type your PotatoHead's favourite thing:
    """
        inputPHFavThing = raw_input('|Enter Favourite Thing:|')
        if inputPHFavThing == 'cancelSetup':
            sys.exit()
    # Step 5 (First Toy):
        print
        print """Step 5 of 7:
    Choose a first toy for your PotatoHead:
    """
        inputPHFirstToy = raw_input('|Enter First Toy:|')
        if inputPHFirstToy == 'cancelSetup':
            sys.exit()
    #Step 6 (Check stats):
        while 1:
            print
            print """Step 6 of 7:
    Check the following details to make sure that they are correct:
    """
            print
            print """Name:\t\t\t""" + inputPHName + """
Gender:\t\t\t""" + inputPHGender + """
Colour:\t\t\t""" + inputPHColour + """
Favourite Thing:\t""" + inputPHFavThing + """
First Toy:\t\t""" + inputPHFirstToy + """
"""
            print
            print "Enter 'y' or 'n'"
            inputMCheckStats = raw_input('|Is this information correct?|')
            if inputMCheckStats == 'cancelSetup':
                sys.exit()
            elif inputMCheckStats == 'y':
                break
            elif inputMCheckStats == 'n':
                print "Re-enter info: ..."
                print
                break
            else:
                "The value you entered was incorrect, please re-enter your choice"
        if inputMCheckStats == 'y':
            break
    #Step 7 (Define variables for the creation of the PotatoHead):
    MFCreatePH = []
    print
    print """Step 7 of 7:
    Your PotatoHead will now be created...

    Creating variables...
    """
    MFCreatePH = [inputPHName, inputPHGender, inputPHColour, inputPHFavThing, inputPHFirstToy]
    time.sleep(1)
    print "inputPHName"
    print
    time.sleep(1)
    print "inputPHFirstToy"
    print
    return MFCreatePH
    print "Your PotatoHead varibles have been successfully created!"

#Run Program:
welcomeMessage()
MCreatePH = startGame()
myPotatoHead = PotatoHead(MCreatePH)

The potatohead.py module is as follows:

#+--------------------------------------+#
#| potatohead.py                        |#
#| A module for the Potato Head Game    |#
#| Author:                              |#
#| Date Created / Modified:             |#
#|              24/1/10 | 24/1/10       |#
#+--------------------------------------+#  Tested: Yes (24/1/10)

#Create the PotatoHead class:
class PotatoHead:
    #Initialise the PotatoHead object:
    def __init__(self, data):
        self.data = data    #Takes the data from the start new game function - see main.py
        #Defines the PotatoHead starting attributes:
        self.name = data[0]
        self.gender = data[1]
        self.colour = data[2]
        self.favouriteThing = data[3]
        self.firstToy = data[4]
        self.age = '0.0'
        self.education = [self.eduScience, self.eduEnglish, self.eduMaths] = '0.0', '0.0', '0.0'
        self.fitness = '0.0'
        self.happiness = '10.0'
        self.health = '10.0'
        self.hunger = '0.0'
        self.tiredness = 'Not in this version'
        self.toys = []
        self.toys.append(self.firstToy)
        self.time = '0'
        #Sets data lists for saving, loading and general use:
        self.phData = (self.name, self.gender, self.colour, self.favouriteThing, self.firstToy)
        self.phAdvData = (self.name, self.gender, self.colour, self.favouriteThing, self.firstToy,
                          self.age, self.education, self.fitness, self.happiness, self.health, self.hunger,
                          self.tiredness, self.toys)

    #Define the phStats variable, enabling easy display of PotatoHead attributes:
    def phDefStats(self):
        self.phStats = """Your Potato Head's Stats are as follows:
----------------------------------------
Name: \t\t""" + self.name + """
Gender: \t\t""" + self.gender + """
Colour: \t\t""" + self.colour + """
Favourite Thing: \t""" + self.favouriteThing + """
First Toy: \t""" + self.firstToy + """
Age: \t\t""" + self.age + """
Education: \t""" + str(float(self.eduScience) + float(self.eduEnglish) + float(self.eduMaths)) + """
-> Science: \t""" + self.eduScience + """
-> English: \t""" + self.eduEnglish + """
-> Maths:   \t""" + self.eduMaths + """
Fitness: \t""" + self.fitness + """
Happiness: \t""" + self.happiness + """
Health: \t""" + self.health + """
Hunger: \t""" + self.hunger + """
Tiredness: \t""" + self.tiredness + """
Toys: \t\t""" + str(self.toys) + """
Time: \t\t""" + self.time + """
"""

    #Change the PotatoHead's favourite thing:
    def phChangeFavouriteThing(self, newFavouriteThing):
        self.favouriteThing = newFavouriteThing
        phChangeFavouriteThingMsg = "Your Potato Head's favourite thing is " + self.favouriteThing + "."

    #"Feed" the Potato Head i.e. Reduce the 'self.hunger' attribute's value:
    def phFeed(self):
        if float(self.hunger) >=3.0:
            self.hunger = str(float(self.hunger) - 3.0)
        elif float(self.hunger) < 3.0:
            self.hunger = '0.0'
        self.time = str(int(self.time) + 1) #Pass time

    #"Exercise" the Potato Head if between the ages of 5 and 25:
    def phExercise(self):
        if float(self.age) < 5.1 or float(self.age) > 25.1:
            print "This Potato Head is either too young or too old for this activity!"
        else:
            if float(self.fitness) <= 8.0:
                self.fitness = str(float(self.fitness) + 2.0)
            elif float(self.fitness) > 8.0:
                self.fitness = '10.0'
        self.time = str(int(self.time) + 1) #Pass time

    #"Teach" the Potato Head:
    def phTeach(self, subject):
        if subject == 'Science':
            if float(self.eduScience) <= 9.0:
                self.eduScience = str(float(self.eduScience) + 1.0)
            elif float(self.eduScience) > 9.0 and float(self.eduScience) < 10.0:
                self.eduScience = '10.0'
            elif float(self.eduScience) == 10.0:
                print "Your Potato Head has gained the highest level of qualifications in this subject! It cannot learn any more!"
        elif subject == 'English':
            if float(self.eduEnglish) <= 9.0:
                self.eduEnglish = str(float(self.eduEnglish) + 1.0)
            elif float(self.eduEnglish) > 9.0 and float(self.eduEnglish) < 10.0:
                self.eduEnglish = '10.0'
            elif float(self.eduEnglish) == 10.0:
                print "Your Potato Head has gained the highest level of qualifications in this subject! It cannot learn any more!"
        elif subject == 'Maths':
            if float(self.eduMaths) <= 9.0:
                self.eduMaths = str(float(self.eduMaths) + 1.0)
            elif float(self.eduMaths) > 9.0 and float(self.eduMaths) < 10.0:
                self.eduMaths = '10.0'
            elif float(self.eduMaths) == 10.0:
                print "Your Potato Head has gained the highest level of qualifications in this subject! It cannot learn any more!"
        else:
            print "That subject is not an option..."
            print "Please choose either Science, English or Maths"
        self.time = str(int(self.time) + 1) #Pass time

    #Increase Health:
    def phGoToDoctor(self):
        self.health = '10.0'
        self.time = str(int(self.time) + 1) #Pass time

    #Sleep: Age, change stats:              #(Time Passes)
    def phSleep(self):
        self.time = '0'                   #Resets time for next 'day' (can do more things next day)
        #Increase hunger:
        if float(self.hunger) <= 5.0:
            self.hunger = str(float(self.hunger) + 5.0)
        elif float(self.hunger) > 5.0:
            self.hunger = '10.0'
        #Lower Fitness:
        if float(self.fitness) >= 0.5:
            self.fitness = str(float(self.fitness) - 0.5)
        elif float(self.fitness) < 0.5:
            self.fitness = '0.0'
        #Lower Health:
        if float(self.health) >= 0.5:
            self.health = str(float(self.health) - 0.5)
        elif float(self.health) < 0.5:
            self.health = '0.0'
        #Lower Happiness:
        if float(self.happiness) >= 2.0:
            self.happiness = str(float(self.happiness) - 2.0)
        elif float(self.happiness) < 2.0:
            self.happiness = '0.0'
        #Increase the Potato Head's age:
        self.age = str(float(self.age) + 0.1)

The game is still under development – There may be parts of modules that aren’t complete, but I don’t think they’re causing the problem

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-13T18:27:27+00:00Added an answer on May 13, 2026 at 6:27 pm

    First all, i must say you are writing good code for a beginner, though you can improve startNewGame by writing a function, for getting user input in a loop, instead of writing same code again and again.

    I copied your code and it runs without problem, though i did a small change

    you are doing

    MCreatePH = startGame()
    

    but you haven’t defined startGame? so if replace that with startNewGame it works

    MCreatePH = startNewGame()
    

    so may be you have defined startGame somewhere and it returns nothing?

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I'm parsing an RSS feed that has an &#8217; in it. SimpleXML turns this
I have this code: - (void)parser:(NSXMLParser *)parser foundCDATA:(NSData *)CDATABlock { NSString *someString = [[NSString
I have a bunch of posts stored in text files formatted in yaml/textile (from
We're building an app, our first using Rails 3, and we're having to build
I am trying to loop through a bunch of documents I have to put
I'm making a simple page using Google Maps API 3. My first. One marker
I have some data like this: 1 2 3 4 5 9 2 6

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.