基于对多个问题的回答的不同输出(Python)

时间:2015-02-25 03:13:16

标签: python python-2.7

我正在尝试创建一个调查问卷,其中询问多个是/否问题,并且在收到所有答案后,根据提供的答案组合显示不同的输出。

例如,如果有三个问题并且有人回答否,那么是的,他们会看到一个输出(我将创建一个简单的句子),但如果其他人回答是,否,是的,他们会最后看到不同的回应。我不想在每个问题之后提供反馈,只有在所有问题都得到解答后才能提供。

我试图使用if / else,但这似乎并不适用于我的目的(至少我正在这样做,但我对Python很新!)。对不起,我没有多少工作,但我正在努力学习,并且在Google搜索后无法使用谷歌搜索。谢谢!!

编辑:这是我一直在尝试的。有没有办法延伸这个?我所做的是基于我对Python的有限知识。

female = raw_input("Are you female?")
over18 = raw_input("Are you over 18?")
shopping = raw_input("Do you like to go shopping?")

然后我知道如何做

之类的事情
if female=="yes":
    print "blahblah"
else:
    print "something else"

但我不知道如何使用所有三个响应来为打印内容做出贡献。我也无法弄清楚如何将每个问题限制为是/否答案。

编辑2:

我可以使用多个if语句,如下所示吗?我知道如何使用一个响应来改变输出,但只有一个输出有三个影响只是让我循环。

female = raw_input("Are you female?")
over18 = raw_input("Are you over 18?")
shopping = raw_input("Do you like to go shopping?")
if (female=="yes" and over18=="yes" and shopping=="yes"):
    print "1"
if (female=="yes" and over18=="yes" and shopping=="no"):
    print "2"
if (female=="yes" and over18=="no" and shopping=="no"):
    print "3"
if (female=="yes" and over18=="no" and shopping=="yes"):
    print "4"
if (female=="no" and over18=="yes" and shopping=="yes"):
    print "5"
if (female=="no" and over18=="yes" and shopping=="no"):
    print "6"
if (female=="no" and over18=="no" and shopping=="yes"):
    print "7"
if (female=="no" and over18=="no" and shopping=="no"):
    print "8"
else:
    print "invalid"

看起来它的功能相对较好,但无论我使用它的“是”和“否”的组合,它都会给我正确的数字输出,但也会说“无效”。但是,如果我取出其他内容,它不会将答案限制为“是”或“否”,是吗?

1 个答案:

答案 0 :(得分:2)

我遇到的一种方法是制作一个由是/否响应元组键入的字典 - 每个问题一个。因此,如果您有2个问题 - 1和2,那么您有4个可能的结果。 YY,YN,NY和NN。您可以使用与这些对应的键创建字典。像

这样的东西
def ask_question(qn):
    resp = raw_input(qn)
    if resp.lower() in ["yes", "y"]: # Handles Yes, yes etc.
        return True
    else:
        return False

responses = {(True, True) : "Old Male",
             (True, False) : "Young Male",
             (False, True) : "Old Female",
             (False, False) : "Young Female"}

answers = []
questions = ["Are you male?", "Are you over 18?"]
for q in questions:
   answers.append(ask_question(q))

print responses[tuple(answers)]

由于实际答案是数据(而不是代码),因此您可以从可以轻松编辑/生成的文件中读取这些内容。它比一个庞大而多毛的if / elif / else块更为方便。[/ p>