存储文本文件中的单词

时间:2015-09-17 09:21:41

标签: python

我是python的新手,我想知道有没有办法从10个单词的外部文件中取出1个单词并单独存储。

我正在创建一个单词记忆游戏,其中用户被显示一个单词列表然后在一定时间后被删除,并且单词将再次出现但是一个单词将是不同的并且他们必须猜测哪个单词已被取代。

该字将从外部文件中随机选择,但外部文件由10个字组成,其中9个将首先显示,1个存储为替代字。

有没有人有任何想法?

4 个答案:

答案 0 :(得分:1)

我在这里使用了unix词典,你可以随心所欲。更多资源here

import random
from copy import copy
''' Word game '''
with open('/usr/share/dict/words','r') as w:
    words = w.read().splitlines()

numWords = 10 
allWords = [words[i] for i in random.sample(range(len(words)),numWords)]

hiddenWord = allWords[0]
displayWords = allWords[1:]

print displayWords

choice = str((raw_input ('Ready? [y]es\n')))
choice = choice.strip()
if choice == 'y':
    indexToRemove = random.randint(0,len(displayWords))

    displayWordsNew = copy(displayWords)
    random.shuffle(displayWordsNew)
    displayWordsNew[indexToRemove] = hiddenWord

    print displayWordsNew
    word = str(raw_input ('Which is the different word\n'))
    if word == displayWordsNew[indexToRemove]:
        print "You got it right"
        print displayWords
        print displayWordsNew
    else:
        print "Oops, you got it wrong, but it's a difficult game! The correct word was"
        print displayWordsNew[indexToRemove]

结果:

["Lena's", 'Galsworthy', 'filliped', 'cadenza', 'telecasts', 'scrutinize', "candidate's", "kayak's", 'workman']
Ready?
y
["Lena's", 'workman', 'scrutinize', 'filliped', 'Latino', 'telecasts', "candidate's", 'cadenza', 'Galsworthy']
Which is the different word
telecasts
Oops, you got it wrong, but it's a difficult game! The correct word was
Latino

答案 1 :(得分:0)

  

我是python的新手,我想知道有没有办法取一个单词   来自10个单词的外部文件并单独存储。

有很多方法可以在文件中存储/引用变量。

如果你不介意一点点输入,只需将变量存储在.py文件中(记得使用正确的python语法):

 # myconfig.py:

var_a = 'Word1'

var_b = 'Word2'

var_c = 'Word3'

等...

将文件本身用作模块

from myconfig import *

(这将允许您引用文本文件中的所有变量。)

如果您只想引用单个变量,只需导入您想要的变量

from myconfig import var_a, var_b

(这将让你引用var_a和var_b,但没有其他内容)

答案 2 :(得分:0)

你应该试试这个:

foo = open("file.txt", mode="r+")

如果单词在不同的行上:

words = foo.readlines()

或者如果单词用空格分隔:

words = foo.read().split(" ")

试试这个......

答案 3 :(得分:0)

如果您有一个输入文件,例如“新行中的一个单词”,请执行以下操作:

>>> open("C:/TEXT.txt").read()
'FISH\nMEAT\nWORD\nPLACE\nDOG\n'

然后split列表中的字符串:

>>> open("C:/Work/TEXT.txt").read().split('\n')
['FISH', 'MEAT', 'WORD', 'PLACE', 'DOG', '']

哦......最后strip新行:

>>> open("C:/Work/TEXT.txt").read().strip().split('\n')
['FISH', 'MEAT', 'WORD', 'PLACE', 'DOG']

要从列表范围替换使用random.choice

>>> import random
>>> listOfWords = open("C:/Work/TEXT.txt").read().strip().split('\n')
>>> listOfWords
['FISH', 'MEAT', 'WORD', 'PLACE', 'DOG']
>>> random.choice(range(len(listOfWords)))
3
>>> listOfWords[random.choice(range(len(listOfWords)))] = 'NEW_WORD'
>>> listOfWords
['FISH', 'MEAT', 'NEW_WORD', 'PLACE', 'DOG']

如果你想改组一个新名单:

>>> random.shuffle(listOfWords)
>>> listOfWords
['PLACE', 'NEW_WORD', 'FISH', 'DOG', 'MEAT']