grabme 发表于 2020-8-15 21:43:23

零基础入门学习python P30 代码简化中的函数问题



def save_files():

   
    boy_file_name = 'boy_' + str(count) + '.txt'
    girl_file_name = 'girl_' + str(count) + '.txt'

    boy_file = open(boy_file_name, 'w')
    girl_file = open(girl_file_name, 'w')
      
    boy_file.writelines(boy)
    girl_file.writelines(girl)
      
    boy_file.close()
    girl_file.close()
   
def file_split(file_name):
   

    f = open('record.txt')


    boy = []
    girl = []
    count = 1

    for each_lines in f:
      
      if each_lines[:2] != '==':
            (role, words) = each_lines.split(':', 1)
            
            if role == '小甲鱼':
                boy.append(words)
            if role == '小客服':
                girl.append(words)

      else:
            
            save_files()

            boy = []
            girl = []
            count += 1

    save_files()

    f.close()
   
file_split('record.txt')

为啥这样会输出boy_3.txt和girl_3.txt??

grabme 发表于 2020-8-15 22:51:49

就函数save_files()没有给参数为啥第46行还会起作用?

°蓝鲤歌蓝 发表于 2020-8-15 23:13:11

?? 它本来就不需要参数啊

grabme 发表于 2020-8-16 12:49:10

本帖最后由 grabme 于 2020-8-16 12:52 编辑

grabme 发表于 2020-8-16 12:50:15

°蓝鲤歌蓝 发表于 2020-8-15 23:13
?? 它本来就不需要参数啊

不是啊 为啥不给参数会输出boy_3.txt和girl_3.txt 给参数会输出boy_1.txt、girl_1.txt和boy_2.txt、girl_2.txt和boy_3.txt、girl_3.txt

就是为啥第40行代码不起作用但是第46行代码起作用了

°蓝鲤歌蓝 发表于 2020-8-16 13:55:44

grabme 发表于 2020-8-16 12:50
不是啊 为啥不给参数会输出boy_3.txt和girl_3.txt 给参数会输出boy_1.txt、girl_1.txt和boy_2.txt、girl_ ...

给不给参数根本就没什么影响,你的函数里都没有用到你的参数。

grabme 发表于 2020-8-17 19:15:47

°蓝鲤歌蓝 发表于 2020-8-16 13:55
给不给参数根本就没什么影响,你的函数里都没有用到你的参数。

那为啥会输出boy_3.txt和girl_3.txt

°蓝鲤歌蓝 发表于 2020-8-17 22:16:15

我不知道 record.txt 里是什么 ,所以不知道你的程序怎么运行的,我也懒得去看 P30 ,以前就没怎么看过。
但是我知道输出 b3, g3 的原因肯定是 for 循环了最少 2 次,而且只有2次进入了 else 分支,至于为什么,你自己一步步倒推回去,打断点调试就知道了。
页: [1]
查看完整版本: 零基础入门学习python P30 代码简化中的函数问题