python print
1、print 终端打印带颜色
1.1 实现原理
- 终端的字符颜色是用转义序列控制的,是文本模式下的系统显示功能,和具体的语言无关。
- 转义序列是以ESC开头,即用\033来完成(ESC的ASCII码用十进制表示是27,用八进制表示就是033)。
1.2 标准格式
\033[显示方式;前景色;背景色m + 结尾部分:\033[0m
解释:
- 开头部分的三个参数:显示方式,前景色,背景色是可选参数,可以只写其中的某一个;
- 由于表示三个参数不同含义的数值都是唯一的没有重复的,所以三个参数的书写先后顺序没有固定要求,系统都能识别;
- 建议按照默认的格式规范书写。
- 对于结尾部分,其实也可以省略,但是为了书写规范,建议\033[***开头,\033[0m结尾。
数值表示的含义:
- 显示方式: 0(默认\)、1(高亮)、22(非粗体)、4(下划线)、24(非下划线)、 5(闪烁)、25(非闪烁)、7(反显)、27(非反显)
- 前景色: 30(黑色)、31(红色)、32(绿色)、 33(黄色)、34(蓝色)、35(洋 红)、36(青色)、37(白色)
- 背景色: 40(黑色)、41(红色)、42(绿色)、 43(黄色)、44(蓝色)、45(洋 红)、46(青色)、47(白色)
1.3 测试案例
def prRed(skk): print("\033[91m {}\033[00m" .format(skk))
def prGreen(skk): print("\033[92m {}\033[00m" .format(skk))
def prYellow(skk): print("\033[93m {}\033[00m" .format(skk))
def prBlue(skk): print("\033[94m {}\033[00m" .format(skk))
def prPurple(skk): print("\033[95m {}\033[00m" .format(skk))
def prCyan(skk): print("\033[96m {}\033[00m" .format(skk))
def prWrite(skk): print("\033[97m {}\033[00m" .format(skk))
prCyan("Hello World, ")
prYellow("It's")
prGreen("Geeks")
prRed("For")
prGreen("Geeks")
2、print 小技巧
2.1 %r
一会儿是%s,一会儿是%d,麻烦,有没有一个万能的?
import math
print("pi = %r" % math.pi)
output: pi = 3.141592653589793
print("pi = %r" % int(math.pi))
output: pi = 3
print("pi = %r" % str(math.pi))
output: pi = '3.141592653589793'
2.2 format
扩展 输出的时候,还可以用一个名曰:format的东西
#将format后面的内容以此填充
input: print "My name is {0} and I am {1}".format("xiaoma",20)
output: My name is xiaoma and I am 20
#{}里面相当于一个变量
input: print "My name is {name}".format(name="xiaoma")
output: My name is xiaoma
2.3 多变量分割符
- print() 函数输出多个变量时,print() 函数默认以空格隔开多个变量,如果读者希望改变默认的分隔符,可通过 sep 参数进行设置。
user_name = 'Charlie'
user_age = 8
#同时输出多个变量和字符串,指定分隔符
print("读者名:" ,user_name,"年龄:",user_age,sep='|')
output: 读者名:|Charlie|年龄:|8
2.4 函数输出默认换行
- print() 函数输出之后总会换行,这是因为 print() 函数的 end 参数的默认值是“\n”,这个“\n”就代表了换行。
- 如果希望 print() 函数输出之后不会换行,则重设 end 参数即可,例如如下代码:
#设置end 参数,指定输出之后不再换行
print(40,'\t',end="")
print(5O,'\t',end="")
print(60,'\t',end="")
output: 40 50 60
2.5 print 指定输出到文件
- file 参数指定 print() 函数的输出目标,file 参数的默认值为 sys.stdout,该默认值代表了系统标准输出,也就是屏幕,因此 print() 函数默认输出到屏幕。
- 实际上,完全可以通过改变该参数让 print() 函数输出到特定文件中,例如如下代码:
f = open("demo.txt","w")#打开文件以便写入
print('沧海月明珠有泪',file=f)
print('蓝回日暖玉生烟',file=f)
f.close()