0x00
Python的print()
末尾自带n
,如果不想要末尾的n
可以使用end=''
控制末尾的字符。
例如这样:
# 示例一
print("12",end='')
print("34")
# 打印
# 1234
# 示例一
print("12",end='-')
print("34")
# 打印
# 12-34
0x01
假如现在要写一个加载进度条,大部分人下意识会这样用:
代码语言:javascript复制为了展示方便使用延时
import time
print('加载中',end="")
for n in range(0,10):
print(".",end="")
time.sleep(0.5)
print("n加载成功!")
显示如下:
代码语言:javascript复制加载中..........
加载成功!
虽然结果看着没问题,但过程有问题。
理想中的进度条.
应该是渐渐出现的,就像这样:
加载中.
加载中..
加载中...
加载中....
可这个程序的加载中..........
是整个出现的,就像这样:
// 运行
// 1s
// 2s
// 3s
// 4s
// 5s
加载中..........
0x02
经过查询得知,print
只有在接收到n
时才会把数据送到控制台显示。
例如:
# 示例一
print('1',end='') # 控制台不显示
print('2',end='') # 控制台不显示
print('3') # 控制台显示 123
# 示例二
print('1',end='') # 控制台不显示
print('2',end='') # 控制台不显示
print('') # 控制台显示 12
# 示例三
print('1',end='') # 控制台不显示
print('2',end='') # 控制台不显示
print('3n',end='') # 控制台显示 123
0x03
解决起来也很简单,给print()
加一个flush=True
即可。
例如上面的0x01的程序,只要改成这样就能实现理想中的效果了。
import time
print('加载中',end="",flush=True)
for n in range(0,10):
print(".",end="",flush=True)
time.sleep(0.5)
print("n加载成功!")