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

基于对多个问题的回答的不同输出(Python),python,python-2.7,Python,Python 2.7,我正在尝试创建一份调查问卷,其中询问多个是/否问题,在收到所有回答后,根据提供的答案组合显示不同的输出 例如,如果有三个问题,有人回答“否”,那么“是”,他们将看到一个输出(我将创建一个简单的句子),但如果有人回答“是”,则他们将在最后看到不同的回答。我不想在每个问题之后提供反馈,只有在所有问题都得到回答之后 我试图使用if/else,但这似乎不符合我的目的(至少我是这样做的,但我对Python非常陌生!)。我很抱歉,我没有太多的工作要做,但我正在努力学习,一直在谷歌搜索谷歌搜索没有任何效果。谢

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

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

我试图使用if/else,但这似乎不符合我的目的(至少我是这样做的,但我对Python非常陌生!)。我很抱歉,我没有太多的工作要做,但我正在努力学习,一直在谷歌搜索谷歌搜索没有任何效果。谢谢

编辑:这是我一直在尝试的。有什么办法可以扩展这个范围吗?我所做的是基于我有限的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"
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)]
但我不知道如何使用这三个答案来帮助打印内容。我也不知道如何把每个问题都限制在一个肯定/否定的答案上

编辑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和2,你会有4个可能的结果。YY、YN、NY和NN。您可以创建一个字典,其中包含与这些键对应的键。大概是

if female=="yes":
    print "blahblah"
else:
    print "something else"
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块更为便捷的管理方式。

欢迎使用堆栈溢出。如果您有一个不起作用的示例,请发布(编辑您的帖子),以便我们可以帮助您解决特定问题。正如本文所述,可能有无数种方法可以完成您的要求,但有了代码示例,这是可以管理的。如果您知道
If/else
语句是如何工作的,并且知道如何存储答案,您应该能够做到这一点。在纸上画出你打算实现的逻辑结构会很有帮助。我不知道如何存储答案!我想这就是我的问题你在存储答案:在
女性
18岁以上
购物
姓名中。现在需要将它们置于逻辑条件中(
if/else
语句)。你已经迈出了第一步——你已经把一个名字(
女性
)置于一种状态。现在,您需要将所有三个名称放入
if/else
语句中。您可以使用逻辑运算符。有关示例,请参见。使用字典(由@Noufal Ibrahim提供)回答也是一个不错的选择。您可以看到if/else方法是多么容易出错。请考虑使用数据结构来存储结果而不是对它们进行编码。