[英]Random word generator- 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'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()
如果你想從遠程字典中提取,這里有幾種方法。 requests 庫使這變得非常容易(您必須pip install requests
):
import requests
word_site = "https://www.mit.edu/~ecprice/wordlist.10000"
response = requests.get(word_site)
WORDS = response.content.splitlines()
或者,您可以使用內置的 urllib2。
import urllib2
word_site = "https://www.mit.edu/~ecprice/wordlist.10000"
response = urllib2.urlopen(word_site)
txt = response.read()
WORDS = txt.splitlines()
對於 Python3,以下代碼從網絡上抓取單詞列表並返回一個列表。 答案基於 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'
有一個包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()
網上有很多字典文件——如果你在 linux 上,很多(所有?)發行版都帶有 /etc/dictionaries-common/words 文件,你可以輕松解析( words = open('/etc/dictionaries-common/words').readlines()
,例如)供使用。
from urllib.request import Request, urlopen
url="https://svnweb.freebsd.org/csrg/share/dict/words?revision=61569&view=co"
req = Request(url, headers={'User-Agent': 'Mozilla/5.0'})
web_byte = urlopen(req).read()
webpage = web_byte.decode('utf-8')
print(webpage)
隨機化前 500 個單詞
from urllib.request import Request, urlopen
import random
url="https://svnweb.freebsd.org/csrg/share/dict/words?revision=61569&view=co"
req = Request(url, headers={'User-Agent': 'Mozilla/5.0'})
web_byte = urlopen(req).read()
webpage = web_byte.decode('utf-8')
first500 = webpage[:500].split("\n")
random.shuffle(first500)
print(first500)
輸出
['abnegation', 'able', 'aborning', 'Abigail', 'Abidjan', 'ablaze', 'abolish', 'abbe', 'above', 'abort', 'aberrant', 'aboriginal', ' aborigine', 'Aberdeen', 'Abbott', 'Abernathy', 'aback', 'abate', 'abominate', 'AAA', 'abc', 'abed', 'abhorred', 'abolition', 'ablate' , 'abbey', 'abbot', 'Abelson', 'ABA', 'Abner', 'abduct', 'aboard', 'Abo', 'abalone', 'a', 'abhorrent', 'Abelian', ' aardvark','Aarhus','Abe','abjure','abeyance','Abel','abetting','abash','AAAS','abdicate','abbreviate','abnormal','abject' , '算盤', 'abide', 'abominable', 'abode', 'abandon', 'abase', 'ababa', 'abdominal', 'abet', 'abbas', 'abdomen', 'abdomen', '教唆”、“比比皆是”、“亞倫”、“憎惡”、“洗禮”、“禁欲”、“關於”]
import random
import string
letters = string.ascii_letters
x = "".join(random.sample(letters,5))
print(x)
上面, letters
將包含所有 ASCII 字母字符(小寫和大寫),如下所示:
>>> print(letters)
>>> 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
使用random.sample
將根據您想要的數字( random.sample(<string>, <# of random parts>
string
random.sample(<string>, <# of random parts>
)。
>>> random.sample(letters, 5)
>>> ['j', 'e', 'u', 'g', 'k']
最后,
x = "".join(...)
將因為 "" 將返回的列表連接在一起,沒有空格"".
可以改為" ".
如果你想在每個字母之間有空格。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.