2015-05-20 31 views
2

这些字典正在杀死我!询问用户索引的列表,Python

这是我的JSON(问题)包含2个字典的列表。

[ 
{ 
"wrong3": "Nope, also wrong", 
"question": "Example Question 1", 
"wrong1": "Incorrect answer", 
"wrong2": "Another wrong one", 
"answer": "Correct answer" 
}, 
{ 
"wrong3": "0", 
"question": "How many good Matrix movies are there?", 
"wrong1": "2", 
"wrong2": "3", 
"answer": "1" 
} 
] 

我想让用户搜索一个索引,然后列出该索引的值(如果有的话)。目前,我提示用户输入,然后查找问题索引,然后检查输入是否等于索引,现在即使输入了正确的索引,它也会返回False,False。我在正确的轨道上,但语义错误?或者我应该研究另一条路线?

import json 


f = open('question.txt', 'r') 
questions = json.load(f) 
f.close() 

value = inputSomething('Enter Index number: ') 

for i in questions: 
    if value == i: 
     print("True") 

    else: 
     print("False") 

回答

1

您正在遍历列表值。 for i in questions 将迭代列表值而不是列表索引,

您需要迭代列表的索引。为此你可以使用枚举。你应该试试这种方式..

for index, question_dict in enumerate(questions): 
    if index == int(value): 
     print("True") 

    else: 
     print("False") 
+0

我得到一个NameError,我没有定义? –

+0

看到我更新的答案.. – Zealous

+0

我仍然收到假,假。请注意我正在尝试从字典中的值中获取每个字典的索引号(在列表中)。 –

1

在Python中最好是not check beforehand, but try and deal with error if it occurs

这是遵循这种做法的解决方案。花点时间仔细看看这里的逻辑,它可能会帮助你在将来:

import json 
import sys 

    # BTW: this is the 'pythonic' way of reading from file: 
# with open('question.txt') as f: 
#  questions = json.load(f) 


questions = [ 
    { 
     "question": "Example Question 1? ", 
     "answer": "Correct answer", 
    }, 
    { 
     "question": "How many good Matrix movies are there? ", 
     "answer": "1", 
    } 
] 


try: 
    value = int(input('Enter Index number: ')) # can raise ValueError 
    question_item = questions[value] # can raise IndexError 
except (ValueError, IndexError) as err: 
    print('This question does not exist!') 
    sys.exit(err) 

# print(question_item) 

answer = input(question_item['question']) 

# let's strip whitespace from ends of string and change to lowercase: 
answer = answer.strip().lower() 

if answer == question_item['answer'].strip().lower(): 
    print('Good job!') 
else: 
    print('Wrong answer. Better luck next time!') 
+0

这真的很有帮助。谢谢。 –