[英]checking the position of an item in one list to another list
我正在尝试制作琐事游戏,唯一的问题是我很难检查正确的答案。 这是我的其中一个问题的代码
Question2 = random.choice(mylist)
print (Question2)
Userinput = input()
if(Question2.position == Question2answer.position):
print('Yes, that is correct!')
else:
print('Sorry, wrong answer')
mylist.remove(Question2)
我试图通过检查列表中的位置来检查用户对问题2的回答是问题2的答案,而不是问题4的答案。
简单的解决方案是为作业使用正确的数据类型。
例如,如果您的mylist
是(question, answer)
对的列表,而不是两个单独的列表;
Question2, Answer2 = random.choice(mylist)
print(Question2)
Userinput = input()
if Userinput == Answer2:
print('Yes, that is correct!')
else:
print('Sorry, wrong answer')
mylist.remove((Question2, Answer2))
或者,或者用字典而不是列表:
Question2 = random.choice(mydict)
print(Question2)
Userinput = input()
if Userinput == mydict[Question2]:
print('Yes, that is correct!')
else:
print('Sorry, wrong answer')
del mylist[Question2]
为什么字典更好? 好吧,一方面,对于列表,您必须反复搜索列表以查找所需的值,例如, mylist.remove
开始,并将每个元素与您的值进行比较,直到找到正确的值。 如果您有重复的值,则除了速度慢和过于复杂之外,如果您有重复的值(例如,尝试a = [1, 2, 3, 1]
a.remove(value)
a = [1, 2, 3, 1]
,然后value = a[0]
,然后a.remove(value)
,看看会发生什么……)。
但是,如果您无法更改数据结构,则始终可以使用zip
即时将一对单独的列表zip
为一个成对的单个列表:
Question2, Answer2 = random.choice(zip(mylist, myanswers))
print(Question2)
Userinput = input()
if Userinput == Answer2:
print('Yes, that is correct!')
else:
print('Sorry, wrong answer')
mylist.remove(Question2)
myanswers.remove(Answer2)
您可以使用namedtuple作为数据容器。
from collections import namedtuple
import random
Question = namedtuple('Question', ['question', 'answer'])
questions = [
Question('Question 1', 'Answer 1'),
Question('Question 2', 'Secret'),
Question('Question 3', '3'),
]
q = random.choice(questions)
print("%s ?" % q.question)
user_input = raw_input().strip()
if(q.answer == user_input):
print('Yes, that is correct!')
else:
print('Sorry, wrong answer')
questions.remove(q)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.