pythonrandompython-3.3word-list

Random word generator- Python


So i'm basically working on a project where the computer takes a word from a list of words and jumbles it up for the user. there's only one problem: I don't want to keep having to write tons of words in the list, so i'm wondering if there's a way to import a ton of random words so even I don't know what it is, and then I could enjoy the game too? This is the coding of the whole program, it only has 6 words that i put in:

import random

WORDS = ("python", "jumble", "easy", "difficult", "answer",  "xylophone")
word = random.choice(WORDS)
correct = word
jumble = ""
while word:
    position = random.randrange(len(word))
    jumble += word[position]
    word = word[:position] + word[(position + 1):]
print(
"""
      Welcome to WORD JUMBLE!!!

      Unscramble the leters to make a word.
      (press the enter key at prompt to quit)
      """
      )
print("The jumble is:", jumble)
guess = input("Your guess: ")
while guess != correct and guess != "":
    print("Sorry, that's not it")
    guess = input("Your guess: ")
if guess == correct:
    print("That's it, you guessed it!\n")
print("Thanks for playing")

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

Solution

  • Reading a local word list

    If you're doing this repeatedly, I would download it locally and pull from the local file. *nix users can use /usr/share/dict/words.

    Example:

    word_file = "/usr/share/dict/words"
    WORDS = open(word_file).read().splitlines()
    

    Pulling from a remote dictionary

    If you want to pull from a remote dictionary, here are a couple of ways. The requests library makes this really easy (you'll have to pip install requests):

    import requests
    
    word_site = "https://www.mit.edu/~ecprice/wordlist.10000"
    
    response = requests.get(word_site)
    WORDS = response.content.splitlines()
    

    Alternatively, you can use the built in urllib2.

    import urllib2
    
    word_site = "https://www.mit.edu/~ecprice/wordlist.10000"
    
    response = urllib2.urlopen(word_site)
    txt = response.read()
    WORDS = txt.splitlines()