2013-09-16 17 views
18

Also ich bin im Grunde arbeiten an einem Projekt, wo der Computer ein Wort aus einer Liste von Wörtern nimmt und es für den Benutzer verwirbelt. Es gibt nur ein Problem: Ich möchte nicht ständig Tonnen von Wörtern in die Liste schreiben, also frage ich mich, ob es eine Möglichkeit gibt, eine Tonne zufälliger Wörter zu importieren, selbst wenn ich nicht weiß, was es ist, und Dann könnte ich das Spiel auch genießen? Dies ist die Codierung des gesamten Programms, es hat nur 6 Worte, die ich in setzen:Zufälliges Wort Generator-Python

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") 
+1

eine Textdatei von Wörtern verwenden? '/ usr/share/dict/words' ist üblich * nix-Plattformen, oder es gibt andere Wordlisten, die Sie verwenden können ... –

+0

mögliches Duplikat von [Freie Wortliste zur programmatischen Verwendung?] (http://stackoverflow.com/questions/ 772922/free-word-list-for-use-programmatically) – Bakuriu

Antwort

43

eine lokale Wortliste Lese

Wenn Sie dies immer wieder tun, würde ich es lokal herunterladen und aus der lokalen Datei ziehen. * Nix-Benutzer können /usr/share/dict/words verwenden.

Beispiel:

word_file = "/usr/share/dict/words" 
WORDS = open(word_file).read().splitlines() 

von einem Remote-Wörterbuch Ziehen

Wenn Sie von einem Remote-Wörterbuch ziehen wollen, sind hier ein paar Möglichkeiten. Die Anfragen Bibliothek macht dies einfach (Sie werden zu pip install requests haben):

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() 

Alternativ Sie die integrierten urllib2 verwenden können.

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() 
+1

Vielen Dank Mann, das hat wirklich geholfen, ich habe Ihre Antwort als die akzeptierte Antwort und ich wählte :) – Infamouslyuseless

+0

Beachten Sie, dass der Link "http://www.freebsd.org/cgi/cvsweb.cgi/src/share/dict/web2?rev=1.12;content-type=text%2Fplain 'ist jetzt tot ... – Eric

+0

@Eric - :(Schätze, ich muss nur eine Wortliste hosten. –

1

Es gibt eine Reihe von Wörterbuchdateien online zur Verfügung - wenn Sie auf Linux, viel (? All) Distributionen werden mit einer Datei/etc/dictionaries-common/words geliefert, die Sie leicht parsen können (z. B. words = open('/etc/dictionaries-common/words').readlines()).

+0

Ich bin auf Windows 7 – Infamouslyuseless

+0

Nun, Google sagt gibt es eine Wortliste hier: http://www.gutenberg.org/ebooks/3201 –

+0

können Sie meinen Code bearbeiten , um zu sehen, wie es aussehen würde, wenn ich alle Wörter von dieser Webseite haben wollte? http://www.freebsd.org/cgi/cvsweb.cgi/src/share/dict/web2?rev=1.12;content-type=text%2Fplain – Infamouslyuseless

0

erhalten die Worte Online-

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

Ausgabe

25477b'zooplankton' 
25478b'Zorn' 
25479b'Zoroaster' 
25480b'Zoroastrian' 
25481b'zounds' 
25482b"z's" 
25483b'zucchini' 
25484b'Zulu' 
25485b'Zurich' 
25486b'zygote' 

Speichern Sie die Namen in lokalen PC

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