被我的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'