Python Vocab Checker

时间:2013-05-08 01:59:44

标签: python vocabulary

我正在寻找为我的小表弟创建一个基于Python的词汇检查器来用于学习。该程序的目的是显示一个单词,然后她将需要输入定义并进行检查。我想知道最好的方法是使用数组列表:

vocab = ['Python','OSX']
definition = ['programming language','operating system']

这是最好的方法吗?如果是这样,我如何让程序随机显示词汇然后检查定义。任何帮助将不胜感激。谢谢你们。

确定。所以这就是我到目前为止所拥有的......     #Russian翻译计划

import os
import random

#Asks users if they want to add more vocabulary
word_adder=raw_input("Add more words? If yes, press 1: ")
with open("Russian_study.txt","a") as f:
while word_adder=="1":
    word=raw_input("Enter word: ")
    translation=raw_input("Word translation: ")
    f.write("'{0}':{1},".format(word,translation))
    word_adder=raw_input("Add another word? If yes, press 1: ")

#Checks to see if file exists, if not one is created
with open("Russian_study.txt","a") as f:
pass

os.system('clear')
print("Begin Quiz")

#Begin testing user
with open("Russian_study.txt","r") as f:
from random import choice
question = choice(list(f))
result = raw_input('{0} is '.format(question))
print('Correct' if result==f[question] else ':(')

但是,我的输出是

Begin Quiz
'Один':'One', is 

如何让它只显示Один并检查用户输入?

2 个答案:

答案 0 :(得分:3)

使用字典:

d={'Python':'programming language', 'OSX':'operating system'}

from random import choice
q = choice(list(d))
res = input('{0} is:'.format(q))
print('yay!' if res == d[q] else ':(')

[如果您使用的是python< 3.0,使用raw_input()代替input()]

从文件写入/读取的最简单(并且不安全!)方式:

with open('questions.txt', 'w') as f:
    f.write(repr(d))

'questions.txt'将有这一行:

`{'Python':'programming language', 'OSX':'operating system'}`

所以阅读它你可以做到

with open('questions.txt') as f:
    q=eval(f.read())

现在q和d相等。不要将此方法用于“真实”代码,因为'questions.txt'可能包含恶意代码。

答案 1 :(得分:0)

1)您可以使用random.choice()随机选择词汇列表中的元素(或词典的键())。

2)确定答案何时接近定义是比较棘手的。您只需在答案字符串中搜索某些关键字即可。或者如果你想变得更复杂,你可以计算两个弦之间的Levenshtein距离。你可以在这里阅读L距离:http://en.wikipedia.org/wiki/Levenshtein%5Fdistance。并且有在线计算L距离的python配方。