だから私は基本的に、コンピューターが単語のリストから単語を取得し、ユーザーのためにそれをごちゃ混ぜにするプロジェクトに取り組んでいます。問題は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")
これを繰り返し行う場合は、ローカルでダウンロードし、ローカルファイルから取得します。 * 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()
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'
多くの辞書ファイルがオンラインで利用可能です-Linuxを使用している場合、多くの(すべて?)ディストリビューションに/ etc/dictionaries-common/wordsファイルが付属しており、簡単に解析できます(words = open('/etc/dictionaries-common/words').readlines()
、例)使用するため。
パッケージがあります 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()
>>> 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",""))