obtener - modulo random python 3
Generador de palabras al azar-Python (4)
Leyendo una lista de palabras local
Si lo haces repetidamente, lo descargaría localmente y obtendré el archivo local. * Los usuarios de nix pueden usar /usr/share/dict/words
.
Ejemplo:
word_file = "/usr/share/dict/words"
WORDS = open(word_file).read().splitlines()
Tirando de un diccionario remoto
Si desea extraer de un diccionario remoto, aquí hay un par de maneras. La biblioteca de solicitudes lo hace realmente fácil (tendrás que 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()
Alternativamente, puede utilizar el construido en 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()
Así que básicamente estoy trabajando en un proyecto donde la computadora toma una palabra de una lista de palabras y la confunde para el usuario. solo hay un problema: no quiero seguir teniendo que escribir toneladas de palabras en la lista, así que me pregunto si hay una manera de importar toneladas de palabras al azar, así que incluso no sé qué es, ¿Entonces podría disfrutar el juego también? Esta es la codificación de todo el programa, solo tiene 6 palabras que puse en:
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")
Solución para Python 3
Para Python3, el siguiente código toma la lista de palabras de la web y devuelve una lista. Respuesta basada en la respuesta aceptada por 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()
Salida:
>>> words
[''a'', ''AAA'', ''AAAS'', ''aardvark'', ''Aarhus'', ''Aaron'', ''ABA'', ''Ababa'',
''aback'', ''abacus'', ''abalone'', ''abandon'', ''abase'', ''abash'', ''abate'',
''abbas'', ''abbe'', ''abbey'', ''abbot'', ''Abbott'', ''abbreviate'', ... ]
Y para generar (porque era mi objetivo) una lista de 1) solo palabras en mayúsculas, 2) solo "nombre como" palabras, y 3) un nombre aleatorio que suena de un modo realista pero divertido:
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)])
Y algunos nombres al azar:
>>> 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''
Hay una serie de archivos de diccionarios disponibles en línea: si está en Linux, muchas (¿todas?) Distros vienen con un archivo / etc / dictionary-common / words, que puede analizar fácilmente ( words = open(''/etc/dictionaries-common/words'').readlines()
, eg) para usar.
obtener las palabras en línea
>>> 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
Salida
25477b''zooplankton''
25478b''Zorn''
25479b''Zoroaster''
25480b''Zoroastrian''
25481b''zounds''
25482b"z''s"
25483b''zucchini''
25484b''Zulu''
25485b''Zurich''
25486b''zygote''
Almacena los nombres en pc local
with open("dictionary.txt",''w'') as file:
for w in words:
file.write(str(x) + str(w).replace("''b",""))