web-dev-qa-db-ja.com

ランダムワードジェネレーター-Python

だから私は基本的に、コンピューターが単語のリストから単語を取得し、ユーザーのためにそれをごちゃ混ぜにするプロジェクトに取り組んでいます。問題は1つだけです。リストに大量の単語を書き続ける必要はないので、大量のランダムな単語をインポートして、それが何であるかさえわからない方法があるのではないかと考えています。それから私もゲームを楽しむことができますか?これはプログラム全体のコーディングで、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'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")
25

ローカルの単語リストを読む

これを繰り返し行う場合は、ローカルでダウンロードし、ローカルファイルから取得します。 * 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()
61
Kyle Kelley

Python 3のソリューション

Python3の場合、次のコードはWebからWordリストを取得し、リストを返します。 Kyle Kelleyによる 上記の受け入れられた回答 に基づく回答。

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)「名前のような」単語のみ、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'
4
amoodie

多くの辞書ファイルがオンラインで利用可能です-Linuxを使用している場合、多くの(すべて?)ディストリビューションに/ etc/dictionaries-common/wordsファイルが付属しており、簡単に解析できます(words = open('/etc/dictionaries-common/words').readlines()、例)使用するため。

2
a p

パッケージがあります 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()
2
Freman Zhang

オンラインで言葉を得る

>>> 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'

ローカルPCに名前を保存する

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