1

我想首先感谢所有那些一直在那里试图帮助一个人的人。然后我也想为语言道歉,因为英语不是我的主要语言!

我想知道我做错了什么,因为我不能使用我的脚本。

我曾希望它会从文本文件一('q1.txt')移到下一个文本文件('q2.txt')。

但事实并非如此。没有它停留在 I 或 E 可能取决于回答问题。

问题被分成一个文本文件并用“;”分隔 首先是问题,然后是 A 和 B

希望我设法解释了我的问题。感谢你的帮助!

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# name.py



def questions(fileName):
    fileName = open(fileName, 'r')
    counter_a, counter_b = 0, 0
    for questions in fileName:
        lineSplit = questions.split(','); # for every new line, split separtes whit "," for one quastion and      two choides
        question_string = "%s\n %s\n %s\n \n Answer: " % (lineSplit[0], lineSplit[1], lineSplit[2])
        answer = raw_input(question_string).lower()
        while answer not in ("a", "b"):
            print("Please choose A or B \n")
            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'

def main():
    questions('q1.txt')
    questions('q2.txt')

if __name__=='__main__': main()         

--

你好,

感谢我收到的所有回复。我会尽力解释。

该脚本从指定的文本文件中检索问题。这些在每行的文本文件中用“,”分隔。文本文件中出现的问答示例:在聚会上您是否与很多人互动?,A:包括陌生人,B:与您认识的少数人互动

每次选择 A 或 B 时,您都会获得 A+1 或 B+1 的“分数”。

回答完所有问题后,您将根据您对信件的答复方式获得信息。这很好用。执行此任务的脚本没有问题。

问题是它没有在函数中走得更远,它不会转到第二个文本文件!

即从 q1.txt 到 q2.txt。问题('q1.txt') 问题('q2.txt')

得到答案后停止。您的第一个人格代码是:E 或您的第一个人格代码是:I

我希望这是对我所追求的更好的解释。再次,谢谢你。

4

1 回答 1

0

此行是您的代码问题,尽管没有示例输入和输出很难诊断问题:

for questions in fileName:

此行从每次迭代中读取一个字节fileName,并将其放入questions. 您几乎可以肯定想要的是逐行读取文件。请参阅有关文件和流的 python 文档以了解如何执行此操作(我不会为您做作业)。

现在,接下来发生的事情是:

    answer = raw_input(question_string).lower()
    while answer not in ("a", "b"):
        print("Please choose A or B \n")
        answer = raw_input(question_string).lower()

answer但是,一旦你拥有它,你就不会做任何事情。您只需返回到 for 循环的顶部。一旦你用完所有字节fileName并退出循环,你点击:

if answer == "a":
    counter_a += 1
else:
    counter_b += 1

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

然后你退出函数。因此,最终的打印输出由最后输入的值决定answer

您可能想要的是在循环if内移动第一条语句。for请记住:Python 中的缩进不是可选的。

于 2012-11-21T19:04:30.063 回答