我正在寻找为我的小表弟创建一个基于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
如何让它只显示Один并检查用户输入?
答案 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配方。