gpt4 book ai didi

python - 如何使用字典而不是大量 if/else 语句在 Python 中创建测验?

转载 作者:太空宇宙 更新时间:2023-11-04 07:17:46 25 4
gpt4 key购买 nike

我正在做一个是/否问题的测验,根据问题回答是/否会奖励不同数量的分数,在每个问题之后,这些分数将被添加到总数中并在最后显示。

但是,测验中有大约 50 个问题,这意味着大量的 if/else 语句。有没有一种方法可以使用字典和循环或类似的东西来显着减少程序的长度?

edit 这重复了很多次是我试图避免的。我正在考虑在每个问题后添加一个变量 i 并向其添加 1,然后查找下一个问题的索引。但这是否只有列表才有可能?

print "The following are y/n questions."
total = 0

q1 = raw_input("Do you exercise daily? ")
if q1 == "y":
total += 1
else:
total = total

print total

最佳答案

创建字典列表。每个元素都是一个问题以及是和否的分值。然后您可以轻松地遍历列表。

qa = [{"question": "Do you exercise?", "yes": 10, "no": 0},
"question": "Do you smoke?", "yes": -10, "no": 0},
...
]
for item in qa.items():
answer = raw_input("Do you exercise daily? ")
score = item.get(answer)
total = total + score

当然,您需要添加一些额外的代码来处理用户没有按字面意思回答"is"或“否”的情况,但这不会影响此解决方案。重点是,您创建一个表示问题的对象,以及可能的答案和分数,然后迭代这些对象的列表。

您甚至可以更进一步,创建自定义类。你可以这样做,例如:

class Question(object):
def __init__(self, question, yes=0, no=0):
self.question = question
self.yes = yes
self.no = no

questions = [Question("Do you exercise?", yes=10, no=0),
Question("Do you smoke?", yes=0, no=-10),
...
]

for question in questions:
answer = raw_input(question.question)
...

关于python - 如何使用字典而不是大量 if/else 语句在 Python 中创建测验?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34724802/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com