oeasy教您玩转python - 9 - # 换行字符
换行字符
回忆上次内容
- 数制可以转化
- bin(n)可以把数字转化为 2进制
- hex(n)可以把数字转化为 16进制
- int(n)可以把数字转化为 10进制
- 编码和解码可以转化
- encode 编码
- decode 解码
- ASCII 码表范围
- 0x41-0x5A 这个范围是 大 写字母
- 0x61-0x7A 这个范围是 小 写字母
- 0x30-0x39 这个范围是 数字
- 数字的编码减去 0x30 正好得到数字本身
- 0x20-0x7F之间有各种符号
- 0x00-0x1F之间的东西是什么?
文件编码
- 编写一个文件
- 写下 abcd
- 用 :%!xxd
- :%!xxd -r 变回来
?
- 可以看到文件是用 2进制 方式存储的
- 0x61 - a
- 0x62 - b
- 0x63 - c
- 0x64 - d
- 后面的那个 0a 是什么
- 我们还得回到最初
回到最初
- 我们回到开始的时候
- 前面介绍的 c 语言的第一个程序
- 注意到hello world后面的\n了么?
- 注意到hello world后面的\n了么?
- 特别注意斜杠的方向
- 这个方向\叫反斜杠
- 在回车上面
- 那\n到底是什么??
?
输出"\n"
#输出\n
print("\n")
#直接print
print()
#查看序号
ord("\n")
#查看十六进制的序号
hex(ord("\n"))
- 我们直接把他输出看看
- 好像换了 两 行
- 如果没\n的话,只换 一 行
- \n整体作为一个字符的话
- 序号是(10)10进制
- 也就是(0x0A)16进制
?
找到位置
?
- 10 就是十六进制的 0x0A
- 这个数值在 ascii 码表中意思是 LF
- 啥意思?
搜索
- 搜索\n得到的结果是这样的
- LF 意味着 Line Feed 喂一行?
- 那我真的可以用这个\n换行嘛?
?
#输出字符串中带有\n
print("Hello\nWorld")
?
- 中途换行成功!
多来几个
#输出字符串中带有\n
print("He\nllo\nWor\nld")
- 显然这个 \n 就是一个换行
- 字符串里面有个 \n 就意味着需要换 1 行
- 他的英文是 Line Feed
- 意思就是 新换1行
- 这个东西其实比 ascii 的历史还要悠久
- 从打字机的时代就有了
- 最最开始的时候分段落都是靠输出空格然后换行
- 自从有了这个
- 一个键就有了新的一行了
- 所以LineFeed 很提高效率
?
反向操作
#输出ascii值为10的字符
chr(10)
#把这个字符放在print里面输出
print("hello"+chr(10)+"world")
?
追溯历史
- 最早c语言 中的 \n 来自于什么呢?
- 来自于 B语言
- B语言 是里奇和汤普逊最早开发 unix 的语言
- 他运行在bell实验室 的 PDP-8 上
- 1969 年最初用的是 B语言
- 1971 年开始对于 B语言 进行改造
- 在新买的 PDP-11 上用 B 给 B 写扩展,称之为 NewB
- 1973 年基本主体完成,改名叫 c语言
- 他们用手头的编译器和语言给 PDP-11 重写了一个 Unix Kernel
- 机器语言和汇编语言本来不具有移植性
- c语言 程序则可以使用在 任意架构 的处理器上
- 只要那种架构的处理器具有对应的 c语言编译器和库
- 那就能实现跨平台编译
- 也就是今天所说的交叉编译
- 这就是 c语言 在当时能够发展的原因
?
- B语言 也不是凭空创造的
- B语言源自什么呢?
Basic Combined Programming Language(BCPL)
- B语言源自BCPL(Basic Combined Programming Language)
- 1967 年由剑桥大学的 Matin Richards 制作
- 在同样由剑桥大学开发的 CPL语言 上改进而来
- BCPL 最早被用做牛津大学的 OS6操作系统 上面的开发工具
- 后来通过美国贝尔实验室的改进和推广成为了 UNIX 上的常用开发语言
- 最早 BCPL 语言的样子是这样的
- 这是这套表示法 有史以来最早的记录
- 这里也有一个类似的、什么 n 的东西
- 当时的换行符长什么样呢?
BCPL的换行符
- 这就是当时的换行符
- !*n
?
总结
- \n 就是换行
- 他对应着 ascii 字符的代码是(10)10进制
- 他的英文是 LF,意思是Line Feed
- 这样我就可以自由的控制哪里换行了!
- 可以做下面这个框架标题吗?
- 我们下次再说!
?
?