鱼C论坛

 找回密码
 立即注册
查看: 1930|回复: 4

python教程29讲那个任务,看不出图示一段代码放在不同位置为什么会结果不同 T T

[复制链接]
发表于 2016-5-12 13:07:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 imtheend 于 2016-5-12 13:10 编辑

求解答。。。晕哪,附上两段代码:
def split_file(file_name):
    f = open(file_name)
    boy = []
    girl = []
    count = 1
    for each_line in f:
        if each_line[:3] != '===':
            (role,line_spoken) = each_line.split(':',1)
            if role == '小甲鱼':
                boy.append(line_spoken)
               
            if role == '小客服':
                girl.append(line_spoken)
        else:
            save_file(boy,girl,count)
            
            boy = []
            girl = []
            count += 1
            
    save_file(boy,girl,count)
    f.close()
   
def save_file(boy,girl,count):
    file_name_boy = 'boy_'+str(count)+'.txt'
    file_name_girl = 'girl_'+str(count)+'.txt'
   
    boy_file = open(file_name_boy,'w')
    girl_file = open(file_name_girl,'w')
   
    boy_file.writelines(boy)
    girl_file.writelines(girl)
   
    boy_file.close()
    girl_file.close()
   
   
split_file('test.txt')
=================================================================
def split_file(file_name):
    f = open(file_name)
    boy = []
    girl = []
    count = 1
    for each_line in f:
        if each_line[:3] != '===':
            (role,line_spoken) = each_line.split(':',1)
            if role == '小甲鱼':
                boy.append(line_spoken)
               
            if role == '小客服':
                girl.append(line_spoken)
        else:
            save_file(boy,girl,count)
            
    save_file(boy,girl,count)
    f.close()
   
def save_file(boy,girl,count):
    file_name_boy = 'boy_'+str(count)+'.txt'
    file_name_girl = 'girl_'+str(count)+'.txt'
   
    boy_file = open(file_name_boy,'w')
    girl_file = open(file_name_girl,'w')
   
    boy_file.writelines(boy)
    girl_file.writelines(girl)
   
    boy_file.close()
    girl_file.close()
   
    boy = []
    girl = []
    count += 1
   
split_file('test.txt')
不同位置为什么效果不一样.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-5-12 13:37:05 | 显示全部楼层
不同位置的话程序就是按顺序运行的啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-5-12 15:58:56 | 显示全部楼层
leozyre 发表于 2016-5-12 13:37
不同位置的话程序就是按顺序运行的啊

图片左边的那种,把boy = []那一坨放在函数里面,后面for循环也会多次调用,看上去跟放在右侧位置效果一样啊,,,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-5-24 00:26:37 | 显示全部楼层
因为boy,girl,count三个变量是做为split_file()函数的局部变量,当把它们放在split_file()里面的时候,是对3个变量进行了初始化。但是当你把它们放到下面save_file()函数里面的时候就是在save_file()函数里面重新定义了三个名叫boy, girl, count的变量,它和split_file()函数里面的变量是完全没有关系的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-5-25 23:55:23 | 显示全部楼层
学校一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-28 21:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表