Подтвердить что ты не робот

Генератор случайных слов - Python

Итак, я в основном работаю над проектом, в котором компьютер берет слово из списка слов и смешает его для пользователя. есть только одна проблема: я не хочу постоянно писать тонны слов в списке, поэтому мне интересно, есть ли способ импортировать тонну случайных слов, чтобы даже я не знал, что это такое, и то я тоже мог бы наслаждаться игрой? Это кодирование всей программы, у меня есть только 6 слов, которые я ввел:

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 not it")
    guess = input("Your guess: ")
if guess == correct:
    print("That it, you guessed it!\n")
print("Thanks for playing")

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

Ответ 1

Чтение локального списка слов

Если вы делаете это несколько раз, я бы загрузил его локально и вытащил из локального файла. * Пользователи nix могут использовать /usr/share/dict/words.

Пример:

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

Вытягивание из удаленного словаря

Если вы хотите извлечь из удаленного словаря, вот несколько способов. Библиотека запросов делает это очень просто (вам нужно pip install requests):

import requests

word_site = "http://svnweb.freebsd.org/csrg/share/dict/words?view=co&content-type=text/plain"

response = requests.get(word_site)
WORDS = response.content.splitlines()

В качестве альтернативы вы можете использовать встроенный urllib2.

import urllib2

word_site = "http://svnweb.freebsd.org/csrg/share/dict/words?view=co&content-type=text/plain"

response = urllib2.urlopen(word_site)
txt = response.read()
WORDS = txt.splitlines()

Ответ 2

Решение для Python 3

Для Python3 следующий код берет список слов из сети и возвращает список. Ответ основан на принятом ответе Кайла Келли.

import urllib.request

word_url = "http://svnweb.freebsd.org/csrg/share/dict/words?view=co&content-type=text/plain"
response = urllib.request.urlopen(word_url)
long_txt = response.read().decode()
words = long_txt.splitlines()

Выход:

>>> words
['a', 'AAA', 'AAAS', 'aardvark', 'Aarhus', 'Aaron', 'ABA', 'Ababa',
 'aback', 'abacus', 'abalone', 'abandon', 'abase', 'abash', 'abate',
 'abbas', 'abbe', 'abbey', 'abbot', 'Abbott', 'abbreviate', ... ]

И создать (потому что это была моя цель) список из 1) только заглавных слов, 2) только слов типа "name like" и 3) своего рода реалистичного, но забавного звучащего случайного имени:

import random
upper_words = [word for word in words if word[0].isupper()]
name_words  = [word for word in upper_words if not word.isupper()]
rand_name   = ' '.join([name_words[random.randint(0, len(name_words))] for i in range(2)])

И несколько случайных имен:

>>> for n in range(10):
        ' '.join([name_words[random.randint(0,len(name_words))] for i in range(2)])

    'Semiramis Sicilian'
    'Julius Genevieve'
    'Rwanda Cohn'
    'Quito Sutherland'
    'Eocene Wheller'
    'Olav Jove'
    'Weldon Pappas'
    'Vienna Leyden'
    'Io Dave'
    'Schwartz Stromberg'

Ответ 3

Существует множество файлов словарей, доступных онлайн - если вы работаете в Linux, многие дистрибутивы (все?) поставляются с файлом /etc/dictionaries -common/words, который вы можете легко проанализировать (words = open('/etc/dictionaries-common/words').readlines(), например) для использования.

Ответ 4

введите слова онлайн

>>> words = requests.get("http://svnweb.freebsd.org/csrg/share/dict/words?view=co&content-type=text/plain").content.splitlines()
>>> x = 0
>>> for w in words:
...  print(str(x) + str(w).replace("'b",""))
...  x += 1

Выход

25477b'zooplankton'
25478b'Zorn'
25479b'Zoroaster'
25480b'Zoroastrian'
25481b'zounds'
25482b"z's"
25483b'zucchini'
25484b'Zulu'
25485b'Zurich'
25486b'zygote'

Сохраните имена на локальном компьютере

with open("dictionary.txt",'w') as file:
    for w in words:
        file.write(str(x) + str(w).replace("'b",""))

Ответ 5

Есть пакет random_word, который мог бы реализовать этот запрос очень удобно:

 $ pip install random-word

from random_word import RandomWords
r = RandomWords()

# Return a single random word
r.get_random_word()
# Return list of Random words
r.get_random_words()
# Return Word of the day
r.word_of_the_day()