我正在尝试创建一个调查问卷,其中询问多个是/否问题,并且在收到所有答案后,根据提供的答案组合显示不同的输出。
例如,如果有三个问题并且有人回答否,那么是的,他们会看到一个输出(我将创建一个简单的句子),但如果其他人回答是,否,是的,他们会最后看到不同的回应。我不想在每个问题之后提供反馈,只有在所有问题都得到解答后才能提供。
我试图使用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"
看起来它的功能相对较好,但无论我使用它的“是”和“否”的组合,它都会给我正确的数字输出,但也会说“无效”。但是,如果我取出其他内容,它不会将答案限制为“是”或“否”,是吗?
答案 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>