鱼C论坛

 找回密码
 立即注册
查看: 4737|回复: 13

关于print()函数 end功能的疑问

[复制链接]
发表于 2016-7-13 14:01:20 | 显示全部楼层 |阅读模式

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

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

x
各位前辈:

我自己做了个测试,文本内内容如图1 ,但是当我运行代码并设置end='.'的时候,打印出来的结果却是这个符号出现在句首??

搞不明白为什么,不是应该是
1.
2.
3.
4.
5.

这样的么??

请教各位前辈了,谢谢大家

1.jpg
2.jpg
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-7-13 14:11:34 | 显示全部楼层
你的txt内容包含了换行符 '\n'
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-7-13 15:22:39 | 显示全部楼层
SixPy 发表于 2016-7-13 14:11
你的txt内容包含了换行符 '\n'

是啊,是包含了换行符'\n'
不过print函数不是默认以'\n'结尾的吗?那我用end=''的作用不就是替代掉'\n'么。。。。?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-13 15:26:09 | 显示全部楼层
NoDinner 发表于 2016-7-13 15:22
是啊,是包含了换行符'\n'
不过print函数不是默认以'\n'结尾的吗?那我用end=''的作用不就是替代掉'\n' ...

你的txt内容原本就包含了换行符 '\n'
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-7-13 15:28:20 | 显示全部楼层
SixPy 发表于 2016-7-13 15:26
你的txt内容原本就包含了换行符 '\n'

哦哦,那你的意思是这个换行符,是因为我敲回车的关系产生的换行符?还是说本身记事本文件带有换行符?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-13 15:44:05 | 显示全部楼层
NoDinner 发表于 2016-7-13 15:28
哦哦,那你的意思是这个换行符,是因为我敲回车的关系产生的换行符?还是说本身记事本文件带有换行符?
  1. repr(f.read(-1))
复制代码


自己看一下有没有 \n
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-7-13 16:15:34 | 显示全部楼层
SixPy 发表于 2016-7-13 15:44
自己看一下有没有 \n

打印出来如下的,确实是有换行符的
那可不可以这样理解呢?就是换行符实际上是出现在第二行的句首的,用end功能,只是替代换行符而已,比如我用'.'来替代默认换行符,只是把句首的换行符\n换成了点'.'
并非是在句末尾出现'.'

说的比较拗口,不知道前辈能看明白不......

"'1\\n2\\n3\\n4\\n5\\n'"
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-13 16:27:27 | 显示全部楼层
NoDinner 发表于 2016-7-13 16:15
打印出来如下的,确实是有换行符的
那可不可以这样理解呢?就是换行符实际上是出现在第二行的句首的,用 ...

txt是在一行的末尾有一个回车(就是让光标回头),第一个字符就是换行符,回车付之后跳到第一个字符(换行符)最后就换行了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-13 16:30:42 | 显示全部楼层
NoDinner 发表于 2016-7-13 16:15
打印出来如下的,确实是有换行符的
那可不可以这样理解呢?就是换行符实际上是出现在第二行的句首的,用 ...


我觉得你理解的是对的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-7-13 16:35:20 | 显示全部楼层
无符号整形 发表于 2016-7-13 16:27
txt是在一行的末尾有一个回车(就是让光标回头),第一个字符就是换行符,回车付之后跳到第一个字符(换 ...

恩恩。。。原来如此。。。看来是我基础知识太薄弱。。。我原来一直以为\n是在句末的。。所以才会有这样的困惑。。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-13 17:46:05 | 显示全部楼层
本帖最后由 wei_Y 于 2016-7-13 17:49 编辑

不对喔,
print的换行符是出现的句末的呦~。

  1. >>> a = ['1','2','3']
  2. >>> for i in a:
  3.         print(i, end='.')

  4.        
  5. 1.2.3.
  6. >>>
复制代码


那为什么会出现楼主所述的情况呢。

就是说,原本内容是1\n2\n,加上‘.’之后变成了 ‘1\n.’。
那显示出来就是,
                                                                    1(实际换行代替\n)
这时候print的换行被取消,所以显示一个.      .2(实际换行代替\n)
                                                                     . ……


所以就是1楼的意思,只是他没细说~~。

评分

参与人数 1荣誉 +3 收起 理由
小火木 + 3 支持楼主!

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 2 反对 0

使用道具 举报

 楼主| 发表于 2016-7-13 22:53:25 | 显示全部楼层
wei_Y 发表于 2016-7-13 17:46
不对喔,
print的换行符是出现的句末的呦~。

谢谢版主前辈指教,不过小白还是有些没理解,再问一下你,看看我说得对不对?
你的意思:我的例子中的情况  代码应该是这样的  1'\n''\n'
1后面实际上有2个换行符?红色那个是代表原来txt文件中就有的换行符,也就是我用回车敲出来的。
而蓝色那个换行符,是print函数本身默认的换行符,是吗?
所以其实我是用'.'把蓝色那个print默认的换行符给替换掉了,但是,本身用回车敲出来的那个红色的换行符,还是在的。
所以代码运行时,先换行了,再将第二个换行符替换成了'.'

不知道小白这样说,版主前辈能理解吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-7-13 23:01:49 | 显示全部楼层
wei_Y 发表于 2016-7-13 17:46
不对喔,
print的换行符是出现的句末的呦~。

版主前辈,我自己试验了下,应该刚才的理解是对的了,如图txt内的5行字,其实在迭代的时候,会产生2个换行符,一个是本身自己回车敲的,另外一个是print函数默认的,我用end只是把第二个给替代了,第一个换行还是要有,所以那个'.'才会出现在下一行。
我用默认打印的话,他就会自动跳开一行了。

哈哈哈,明白了,太感谢了,知道了。谢谢

1.jpg
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-7-13 23:02:25 | 显示全部楼层
SixPy 发表于 2016-7-13 14:11
你的txt内容包含了换行符 '\n'

谢谢你的指点,我理解了,万分感谢!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-21 17:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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