0

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

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

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

好的。所以这就是我到目前为止所拥有的......#Russian Translation Program

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 

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

4

2 回答 2

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”可能包含恶意代码。

于 2013-05-08T02:01:39.133 回答
0

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

2) 确定答案何时足够接近定义是比较棘手的。您可以简单地在答案字符串中搜索某些关键字。或者如果你想变得更复杂,你可以计算两个字符串之间的 Levenshtein 距离。您可以在此处阅读有关 L 距离的信息:http ://en.wikipedia.org/wiki/Levenshtein%5Fdistance 。并且有在线计算L距离的python食谱。

于 2013-05-08T02:03:53.803 回答