Je travaille donc essentiellement sur un projet dans lequel l’ordinateur prend un mot dans une liste de mots et le met en ordre pour l’utilisateur. il n'y a qu'un seul problème: je ne veux pas continuer à avoir à écrire des tonnes de mots dans la liste, alors je me demande s'il y a un moyen d'importer une tonne de mots aléatoires alors même je ne sais pas ce que c'est, et alors je pourrais profiter du jeu aussi? Ceci est le codage de tout le programme, il ne contient que 6 mots que je mets dans:
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")
Si vous faites cela à plusieurs reprises, je le téléchargerais localement et le extrairais du fichier local. * Les utilisateurs nix peuvent utiliser /usr/share/dict/words
.
Exemple:
Word_file = "/usr/share/dict/words"
WORDS = open(Word_file).read().splitlines()
Si vous souhaitez extraire un dictionnaire distant, voici quelques manières. La bibliothèque de requêtes rend cela très facile (vous devrez 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()
Alternativement, vous pouvez utiliser l'urllib2 intégré.
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()
Pour Python3, le code suivant récupère la liste de mots du Web et renvoie une liste. Réponse basée sur réponse acceptée ci-dessus par 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()
Sortie:
>>> words
['a', 'AAA', 'AAAS', 'aardvark', 'Aarhus', 'Aaron', 'ABA', 'Ababa',
'aback', 'abacus', 'abalone', 'abandon', 'abase', 'abash', 'abate',
'abbas', 'abbe', 'abbey', 'abbot', 'Abbott', 'abbreviate', ... ]
Et pour générer (parce que c'était mon objectif) une liste de 1) mots uniquement en majuscules, 2) uniquement des mots "nommer comme" et 3) un nom aléatoire de type réaliste, mais amusant:
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)])
Et quelques noms aléatoires:
>>> 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'
Il existe un certain nombre de fichiers de dictionnaire disponibles en ligne - si vous êtes sur Linux, beaucoup de distributions (toutes?) Sont livrées avec un fichier/etc/dictionaries-common/words que vous pouvez facilement analyser (words = open('/etc/dictionaries-common/words').readlines()
, par exemple) .
>>> 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
Sortie
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",""))