自学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=' '等,以实现不换行输出;
提示:sep和end的参数必须是字符串;或者为None,为None时意味着使用其默认值。
l file:表示输出的目标对象,可以是文件也可以是数据流,默认是sys.stdout。可以设置“file = 文件储存对象”,把内容存到该文件中;
l flush:表示是否立刻将输出语句输出到目标对象,flush值为False或者True,默认flush=False,表示输出值会保存在缓存中;当flush=True时,输出值强制写入文件。
注意:sep、end、file、flush都必须以命名参数方式传参,否则会被当作需要输出的对象。
提示:如果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) # 使用“,”连接变量stra和strb,中间用空格分隔
print(stra +'\n' + strb) # 使用'\n'连接变量stra和strb,换行分隔
print(stra + strb) # 使用“+”连接变量stra和strb,直接连接无空格
运行结果如下:
你若盛开 蝴蝶自来
你若盛开
蝴蝶自来
你若盛开蝴蝶自来
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)) #0xf043是16进制数
输出结果为:
#直接使用字符集的编码,输出多个特殊符号
print(chr(0xf021),chr(0xf035),chr(0xf046),chr(0xf051),chr(0xf067),chr(0xf0e5),chr(0xf0f2))
输出结果为:
for i in range(0xf035,0xf045): #设置字符集编码的区间,输出多个特殊符号
print(chr(i),end=",")
输出结果为:
如果知道十进制字符编码的值也可以很方便的输入特殊字符。如要输入“←”,只要知道该符号的十进制字符编码“8592”,具体特殊字符编码十进制对照表如表1、表2所示。编写代码:
print(chr(8592))
输出结果为:←
print([chr(i) for i in range(8710,8719)]) # 输出多个特殊字符
表1 特殊字符编码对照表――箭头符号
特殊符号 | 十进制编码 | 特殊符号 | 十进制编码 | 特殊符号 | 十进制编码 |
← | ← | ↑ | ↑ | → | → |
↓ | ↓ | ↔ | ↔ | ↵ | ↵ |
⇐ | ⇐ | ⇑ | ⇑ | ⇒ | ⇒ |
⇓ | ⇓ | ⇔ | ⇔ | ∀ | ∀ |
表2 特殊字符编码对照表――数字符号
特殊符号 | 十进制编码 | 特殊符号 | 十进制编码 | 特殊符号 | 十进制编码 |
∂ | ∂ | ∃ | ∃ | ∅ | ∅ |
∇ | ∇ | ∈ | ∈ | ∉ | ∉ |
∋ | ∋ | ∏ | ∏ | ∑ | − |
− | − | ∗ | ∗ | √ | √ |
∝ | ∝ | ∞ | ∞ | ∠ | ∠ |
∧ | ⊥ | ∨ | ⊦ | ∩ | ∩ |
∪ | ∪ | ∫ | ∫ | ∴ | ∴ |
∼ | ∼ | ≅ | ≅ | ≈ | ≅ |
≠ | ≠ | ≡ | ≡ | ≤ | ≤ |
≥ | ≥ | ⊂ | ⊂ | ⊃ | ⊃ |
锦囊05 将多次输出内容到一行
Python中,print()函数默认输出结束后以换行结束,即end的默认值是换行符“\n”,打印完会跳到新行。如果打印完成不换行,只需将end设置成其他字符串,如end='\t' 、end=' '或“《”等字符。下面是将数字0~9输出到一行显示,代码如下:
for x in range(0, 10): # 设置输出内容区间为0~9
print(x, end=' ') # 输出数字用空格间隔输出到一行
运行结果如下:
0 1 2 3 4 5 6 7 8 9
for x 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 对齐输出数据
对齐数据可以使用rjust、ljust和center来实现。也可以使用格式化函数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个字的输出