-1

我正在尝试用 Python 编写一些简单的抽认卡(仍在学习!)。

我可以读入一个文本文件,分成两个列表(关键字和定义),找到一个随机关键字(chosenKeyword)并从关键字列表中返回关键字及其索引值,但是当我尝试使用该索引值时(这将是在第二个列表中与我在同一时间逐行读取它们完全相同)以匹配定义列表我一直ValueError告诉我该项目不在列表中(当我手动检查时)。问题出在我的possibleAnswers功能上,但我无法弄清楚它是什么——任何帮助都会很棒。

# declare an empty list for answers
answers = []

if keyword.index(chosenKey) == define.index(chosenKey):
    answers.append()
else:
    pass


# find the matching definition for the keyword and add to the answer list

wrongAnswers = random.sample(define,2)
while define.index(chosenKey) != wrongAnswers:
    answers.append(wrongAnswers)
    print(answers)
4

2 回答 2

1

list.index()返回列表中给定值的索引:

>>> ['spam', 'ham', 'eggs'].index('ham')
1

ValueError但在列表中未找到该项目时引发 a :

>>> ['spam', 'ham', 'eggs'].index('monty')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: 'monty' is not in list

如果您有索引,只需在列表中使用索引:

>>> ['spam', 'ham', 'eggs'][1]
'ham'

如果您想配对两个列表的元素,请改用该zip()函数

for kw, definition in zip(keyword, define):
    if kw == definition:
        # the values match at the same index.
于 2013-10-28T22:36:45.817 回答
0

我认为您在显示的代码中有一些问题

这是第一个:

if keywords.index(chosenKey) == definitions.index(chosenKey):

据我了解,您想在答案列表中添加正确答案。

我会这样做:

if chosenKey in keywords:
    answers.append(definitions[keywords.index(chosenKey)])
else:
    pass

第二部分似乎有人试图获得两个随机选项,其中一个应该是正确答案

wrongAnswers = random.sample(define,2)
while definitions[keywords.index(chosenKey)] not in wrongAnswers:        
    wrongAnswers = random.sample(define,2)
answers = wrongAnswers
print(answers)
于 2013-10-28T22:57:25.027 回答