ASCII中\r和\n的区别(结合历史原因及python解释)

结论(在python中)

  • \r 代表移动输入光标到【行首】继续输入
  • \n 代表移动输入光标到【下行首】继续输入
  • \r\n 代表移动输入光标到【下行首】继续输入(有\n换行到行首了,不管上一行在哪里都被\n覆盖了)
  • 有的系统编辑器认\n,有的只认\r\n。综上,为了通用代码中一般用\r\n(一般哈,具体问题具体分析)

历史原因

  • 问题:
    在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意儿,每秒钟可以打10个字符。
    它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。
    要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。

  • 解决:
    于是想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。
    一个叫做"回车",告诉打字机把打印头定位在左边界。
    另一个叫做"换行",告诉打字机把纸向下移一行。

  • 计算机出现:
    这两个概念也就被搬到了计算机上。
    起初,存储器很贵,一些科学家认为在每行结尾加两个字符太浪费了,加一个就可以。
    于是,就出现了分歧:有的编辑器只认\r\n,有的编辑器则两个都认。
    所以,不同系统上的或者不同编辑器保存的文本在非源编辑器打开末尾出现奇怪的符号可以考虑是这个问题了。

python实例

  • 情景:要在命令行输出一个进度条

使用\r

import time
def demoPgr():
    for i in range(101):
        bar = '[' + '=' * (i // 2) + ' ' * (50 - i // 2) + ']'
        print(f"\r{bar} {i:3}%", end='', flush=True) # \r在这里的作用是移动到行首以覆盖方式输出
        time.sleep(0.05)
demoPgr()
print()

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

使用\n 或者 \r\n

import time
def demoPgr():
    for i in range(101):
        bar = '[' + '=' * (i // 2) + ' ' * (50 - i // 2) + ']'
        print(f"\n{bar} {i:3}%", end='', flush=True) # \n换行输出
        # print(f"\r\n{bar} {i:3}%", end='', flush=True) # \r回到行首,\n换行输出
        time.sleep(0.05)
demoPgr()
print()

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值