我是 Python 新手(也是 stackoverflow 的新手,你会很容易注意到它!)
我实际上正在尝试编写一个可以按如下方式工作的程序:用户启动程序。有人问他是否要输入一个新单词,以及该单词的翻译。单词及其翻译存储在文件 (data.txt) 中。当他完成添加新单词时,测验开始。该程序选择一个单词,并要求用户进行翻译。如果答案与文件中的翻译相似,则程序返回“Great !”,如果不是,则打印正确答案。
如您所见,这非常简单。我的问题是处理文件,尤其是检索文件中的内容并正确使用它。
这是我的代码:
#!/usr/bin/python3.2
# -*-coding:Utf-8 -*
#Vocabulary/translation quiz
import os
import random
keep_adding=input("Would you like to add a new word ? If yes, press \"O\" : ")
while keep_adding=="O":
entry=[]
word=input("Enter a word : ")
word=str(word)
entry.append(word)
translation=input("And its translation : ")
translation=str(translation)
entry.append(translation)
entry=str(entry)
f = open("data.txt","a")
f.write(entry)
f.close()
keep_adding=input("To continue, press \"O\" : ")
f = open("data.txt","a") #in case the file doesn't exist, we create one
f.close()
os.system('clear')
print("* * * QUIZ STARTS ! * * *")
f = open("data.txt","r")
text = f.readlines()
text = list(text)
print("What is the translation for : ",text[0], "?")
answer = input("Answer : ")
if (answer == text[1]):
print("Congratulations ! That's the good answer !")
else:
print("Wrong. The correct answer was : ",text[1])
非常感谢你的帮助 !
编辑:确实对我的代码进行了一些更正。我得到的是以下内容:
* * * QUIZ STARTS ! * * *
What is the translation for : ['alpha', 'bravo']['one', 'two']['x', 'y'] ?
Answer : alpha
Traceback (most recent call last):
File "Python_progs/voc.py", line 43, in <module>
if (answer == text[1]):
IndexError: list index out of range
在我的文件中,我有这个:
['alpha', 'bravo']['one', 'two']['x', 'y']
所以实际上,我只想得到问题中的第一个词(即 alpha),并且在回答 bravo 时,把它做对。