鱼C论坛

 找回密码
 立即注册
查看: 1408|回复: 10

[已解决]Python第二版第8章(第107页)的代码理解问题

[复制链接]
发表于 2020-7-28 11:35:40 | 显示全部楼层 |阅读模式

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

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

x
两个问题需要请教下论坛各位大神:

问题一
    代码中
    for each_line in f:
    这个循环each_line的赋值是一次性把文件文本全部字符串都赋值了,还是以回车换行 一行一行来赋值的?为什么呢?
  
问题二
    代码中:
     (role,line_spoken)=each_line.split(':',1)

这个(role,line_spoken)是什么?是[role='小甲鱼', ' : ',line_spoken='后面对话内容']的含变量元素的列表吗?

   
最佳答案
2020-7-28 11:43:47
本帖最后由 陈尚涵 于 2020-7-28 11:49 编辑


你这几个问题说的都不对,我来解释一下吧

问题1
for each_line in f:
什么全部赋值和回车换行一行一行的赋值这个文本本身就是序列,他是把这个“序列”一行一行的赋值

问题2
这个role, line_spoken是什么含变量元素的列表呀只不过这段代码也可以这么写:
role, line_spoken = each_line(':', 1)
意思就是这么写:
role = each_line.split(':', 1)[0]
line_spoken = each_line.split(':', 1)[1]


记得给我设置最佳答案哦~

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-28 11:38:23 | 显示全部楼层
1. 是一行一行遍历文件 f,因为文件对象的 __next__() 方法就是这么定义的(到后面你会学到魔法方法,自然就能明白了)

2. 不是,这是利用元组一次性给多个变量赋值,role = '小甲鱼',line_spoken = '后面对话内容'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-28 11:39:33 | 显示全部楼层
本帖最后由 sunrise085 于 2020-7-28 11:40 编辑

问题1:for循环遍历是一行一行来读文件的。这是python的规则
问题2、(role,line_spoken)=each_line.split(':',1)是把each_line以 : 分割一次,第一部分给role,第二部分给 line_spoken,也就是把说话者名字给role,把说的话给line_spoken。这不是个列表,就是一次性给多个遍历赋值,前面的role 和line_spoken可以不加括号
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-28 11:43:47 | 显示全部楼层    本楼为最佳答案   
本帖最后由 陈尚涵 于 2020-7-28 11:49 编辑


你这几个问题说的都不对,我来解释一下吧

问题1
for each_line in f:
什么全部赋值和回车换行一行一行的赋值这个文本本身就是序列,他是把这个“序列”一行一行的赋值

问题2
这个role, line_spoken是什么含变量元素的列表呀只不过这段代码也可以这么写:
role, line_spoken = each_line(':', 1)
意思就是这么写:
role = each_line.split(':', 1)[0]
line_spoken = each_line.split(':', 1)[1]


记得给我设置最佳答案哦~

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-28 11:46:49 | 显示全部楼层
哇,发帖子的时候显示是10秒前楼主发的贴,这么快你们就到了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-28 12:02:35 | 显示全部楼层
陈尚涵 发表于 2020-7-28 11:43
你这几个问题说的都不对,我来解释一下吧

问题1

你好大神,再请教下,既然
role = each_line.split(':', 1)[0]
line_spoken = each_line.split(':', 1)[1]
那为什么用小括弧都框起来?括弧框内不是列表元素吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-28 13:07:17 | 显示全部楼层
zltzlt 发表于 2020-7-28 11:38
1. 是一行一行遍历文件 f,因为文件对象的 __next__() 方法就是这么定义的(到后面你会学到魔法方法,自然 ...

感谢大神答疑
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-28 13:08:45 | 显示全部楼层
sunrise085 发表于 2020-7-28 11:39
问题1:for循环遍历是一行一行来读文件的。这是python的规则
问题2、(role,line_spoken)=each_line.split( ...

感谢大神答疑。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-28 13:25:54 | 显示全部楼层
陈尚涵 发表于 2020-7-28 11:43
你这几个问题说的都不对,我来解释一下吧

问题1

你这有点不要脸啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-28 17:53:04 | 显示全部楼层
zltzlt 发表于 2020-7-28 13:25
你这有点不要脸啊

???
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-28 17:53:42 | 显示全部楼层
bio911 发表于 2020-7-28 12:02
你好大神,再请教下,既然
role = each_line.split(':', 1)[0]
line_spoken = each_line.split(':', 1) ...

对啊,得到的就是列表元素啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-19 16:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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