被我的python代码中涉及循环和文件的行为弄糊涂了

被我的python代码中涉及循环和文件的行为弄糊涂了,python,Python,首先,我要感谢所有一直在那里帮助别人的人。 然后我还要为英语道歉,因为英语不是我的主要语言 我不知道我做错了什么,因为我不能使用我的脚本 我曾希望它能从文本文件一('q1.txt')移到下一个文本文件('q2.txt') 但事实并非如此。如果没有它,I或E可能取决于回答问题 这些问题被分成一个文本文件,并用“;”分隔 首先是问题,然后是A和B 希望我能解释我的问题。 谢谢你的帮助 #!/usr/bin/env python # -*- coding: utf-8 -*- # name.py

首先,我要感谢所有一直在那里帮助别人的人。 然后我还要为英语道歉,因为英语不是我的主要语言


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

我曾希望它能从文本文件一('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

我希望这能更好地解释我所追求的。再次感谢您。

这一行代码有问题,尽管没有示例输入和输出,很难诊断问题:

此行每次迭代从
文件名
中读取一个字节,并将其放入
问题
中。您几乎肯定希望逐行读取文件。请参阅关于文件和流的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()
但是,一旦你有了
答案
,你就什么都不做了。您只需返回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中的缩进不是可选的。

“q1.txt”示例:在一个聚会上,你与许多人互动吗?a:包括陌生人,B:与你认识的几个人互动“我不知道我做了什么,因为我不能使用我的脚本”。你有错误吗?如果是,错误是什么?它是否正在运行,但未打印预期的输出?如果是这样,预期的输出是什么,实际的输出是什么?真的无法得到你想要做的。当你说它应该从
q1.txt
移动到
q2.txt
时,你是什么意思?@RohitJain分析代码时,我相当肯定他误判了问题。请显示示例文件输入和示例交互式会话。这是所有问题的最低要求。
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'