差一个缩进,结果怎么会差这么多,不能理解为什么!求分析!
程序1:fff=open("E:\\python\\课件资料\\record.txt","rt")
num=1
boy=[]
girl=[]
for each in fff :
boy_file_name="boy_"+str(num)+".txt"
girl_file_name="girl_"+str(num)+".txt"
if each[:3] !="===":
txt=each.split(":")
iftxt=="小甲鱼":
boy.append(txt)
elif txt=="小客服":
girl.append(txt)
else:
boy_file=open("E:\\python\\课件资料\\"+boy_file_name,"at")
girl_file=open("E:\\python\\课件资料\\"+girl_file_name,"at")
boy_file.writelines(boy)
girl_file.writelines(girl)
boy=[]
girl=[]
num+=1
boy_file=open("E:\\python\\课件资料\\"+boy_file_name,"at")
girl_file=open("E:\\python\\课件资料\\"+girl_file_name,"at")
boy_file.writelines(boy)
girl_file.writelines(girl)
fff.close()
boy_file.close()
girl_file.close()
程序2:
fff=open("E:\\python\\课件资料\\record.txt","rt")
num=1
boy=[]
girl=[]
for each in fff :
boy_file_name="boy_"+str(num)+".txt"
girl_file_name="girl_"+str(num)+".txt"
if each[:3] !="===":
txt=each.split(":")
iftxt=="小甲鱼":
boy.append(txt)
elif txt=="小客服":
girl.append(txt)
else:
boy_file=open("E:\\python\\课件资料\\"+boy_file_name,"at")
girl_file=open("E:\\python\\课件资料\\"+girl_file_name,"at")
boy_file.writelines(boy)
girl_file.writelines(girl)
boy=[]
girl=[]
num+=1
boy_file=open("E:\\python\\课件资料\\"+boy_file_name,"at")
girl_file=open("E:\\python\\课件资料\\"+girl_file_name,"at")
boy_file.writelines(boy)
girl_file.writelines(girl)
fff.close()
boy_file.close()
girl_file.close()
当然会差很多
python严格要求缩进
缩进的不同会直接影响到执行顺序、循环次数、判断先后等
所以还是不要乱改缩进了 昨非 发表于 2020-11-22 10:20
当然会差很多
python严格要求缩进
缩进的不同会直接影响到执行顺序、循环次数、判断先后等
道理明白,但是我怎么看两个程序应该结果是一样的,但是运行起来就不是,不明白啊 zhu_lizhang 发表于 2020-11-22 11:27
道理明白,但是我怎么看两个程序应该结果是一样的,但是运行起来就不是,不明白啊
注意以下两种情况的比较:
else:
boy_file=open("E:\\python\\课件资料\\"+boy_file_name,"at")
girl_file=open("E:\\python\\课件资料\\"+girl_file_name,"at")
boy_file.writelines(boy)
girl_file.writelines(girl)
boy=[]
girl=[]
num+=1
else:
boy_file=open("E:\\python\\课件资料\\"+boy_file_name,"at")
girl_file=open("E:\\python\\课件资料\\"+girl_file_name,"at")
boy_file.writelines(boy)
girl_file.writelines(girl)
boy=[]
girl=[]
num+=1
区别在于,列表清空是在else里还是在else外
观察代码不难发现,在for循环内
if判断遇到‘===’后,分割隔断内容,将各自对话去除角色添加在各自的列表里
else则是对应 将各自列表里的东西写入各自文件,写完后清空列表,等待下次循环时新建一对txt文件,重新读取对话,存入列表,并写入
也就是意味着,列表的清空必须紧跟写入
boy_file.writelines(boy)
girl_file.writelines(girl)
假设你放在外面(与else缩进平齐),也就意味着,每执行一次循环都会清空一次
如果这次循环中,没有执行else,而只是执行了if,,刚刚append进去的内容,不等写入文件,就都没了
这好吗?这不好!
昨非 发表于 2020-11-22 11:55
注意以下两种情况的比较:
今天脑子断路了 想了好一会没想出来。。。。唉。。。。大哥你现在学到那个阶段了? zhu_lizhang 发表于 2020-11-22 13:40
今天脑子断路了 想了好一会没想出来。。。。唉。。。。大哥你现在学到那个阶段了?
半吊子阶段 昨非 发表于 2020-11-22 13:43
半吊子阶段
我现在卡在第30课,最后一题上,感觉脑子开始罢工了。。。。不想看题目想题目了 zhu_lizhang 发表于 2020-11-22 14:18
我现在卡在第30课,最后一题上,感觉脑子开始罢工了。。。。不想看题目想题目了
能坚持还是坚持一下吧,不理解的可以来问
大家都是一脸蒙蔽过来的{:10_277:}
页:
[1]