user2123672
user2123672

Reputation: 21

Python code to generate random entries from multiple lists

I'm new to Python and am trying to write a code that will generate the core elements of a story by choosing one random entry from the lists [characters] [traits] [themes] [locations] and [lines]. The code I have written is below.

I have 2 questions:

1) At the moment the code will allow me to create new entries in each list but when I close down Python and restart the program the entries I created are gone. How can I make it so that new entries are permanently stored in the lists? Do I need some kind of database?

2) The code for 6. Storybox - the main thing I want the program to do! - is not working. Any suggestions as to how I can get Python to print a randomly selected entry from each list?

Thanks in advance for your help.

#Storybox program
#Generates a random selection of my story ideas


characters = []
traits = []
locations = []
themes = []
lines = []

choice = None

while choice != "0":

    print(
     """

Storybox:

0 - Exit
1 - Add character
2 - Add trait
3 - Add location
4 - Add theme
5 - Add line
6 - Generate Story
7 - View all entries

"""
)

    choice = input("Choice: ")
    print()


#exit
    if choice == "0":
        print("Goodbye")

#add a character
    elif choice == "1":
        character = input("Enter character: ")
        characters.append(character)

#add a trait
    elif choice == "2":
        trait = input("Enter character trait: ")
        traits.append(trait)

#add a location
    elif choice == "3":
        location = input("Enter location: ")
        locations.append(location)

#add a theme
    elif choice == "4":
        theme = input("Enter theme: ")
        themes.append(theme)

#add good lines
    elif choice == "5":
        line = input("Enter good line: ")
        lines.append(line)


#Generate storybox
    elif choice == "6":
        print("Your storybox is....")
        storyboxcharacter = random.choice(characters)
        print(storyboxcharacter)
        storyboxtrait = random.choice(traits)
        print(storyboxtrait)
        storyboxtheme = random.choice(themes)
        print(storyboxtheme)
        storyboxlocation = random.choice(locations)
        print(storyboxlocation)
        storyboxline = random.choice(lines)
        print(storyboxline)


#Display all entries so far
    elif choice == "7":
        print("Characters:")
        for character in characters:
            print(character)

        print("Traits:")
        for trait in traits:
            print(trait)

        print("Themes:")
        for theme in themes:
            print(theme)

        print("Locations:")
        for location in locations:
            print(location)

        print("Good lines:")
        for line in lines:
            print(line)

input("\n\nPress the enter key to exit.")

Upvotes: 2

Views: 744

Answers (1)

Matt
Matt

Reputation: 323

1) Yes, you'll need to store the data somehow, either in a text file or in a database. The database would be overkill at this point, so I'd recommend something like json.

2) deleted randint solution - random.choice is definitely better

Upvotes: 1

Related Questions