想在python中创建个性测试。如何为此任务执行功能?

时间:2012-05-04 11:40:23

标签: python testing

我试图制作一个包含所有这些问题的文件,但它没有用!

question = open(filename.txt“r”)

这就是我所做的:

#!/usr/bin/python
#    questions.py



questions1 = [("At a party do you", "interact with many, including strangers", "interact with a few, known  to you"),
    ("At parties do you", "Stay late, with increasing energy", "Leave early, with decreasing energy"),
    ("In your social groups do you", "Keep abreast of others happenings", "Get behind on the news"),
    ("Are you usually rather", "Quick to agree to a time", "Reluctant to agree to a time"),
    ("In company do you", "Start conversations", "Wait to be approached"),
    ("Does new interaction with others", "Stimulate and energize you", "Tax your reserves"),
    ("Do you prefer", "Many friends with brief contact", "A few friends with longer contact"),
    ("Do you", "Speak easily and at length with strangers", "Find little to say to strangers"),
    ("When the phone rings do you", "Quickly get to it first", "Hope someone else will answer"),
    ("At networking functions you are", "Easy to approach", "A little reserved")]


counter_a, counter_b = 0, 0


for question in questions1:
    question_string = "%s:\n\tA. %s\n\tB. %s\n[a/b]:  " % (question[0], question[1], question[2])
    answer = raw_input(question_string).lower()
    while answer not in ("a", "b"):
        print("Please choose A or B")
        answer = raw_input(question_string).lower()
    if answer == "a":
        counter_a += 1
    else:
        counter_b += 1

#print "A total is %d" % counter_a
#print "B total is %d" % counter_b


if counter_a > counter_b:
    print 'Your first personality code is: E'
else:
    print 'Your first personality code is: I'

##############################################################################

questions2 = [("Are you more", "Realistic", "Philosophically inclined "),
("Are you a more", "Sensible person", "Reflective person "),
("Are you usually more interested in", "Specifics", "Concepts "),
("Facts", "Speak for themselves", "Usually require interpretation "),
("Traditional common sense is", "Usually trustworthy", "often misleading "),
("Are you more frequently", "A practical sort of person", "An abstract sort of person "),
("Are you more drawn to", "Substantial information", "Credible assumptions "),
("Are you usually more interested in the", "Particular instance", "General case "),
("Do you prize more in yourself a", "Good sense of reality", "Good imagination "),
("Do you have more fun with", "Hands-on experience", "Blue-sky fantasy "),]


counter2_a, counter2_b = 0, 0


for question in questions2:
    question_string = "%s:\n\tA. %s\n\tB. %s\n[a/b]:  " % (question[0], question[1], question[2])
    answer = raw_input(question_string).lower()
    while answer not in ("a", "b"):
        print("Please choose A or B")
        answer = raw_input(question_string).lower()
    if answer == "a":
        counter2_a += 1
    else:
        counter2_b += 1

#print "A total is %d" % counter2_a
#print "B total is %d" % counter2_b



##############################################################################

questions3 = [("Are you usually more", "Fair minded", "Kind hearted"),
("Is it more natural to be", "Fair to others", "Nice to others"),
("Are you more naturally", "Impartial", "Compassionate"),
("Are you inclined to be more", "Cool headed", "Warm hearted"),
("Are you usually more", "Tough minded", "Tender hearted"),
("Which is more satisfying", "To discuss an issue throughly", "To arrive at agreement on an issue"),
("Are you more comfortable when you are", "Objective", "Personal"),
("Are you typically more a person of", "Clear reason", "Strong feeling"),
("In judging are you usually more", "Neutral", "Charitable"),
("Are you usually more", "Unbiased", "compassionate")]

counter3_a, counter3_b = 0, 0


for question in questions3:
    question_string = "%s:\n\tA. %s\n\tB. %s\n[a/b]:  " % (question[0], question[1], question[2])
    answer = raw_input(question_string).lower()
    while answer not in ("a", "b"):
        print("Please choose A or B")
        answer = raw_input(question_string).lower()
    if answer == "a":
        counter3_a += 1
    else:
        counter3_b += 1

plus1a3 = counter3_a + counter2_a
plus2b3 = counter3_b + counter2_b

#print "A total is %d" % plus1a3
#print "B total is %d" % plus2b3

if plus1a3 > plus2b3:
    print 'Your second personality code is: S'
else:
    print 'Your second personality code is: N'

##############################################################################

questions4 = [("Do you tend to be more", "Dispassionate", "Sympathetic"),
("In first approaching others are you more", "Impersonal and detached", "Personal and engaging"),
("In judging are you more likely to be", "Impersonal", "Sentimental"),
("Would you rather be", "More just than merciful", "More merciful than just"),
("Are you usually more", "Tough minded", "Tender hearted"),
("Which rules you more", "Your head", "Your heart"),
("Do you value in yourself more that you are", "Unwavering", "Devoted"),
("Are you inclined more to be", "Fair-minded", "Sympathetic"),
("Are you convinced by?", "Evidence", "Someone you trust"),
("Are you typically more", "Just than lenient", "Lenient than just")]

counter4_a, counter4_b = 0, 0


for question in questions4:
    question_string = "%s:\n\tA. %s\n\tB. %s\n[a/b]:  " % (question[0], question[1], question[2])
    answer = raw_input(question_string).lower()
    while answer not in ("a", "b"):
        print("Please choose A or B")
        answer = raw_input(question_string).lower()
    if answer == "a":
        counter4_a += 1
    else:
        counter4_b += 1

plus1a4 = counter4_a + counter3_a
plus2b4 = counter4_b + counter3_b

#print "A total is %d" % plus1a4
#print "B total is %d" % plus2b4


##############################################################################

questions5 = [("Do you prefer to work", "To deadlines", "Just whenever"),
("Are you usually more", "Punctual", "Leisurely"),
("Do you usually", "Settle things", "Keep options open"),
("Are you more comfortable", "Setting a schedule", "Putting things off"),
("Are you more prone to keep things", "well organized", "Open-ended"),
("Are you more comfortable with work", "Contracted", "Done on a casual basis"),
("Are you more comfortable with", "Final statements", "Tentative statements"),
("Is it preferable mostly to", "Make sure things are arranged", "Just let things happen"),
("Do you prefer?", "Getting something done", "Having the option to go back"),
("Is it more like you to", "Make snap judgements", "Delay making judgements")]

counter5_a, counter5_b = 0, 0


for question in questions5:
    question_string = "%s:\n\tA. %s\n\tB. %s\n[a/b]:  " % (question[0], question[1], question[2])
    answer = raw_input(question_string).lower()
    while answer not in ("a", "b"):
        print("Please choose A or B")
        answer = raw_input(question_string).lower()
    if answer == "a":
        counter5_a += 1
    else:
        counter5_b += 1

plus1a5 = counter5_a + counter4_a
plus2b5 = counter5_b + counter4_b

#print "A total is %d" % plus1a5
#print "B total is %d" % plus2b5

if plus1a5 > plus2b5:
    print 'Your third personality code is: T'
else:
    print 'Your third personality code is: F'

##############################################################################

questions6 = [("Do you tend to choose", "Rather carefully", "Somewhat impulsively"),
("Does it bother you more having things", "Incomplete", "Completed"),
("Are you usually rather", "Quick to agree to a time", "Reluctant to agree to a time"),
("Are you more comfortable with", "Written agreements", "Handshake agreements"),
("Do you put more value on the", "Definite", "Variable"),
("Do you prefer things to be", "Neat and orderly", "Optional"),
("Are you more comfortable", "After a decision", "Before a decision"),
("Is it your way more to", "Get things settled", "Put off settlement"),
("Do you prefer to?", "Set things up perfectly", "Allow things to come together"),
("Do you tend to be more", "Deliberate than spontaneous", "Spontaneous than deliberate")]

counter6_a, counter6_b = 0, 0


for question in questions6:
    question_string = "%s:\n\tA. %s\n\tB. %s\n[a/b]:  " % (question[0], question[1], question[2])
    answer = raw_input(question_string).lower()
    while answer not in ("a", "b"):
        print("Please choose A or B")
        answer = raw_input(question_string).lower()
    if answer == "a":
        counter6_a += 1
    else:
        counter6_b += 1

plus1a6 = counter6_a + counter5_a
plus2b6 = counter6_b + counter5_b

#print "A total is %d" % plus1a6
#print "B total is %d" % plus2b6


if plus1a6 > plus2b6:
    print 'Your fourth personality code is: J'
else:
    print 'Your fourth personality code is: P'


####################################################################

我是编程方面的新手,如果我的问题含糊不清,请提前道歉!

没有我想做的事, 我想根据Myers-Briggs Type Indicator进行性格测试

我需要问 - 使用A或B选项设置约70个问题 - 我希望尽可能简单

我粘贴了我开始使用的代码。 - 我明白我离开了

提前感谢您的帮助!

counterA = 0
counterB = 0

question = raw_input('At a party do you? \n A. Interact with many, includingstrangers \n B.            Interact with a few, known to you. \n ')
print ''
question = raw_input('At a party do you? \n A. Interact with many, includingstrangers \n B. Interact with a few, known to you. \n ')


def question_x(x):
    raw_input('')

question_x('')    

def answer(x):
    if question == 'a' or question == 'A':
        counterB = counterB + 1
    else:
        counterB = counterB + 1 

print counterA
print counterB

#if q1 == 'a' or q1 == 'A':
#    counterA = counterA + 1
#else:
#    counterB = counterB + 1

############################################## 

#if q2 == 'a' or q2 == 'A':
#   counterA = counterA + 1
#else:
#    counterB = counterB + 1

#print counterA
#print counterB

1 个答案:

答案 0 :(得分:6)

这是一个非常普遍的问题。所以我给出了一些基本的想法:

  • 为便于管理,请将问题存储在文件中。您可以使用一些一致的格式。就像每个问题都包含三行。第一行是问题,第二行是选项A,第三行是选项B.
  • 打开文件并在列表中加载问题和选项。您可以使用三个列表,一个用于提问,另外两个用于两个选项。或者是三个元素的单个列表。
  • 使用循环遍历列表。在步骤i,打印question[i]optionA[i]optionB[i]
  • 从用户输入答案并相应地增加计数器。