Bootstrap

print()函数——打印输出

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm=1001.2014.3001.5501

print()函数是Python编程最常见的函数,常用于输出程序结果,默认输出到屏幕,也可以输出到指定文件。

语法参考

print()函数的语法格式如下:

print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)

参数说明:

l  value:表示要输出的值;可以是数字、字符串、各种类型的变量等;

l  …:值列表,表示可以一次性打印多个值;输出多个值时,需要使用“,”(英文半角的逗号)分隔,打印出来各个值之间默认用空格隔开;

l  sep:表示打印值时,各个值之间的间隔符,默认值是一个空格,可以设置为其他的分隔符;

l  end:表示打印完最后一个值需要添加的字符串,用来设定输出语句以什么结尾,默认是换行符“\n”,即打印完会跳到新行,可以换成其他字符串,如end='\t' 或end=' '等,以实现不换行输出;

提示:sepend的参数必须是字符串;或者为None,为None时意味着使用其默认值。

l  file:表示输出的目标对象,可以是文件也可以是数据流,默认是sys.stdout。可以设置“file = 文件储存对象”,把内容存到该文件中;

l  flush:表示是否立刻将输出语句输出到目标对象,flush值为False或者True,默认flush=False,表示输出值会保存在缓存中;当flush=True时,输出值强制写入文件。

注意:sependfileflush都必须以命名参数方式传参,否则会被当作需要输出的对象。

 

提示:如果print()函数不传递任何参数,将会输出end参数的默认值,即打印一个空行。

快用锦囊

锦囊01  输出字符串

字符串可以直接输出,也可以和数字、运算符等形成表达式进行输出。示例代码如下:

print()                     输出一个空行

print('')                   输出一个空行

#使用三引号可多行输出字符,如三行输出的服务器登录界面

print('''      登录服务器

管理员:___________

  码:___________    '''  )          字符最前和最后用三引号

运行结果如下:

 

 

      登录服务器

管理员:___________

  码:___________

 

print("没有伟大的愿望,就没有伟大的天才!")   使用双引号将字符串括起来

运行结果如下:

没有伟大的愿望,就没有伟大的天才!

 

print('go big or go home')                   使用单引号将字符串括起来

运行结果如下:

go big or go home

 

print('go','big','or','go','home')         字符之间用','间隔,则字符串用空格连接

运行结果如下:

go big or go home

 

print('go' 'big' 'or' 'go' 'home')         字符之间不用','间隔,则字符串无空格连接

运行结果如下:

Gobigorgohome

 

print('go''big''or'+'go'+'home')   用加号“+ 连接输出字符串

运行结果如下:

Gobigorgohome

 

print('www','mingrisoft','com',sep='.')    设置间隔符,字符之间用'.'间隔

运行结果如下:

www.mingrisoft.com

 

print('2020','7','24',sep='-')              设置间隔符,字符之间用'-'间隔

运行结果如下:

2020-7-24

 

print(50 * '= ')            一次输出多个字符,使用数字、运算符和字符串

运行结果如下:

===================================================================

 

使用chr()函数,根据字符的ASCII值,输出字符

print(chr(65))              大写字母的ASCII值为65~90

运行结果如下:

A

 

print(chr(97))              小写字母的ASCII值为97~122

运行结果如下:

a

 

print(chr(8544),chr(8545),chr(8546),chr(8547))

运行结果如下:

   

 

使用ord()函数将字符转换为对应的整数

print(ord(''),ord(''),ord(''),ord(''))

运行结果如下:

29983 21270 21361 26426

锦囊02  输出数值

数值类型可以直接输出,但使用“+”连接数值和其他数据类型时,系统会默认为是加法计算,会报错。可以使用“,”连接,或者将数值作为字符串来处理,两端加单引号或双引号。示例代码如下:

print(1314)                       直接输出整数,可不带双引号或单引号。输出结果:1314

print(12.22)                      直接输出浮点数。输出结果:12.22

print(10 / 3)                     可以包含算术表达式,输出运算结果为:3.3333333333333335

print(100 * 3.13 + 60)           可以包含算术表达式,输出运算结果为:373

print(2, 0, 2, 0)                 使用“,”连接要输出的数值,中间用空格连接。输出结果:2 0 2 0

print(192, 168, 1, 1, sep='.')   使用“.”连接输出数值,数值间用“.”间隔。输出结果:192.168.1.1

print("广州恒大+ 43)             不能直接使用“+”连接字符串和数值,会报错。异常信息为:

                               # TypeError: can only concatenate str (not "int") to str

print("广州恒大str(43)) 使用“+”连接字符串和数值时,数值要转换为字符串。输出结果:广州恒大43

print("广州恒大", 43)      使用“,”连接字符串和数值,字符串和数值用空格分隔。输出结果:广州恒大 43

print("%e" % 120563332111098)     使用操作符"%e"%格式化数值为科学记数法。输出结果:1.205633e+14

锦囊03  输出变量

字符串、数值型、布尔型、列表、字典等各种变量都可以直接输出。示例代码如下:

stra= 'go big or go home'     定义一个字符串变量stra

print(stra)                    输出变量stra的值

运行结果如下:

go big or go home

 

num = 27                       定义一个数值型变量num

print(num)                     输出变量num的值

运行结果如下:

27

 

stra= '你若盛开'               定义字符串变量stra

strb= '蝴蝶自来'               定义字符串变量strb

print(stra,strb)             使用“,”连接变量strastrb,中间用空格分隔

print(stra +'\n' + strb)     使用'\n'连接变量strastrb,换行分隔

print(stra + strb)            使用“+”连接变量strastrb,直接连接无空格

运行结果如下:

你若盛开 蝴蝶自来

你若盛开

蝴蝶自来

你若盛开蝴蝶自来

 

print(stra +'\n' , strb)     添加'\n'换行后,使用“,”连接的字符串前面仍然有一个空格

运行结果如下:

你若盛开

 蝴蝶自来

 

name = ['杨过','临安','1224','小龙女']

print(name)

print('--'.join(name))                 使用“--”连接列表内数据

print(' '.join(name))                  使用空格“ ”连接列表内数据

print(''.join(name))                   直接连接列表内数据

运行结果如下:

 ['杨过', '临安', '1224', '小龙女']

杨过--临安--1224--小龙女

杨过 临安 1224 小龙女

杨过临安1224小龙女

 

word = '世界那么大,'

name= '黄蓉'

how= '想出去看看!!'

print(word, name, how)                   用“,”连接变量,中间用空格分隔

print(word, name, how,sep='.')          设置间隔符为“,”

print(word, name, how,sep='****')       设置间隔符为“****

运行结果如下:

世界那么大, 黄蓉 想出去看看!!

世界那么大,.黄蓉.想出去看看!!

世界那么大,****黄蓉****想出去看看!!

 

word = ["南京","苏州","上海","杭州","宁波"]

for item in word:                        遍历列表

    print(item)                           输出每个列表元素

运行结果如下:

南京

苏州

上海

杭州

宁波

 

for item in word:                        输出列表变量的数据到一行

    print(item + ">>",end="")           元素之间用“>>”连接

运行结果如下:

南京>>苏州>>上海>>杭州>>宁波>>

 

team="广州恒大"

points=63

print (team,points)                      使用“,”可以直接连接字符串变量和数字变量

使用“+”连接字符串变量和数值变量前,必须先格式化数字变量为字符串

print (team + str(points))

运行结果如下:

广州恒大 63

广州恒大63

锦囊04  特殊文字、符号、标志输出

Windows 10提供的表情包(切换到微软输入法,再通过快捷键〈Ctrl+Shift+B〉可以调出表情包)提供了大量图标和特殊符号,在PyCharm下可使用大部分表情包,但是在Python自带的IDE中只能使用部分特殊字符。

在IDLE中,利用Windows 10表情包输入特殊符号,代码如下:

输出结果如图1所示。

图1  在IDLE中输出特殊符号

在PyCharm中,利用Windows 10表情包输入特殊符号,代码如下:

输出结果为:

调用系统提供的字符映射表,也可以在Pycharm下输出特殊符号和标志。

按win+R键(win键见图2),输入“charmap”,调出字符映射表。单击想要插入到程序中的特殊字符,特殊符号将放大显示。如图3示。记住放大符号旁边的字符码。如要输入

,它的字符码为0x43,在0x和43之间加入f0(零),即0xf043,然后就可以通过chr函数进行输出。代码如下:

print(chr(0xf043))                      #0xf04316进制数

输出结果为:

#直接使用字符集的编码,输出多个特殊符号

print(chr(0xf021),chr(0xf035),chr(0xf046),chr(0xf051),chr(0xf067),chr(0xf0e5),chr(0xf0f2))

输出结果为:

for in range(0xf035,0xf045):             #设置字符集编码的区间,输出多个特殊符号

    print(chr(i),end=",")

 

输出结果为:

如果知道十进制字符编码的值也可以很方便的输入特殊字符。如要输入“←”,只要知道该符号的十进制字符编码“8592”,具体特殊字符编码十进制对照表如表1、表2所示。编写代码:

print(chr(8592))

输出结果为:←

print([chr(i) for in range(8710,8719)])   输出多个特殊字符

表1  特殊字符编码对照表――箭头符号

特殊符号

十进制编码

特殊符号

十进制编码

特殊符号

十进制编码

←

↑

→

↓

↔

↵

⇐

⇑

⇒

⇓

⇔

∀

 

表2  特殊字符编码对照表――数字符号

特殊符号

十进制编码

特殊符号

十进制编码

特殊符号

十进制编码

∂

∃

∅

∇

∈

∉

∋

∏

−

−

∗

√

∝

∞

∠

⊥

⊦

∩

∪

∫

∴

∼

≅

≅

≠

≡

≤

≥

⊂

⊃

 

锦囊05  将多次输出内容到一行

Python中,print()函数默认输出结束后以换行结束,即end的默认值是换行符“\n”,打印完会跳到新行。如果打印完成不换行,只需将end设置成其他字符串,如end='\t' 、end=' '或“《”等字符。下面是将数字0~9输出到一行显示,代码如下:

for in range(0, 10):         设置输出内容区间为0~9

     print(x, end=' ')          输出数字用空格间隔输出到一行

运行结果如下:

0 1 2 3 4 5 6 7 8 9

 

for in range(0, 10):         置输出内容区间为0~9

     print(x, end='+')          输出数字用加号连接

print("? = 100")                输出结果和原输入内容形成计算题

运行结果如下:

0+1+2+3+4+5+6+7+8+9+? = 100

锦囊06  指定位数编号输出

zfill()函数可按指定位数输出固定位数的数据编号,如将输入的数字格式化为5位编号输出,代码如下:

instr=input('请输入一个数字:')

print (instr.zfill(5))        输出5位数字编号

运行程序,输入一个数字,将会格式化为5位编号,如图4所示。

图4  输出5位数字编号

如果要循环输出固定位数的数字编号,该怎么输出呢?只需使用循环语句,即可方便的输出,代码如下:

for i in range(1,20):       设置输出区间为1~19

    n=str(i)                  将数字转为字符串

    s = n.zfill(3)           将格式化的编号赋值给s

    print (s)                 输出s

运行结果如下:

001

002

003

除了zfill()函数,format()函数也可以实现强大的格式化输出,如:

x=112

instr=input('请输入一个数字:')

print (format(instr,'0>5'))        输出5位数字编号

print (format(instr,'*>5'))        输出5位字符串,空位用*填充

print (format(instr,'>5'))         #  输出5位字符串,空位用空格填充

运行结果如下:

请输入一个数字:23

00023

***23

   23

锦囊07  进制输出

输出进制数可以采用操作符、进制转换函数和格式化函数format()来实现。下面通过代码与注释介绍应用。

x=112

print("%o"%x)                使用操作符输出八进制数

print("%x"%x)                使用操作符输出十六进制数

print("nHex = %x,nDec = %d,nOct = %o" %(x,x,x)) 输出十六进制、十进制、八进制数

print(bin(x))                使用bin()函数输出二进制数

print(oct(x))                使用oct()函数输出八进制数

print(hex(x))                使用hex()函数输出十六进制数

运行结果如下:

160

70

nHex = 70,nDec = 112,nOct = 160

0b1110000

0o160

0x70

 

x = 112

print("{0:d}".format(x))            使用format函数输出十进制数

print("{0:x}".format(x))            使用format函数输出十六进制数

print("{0:o}".format(x))            使用format函数输出八进制数

print("{0:b}".format(x))            使用format函数输出二进制数

print("int: {0:d};  hex: {0:x};  oct: {0:o};  bin: {0:b}".format(x)) #综合输出进制数

综合输出带符号的各进制数

print("二进制: {0:#b}; 八进制: {0:#o} ;十进制: {0:#d};  十六进制: {0:#x}".format(x))

运行结果如下:

112

70

160

1110000

int: 112;  hex: 70;  oct: 160;  bin: 1110000

二进制: 0b1110000; 八进制: 0o160 ;十进制: 112;  十六进制: 0x70

锦囊08  输出彩色文字或背景

在PyCharm下要输出要输出彩色,可以在输出前设置显示方式,格式为:'\033[显示方式;前景色;背景色m '。显示方式,前景色,背景色是可选参数,可以只写其中的某一个;显示方式、前景色、背景色如图7所示。

print('\033[1;31m Stay hungry,Stay foolish!\033[0m')   红色前景色输出名言

print('\033[1;32;45m 求知若饥,虚心若愚!\033[0m')   绿色前景色输出名言,背景色为紫色

程序运行结果如图5所示。

图5  输出运行结果

print('go big or go\033[1;35m home \033[0m!')   设置文字中home 紫色前景色显示

设置文字中home绿色前景色,黄色背景色显示

print('go big or go\033[1;32;43m home \033[0m!')

print('\033[1;31;44mgo big or go home \033[0m')  设置文字红色前景色,蓝色背景色显示

程序的运行结果如图6所示。

图6  输出运行结果

说明:PyCharm下要输出要输出彩色,可以在输出前设置显示方式,格式为:'\033[显示方式;前景色;背景色m '。显示方式,前景色,背景色是可选参数,可以只写其中的某一个;显示方式、前景色、背景色如图7所示。

     

图7  显示方式、前景色与背景色

锦囊09  对齐输出数据

对齐数据可以使用rjustljustcenter来实现。也可以使用格式化函数format()实现,下面通过代码和注释来实现。

team="格林兰岛"

print(team.ljust(10))              #左对齐字符串,用空格号占位

print(team.ljust(10,'*'))          #左对齐字符串,用*号占位

print(team.rjust(10,'*'))          #右对齐字符串,用*号占位

print(team.rjust(10))              #右对齐字符串,用空格号占位

print(team.center(10))             #中间对齐字符串,用空格号占位

print(team.center(10,'*'))         #中间对齐字符串,用*号占位

运行结果如下:

格林兰岛     

格林兰岛******

******格林兰岛

       格林兰岛

   格林兰岛  

***格林兰岛***

 

s="多特蒙德"

print(format(s,'*>20'))  右对齐字符串,“*”为号占位符,“>”为右对齐符号,20宽度

print(format(s,'#<20'))  左对齐字符串,“#”为号占位符,“<”为左对齐符号,20宽度

print(format(s,' ^20'))  中间对齐字符串,空格“ ”为占位符,“^”对齐符号,20宽度

运行结果如下:

****************多特蒙德

多特蒙德################

        多特蒙德       

 

car=[ [1,"奔驰",489163],[2,"宝马",455051] ,[3,"奥迪",445300]]

for item in car:                                          循环读取列表数据

    tup='{0:0>3}\t{1:*^12}\t{2:$>12.2f}'                设置对其格式和占位符

    print(tup.format(item[0],item[1],float(item[2])))  输出数据未设置格式

运行结果如下:

001    *****奔驰*****    $$$489163.00

002    *****宝马*****    $$$455051.00

003    *****奥迪*****    $$$445300.00

锦囊10  输出内容到文件

设置参数file为目标文件名称,即可输出需要输出的内容到文件。代码如下:

fp = open('mingrisoft.txt','a+')                # 'a+'以读写模式打开文件

text="go big or go home"

print(text,file=fp)                                   输出到文件中

fp.close()

执行上面的代码后,将在程序所在目录下生成一个名称为mingrisoft.txt的文件,该文件的内容为文字“go big or go home”。

应用场景

场景一:输出嵌套列表的数据

对于复杂嵌套列表,如何格式化输出对应的数据呢?可以利用for循环读取数据,然后进行格式化处理,即可实现嵌套列表的格式化输出。代码如下:

college=['1,哈佛大学,Harvard University,美国,100','2,斯坦福大学,Stanford University,美国,76.5','3,剑桥大学,University of Cambridge,英国,70.9','4,麻省理工学院,Massachusetts Institute of Technology,美国,70.4','5,加州大学-伯克利,University of California Berkeley,美国,69.1']

print("{0:<3}\t{1:<12}\t{2:<31}\t{3:<4}\t{4:<6}".format('排名','中文名称','英文名称','国家','分数'))

for item in college:

    line=item.split(',')

    tupl = '{0:0>3}\t{1:<12}\t{2:<38}\t{3:<4}\t{4:>6.2f}'

    print(tupl.format(line[0],line[1],line[2],line[3],float(line[4])))

运行程序,输出效果如图8所示。

图8  显示方式、前景色、背景色

上面输出当中,采用了左对齐输出,输出时使用制表符“\t”进行对齐。如果要采用中间对齐方式,最会出现对齐效果不佳的情况,这是因为中文字符和英文占据的宽度不同。空格采用中文的空格,可以很好地输出效果。

chn = chr(12288)
print(chn)
tupl1=
'{0:<3}\t{1:'+chn+'^10}\t{2:^30}\t{3:^6}\t{4:^6}'
print(tupl1.format('排名','中文名称','英文名称','国家','分数'))
for item in college:
    line=item.split(
',')
    tupl2 = 
'{0:0<3}\t{1:'+chn+'^10}\t{2:^38}\t{3:^6}\t{4:6.2f}'
    
print(tupl2.format(line[0],line[1],line[2],line[3],float(line[4])))

运行程序,输出效果如图9所示。

图9  中间对齐方式

场景二:中英文多列对齐输出

中英文多列对齐输出德国、法国、英国2018年汽车销量数据。读取多个列表的数据,对数据输出时,如果进行格式化处理,输出不对齐,影响输出效果。代码如下:

gem=[["大众",643518],["奔驰",319163],["宝马",265051],["福特",252323],["雪铁龙",227967],["奥迪",255300]]

fra=[["雪铁龙", 698985],["雷诺",547704],["大众",259268],["福特",82633],["宝马",84931],["奔驰",73254]]

eng=[["福特",254082],["大众",203150],["雪铁龙",177298],["奔驰",172238],["宝马",172048],["奥迪",143739]]

for item1,item2,item3 in zip(gem,fra,eng):

    print(item1[0],item1[1],"  ",item2[0],item2[1],"  ",item3[0],item3[1])

运行程序,输出效果如图10所示。

图10  对齐输出结果

如果数据中包含中文,则输出的列数据无法排列整齐。使用对齐函数ljust()对数据进行居左对齐显示,也无法对齐数据。因为中文占据的字符长度与英文不同,此时可以使用制表符’\t’来进行对齐输出。代码如下:

for item1,item2,item3 in zip(gem,fra,eng):

    item11 = item1[0].ljust(8)

    item12 = str(item1[1]).ljust(8)

    item21 = item2[0].ljust(8)

    item22 = str(item2[1]).ljust(8)

    item31 = item1[0].ljust(8)

    item32 = str(item3[1]).ljust(8)

    print(item11 +"\t",item12+"\t","  ",item21+"\t",item22+"\t","  ",item31+"\t",item32)

运行程序,输出效果如图11所示。

图11  对齐结果输出

场景三:实现程序主界面

利用print函数,可以输出程序界面,代码如下:

print("""\033[1;35m

  ****************************************************************

                        企业编码生成系统

  ****************************************************************

      1.生成6位数字防伪编码 213563型)

      2.生成9位系列产品数字防伪编码(879-335439)

      3.生成25位混合产品序列号(B2R12-N7TE8-9IET2-FE35O-DW2K4)

      4.生成含数据分析功能的防伪编码(5A61M0583D2)

      5.半智能防伪码自动生成(按指定样式数量自动生成)

      6.企业粉丝防伪码抽奖

      0.退出系统

  ================================================================

  说明:通过数字键选择菜单

  ================================================================

\033[0m""")

运行程序,将输出如图12所示的程序运行主菜单。

图12  设置每行22个字的输出

场景四:分行输出K3国际列车的站名

如果字符串过长,希望多行显示,可以通过切片技术实现多行的输出,如下代码,设置width变量的值,即可实现对K3国际列车的站名多行输出。代码如下:

k3='北京、张家口南、集宁南、朱日和、二连、扎门乌德、赛音山达、乔伊尔、乌兰巴托、宗哈拉、达尔汗、苏赫巴托、多卓尔内、纳乌什基、吉达、乌兰乌德、斯柳江卡、伊尔库茨克、集马、尼日涅乌丁斯克、伊兰斯卡雅、克拉斯诺亚尔斯克、马林斯克、泰加、新西伯利亚、巴拉宾斯克、鄂木斯克、伊希姆、秋明、斯维尔德洛夫斯克、彼尔姆、巴列集诺、基洛夫、高尔基、弗拉基米尔、莫斯科'

width=22

len1=0

k3line=""

while len(k3)>width:

   k3line=k3[0:width]

   k3=k3[width:len(k3)]

   print(k3line)

print(k3[0:len(k3)])

程序的运行结果如图13和图14所示。

图13  设置每行22个字的输出

 

图14  设置每行30个字的输出

 

;