鱼C论坛

 找回密码
 立即注册
查看: 1488|回复: 3

[已解决]python第29课的理解和疑问 求大佬解惑顺便看看我的思路有没有问题

[复制链接]
回帖奖励 5 鱼币 回复本帖可获得 1 鱼币奖励! 每人限 1 次(中奖概率 30%)
发表于 2019-2-22 14:26:18 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 竹茶 于 2019-2-22 16:19 编辑

# 打开文件 1
f = open('record.txt')

#定义3个变量 5
boy = []
girl = []
count = 1 # 7

for each_line in f:                   # 把f加入循环  这个加入循环相当于把f这个文件里的值全部检查一遍  对这题而言个人通俗理解。。 也更加了解for  2
    if each_line[:6] != '======':                      #如果each_line前6个字符不等于'======' 接上面 对此处有点疑问 [:6]不是检测前面6个字符吗 第一遍还解释的通为什么下面也能继续用难道\n?姑且这样 3
        (role, line_spoken) = each_line.split(':', 1)                   #则 左边为被赋值的对象,右边为值,split第一个参数为分割的参数,右边不晓得可能是往左边分割的意思-1是默认右边 4
        if role == '小甲鱼':                          #如果 上面那个role不是被赋予了分割的值了 所以如果等于‘小甲鱼’  下面都是第6步  6
            boy.append(line_spoken)                        #则右边被赋予被分割隔开的后面的值的line_spoken添加到boy这个列表中去
        if role == '小客服':                  # 接第3步骤 所以可能\n真的就是一次循环 可能? 所以如果是小客服
            girl.append(line_spoken)                      #则则右边被赋予被分割隔开的后面的值的line_spoken添加到boy这个列表中去
    else:                                             #否则 如果each_line[:6] == '======'
        file_name_boy = 'boy_' + str(count) + '.txt'                  # 这里在来个变量赋值因为视频任务要6个文件所以有了下面的步骤 8
        file_name_girl = 'girl_' + str(count) + '.txt'

        boy_file = open(file_name_boy, 'w')                          #这里就是给刚刚变量创文件了 9
        girl_file = open(file_name_girl, 'w')

        boy_file.writelines(boy)                        # wrint和writelines这2个方法在这里有了点了解 不过wrint是字符串到文件这里好像也可以用? 对了这里是把第5步的赋值了的变量放到文件里 10
        girl_file.writelines(girl)

        boy_file.close()                              # 老师一直强调的结束emmm 了解 11
        girl_file.close()

        boy = []                  # 因为值已经赋给了那个文件了且已经结束保存 所以这列表元素就清空不然下一次循环会继续存在 12
        girl = []
        count += 1                           #这里加一是为了文件名 第8步 哪里又说 是任务

file_name_boy = 'boy_' + str(count) + '.txt'                        #这里 视频里也说了因为保存文件的条件是 如果each_line[:6] == '======' 因为只有2个所以自己在写一个循环来补充 13
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()

f.close() # 最后  结束 不能忘。。 14
最佳答案
2019-2-22 20:36:39
不是大神,但还是发表一下看法。首先整体思路只要跟着老师走当然没有问题,有问题的地方在于对细节理解不是很到位。第二步中不是检查一遍文件,而是迭代文件对象,依次取出文件的每一行,第三步不好意思没太明白你是说你哪里不清楚。。。第四步函数split()的两个参数,第一个是分隔符,第二个是最大分割次数。第十步write()本来就是把字符串写入文本中,而writelines()则是写入字符串列表。而这里要写入的东西明显是字符串列表,所以只能用writelines。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-2-22 17:13:53 | 显示全部楼层
正在第九节课卡着呢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-2-22 20:36:39 | 显示全部楼层    本楼为最佳答案   
不是大神,但还是发表一下看法。首先整体思路只要跟着老师走当然没有问题,有问题的地方在于对细节理解不是很到位。第二步中不是检查一遍文件,而是迭代文件对象,依次取出文件的每一行,第三步不好意思没太明白你是说你哪里不清楚。。。第四步函数split()的两个参数,第一个是分隔符,第二个是最大分割次数。第十步write()本来就是把字符串写入文本中,而writelines()则是写入字符串列表。而这里要写入的东西明显是字符串列表,所以只能用writelines。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 15 小时前 | 显示全部楼层
赞一个
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-7-17 16:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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