Python 常用内置函数详解(二):print()函数----打印输出

目录

  • 一、功能
  • 二、语法和示例
    • [2.1 语法详解](#2.1 语法详解)
    • [2.2 示例](#2.2 示例)
      • [2.2.1 输出字符串](#2.2.1 输出字符串)
      • [2.2.2 输出数值](#2.2.2 输出数值)
      • [2.2.3 输出变量](#2.2.3 输出变量)
      • [2.2.4 输出彩色文字或背景](#2.2.4 输出彩色文字或背景)
      • [2.2.5 输出内容到文件](#2.2.5 输出内容到文件)
      • [2.2.6 特殊文字、符号、标志输出](#2.2.6 特殊文字、符号、标志输出)
      • [2.2.7 将多次输出内容到一行](#2.2.7 将多次输出内容到一行)
      • [2.2.8 进制输出](#2.2.8 进制输出)
      • [2.2.9 动态刷新控制台输出](#2.2.9 动态刷新控制台输出)

一、功能

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

二、语法和示例

2.1 语法详解

语法格式:

python 复制代码
print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)

参数说明:

  1. value:表示要输出的值,可以是数字、字符串、各种类型的变量等。
  2. ...:值列表,表示可以一次性打印多个值,输出多个值时,需要使用 "," (英文半角的逗号) 分隔,打印出来各个值之间默认用空格隔开。
  3. sep:表示打印值时,各个值之间的间隔符,默认值是一个空格,可以设置为其他的分隔符。
  4. end:表示打印完最后一个值需要添加的字符串,用来设定输出语句以什么结尾,默认是换行符 "\n",即打印完会跳到新行,可以换成其他字符串,如 end='\t'end='' 等,以实现不换行输出。
  5. sep 和 end 的参数必须是字符串,或者为 None,为 None 时意味着使用其默认值。
  6. file:表示输出的目标对象,可以是文件也可以是数据流,默认是 sys.stdout。可以设置 file=文件储存对象,把内容存到该文件中。
  7. flush:表示是否立刻将输出语句输出到目标对象,flush 值为 False 或者 True,默认 flush=False 表示输出值会保存在缓存中。当 flush=True 时,输出值强制写入文件。
  8. sep、end、file、flush 都必须以命名参数方式传参,否则会被当作需要输出的对象。
  9. 如果 print() 函数不传递任何参数,将会输出 end 参数的默认值,即打印一个空行。

2.2 示例

2.2.1 输出字符串

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

python 复制代码
print()  # 输出一个空行
print('')  # 输出一个空行
print("没有伟大的愿望,就没有伟大的天才!")  # 使用双引号将字符串括起来

# 使用三引号可多行输出字符,如三行输出的服务器登录界面
print(''' 登录服务器
管理员:___________
密 码:___________ ''')  # 字符最前和最后用三引号

print('go big or go home')  # 使用单引号将字符串括起来
print('go', 'big', 'or', 'go', 'home')  # 字符之间用','间隔,则字符串用空格连接
print('go' 'big' 'or' 'go' 'home')  # 字符之间不用','间隔,则字符串无空格连接
print('go' + 'big' + 'or' + 'go' + 'home')  # 用加号'+'连接输出字符串

print('www', 'mingrisoft', 'com', sep='.')  # 设置间隔符,字符之间用'.'间隔
print('2020', '7', '24', sep='-')  # 设置间隔符,字符之间用'-'间隔
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

2.2.2 输出数值

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

python 复制代码
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
# 不能直接使用'+'连接字符串和数值,会报错。异常信息为:
# TypeError: can only concatenate str (not "int") to str
print("广州恒大" + 43)  # 错误写法
# 使用'+'连接字符串和数值时,数值要转换为字符串。输出结果:广州恒大43
print("广州恒大" + str(43))
# 使用','连接字符串和数值,字符串和数值用空格分隔。输出结果:广州恒大 43
print("广州恒大", 43)
# 使用操作符'%e'%格式化数值为科学记数法。输出结果:1.205633e+14
print("%e" % 120563332111098)

2.2.3 输出变量

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

python 复制代码
s1 = 'go big or go home'  # 定义一个字符串变量s1
print(s1)  # 输出变量s1的值
num = 27  # 定义一个数值型变量num
print(num)  # 输出变量num的值

s2 = '你若盛开'  # 定义字符串变量s2
s3 = '蝴蝶自来'  # 定义字符串变量s3
print(s2, s3)  # 使用','连接变量s2和s3,中间用空格分隔
print(s2 + '\n' + s3)  # 使用'\n'连接变量s2和s3,换行分隔
print(s2 + s3)  # 使用'+'连接变量s2和s3,直接连接无空格
print(s2 + '\n', s3)  # 添加'\n'换行后,使用','连接的字符串前面仍然有一个空格

name = ['杨过', '临安', '1224', '小龙女']
print(name)
print('--'.join(name))  # 使用'--'连接列表内数据
print(' '.join(name))  # 使用空格' '连接列表内数据
print(''.join(name))  # 直接连接列表内数据

word = '世界那么大,'
name = '黄蓉'
how = '想出去看看!!'
print(word, name, how)  # 用','连接变量,中间用空格分隔
print(word, name, how, sep='.')  # 设置间隔符为'.'
print(word, name, how, sep='****')  # 设置间隔符为'****"

word = ["南京", "苏州", "上海", "杭州", "宁波"]
for item in word:  # 遍历列表
    print(item)  # 输出每个列表元素

word = ["南京", "苏州", "上海", "杭州", "宁波"]
for item in word:  # 输出列表变量的数据到一行
    print(item + ">>", end="")  # 元素之间用'>>'连接(不换行)

team = "广州恒大"
points = 63
print(team, points)  # 使用','可以直接连接字符串变量和数字变量
# 使用'+'连接字符串变量和数值变量前,必须先将数字转换为字符串
print(team + str(points))

un_title = ('人生苦短', '我用Python')
print(un_title)  # 打印元组
print(un_title[0]) # 打印元组中的第一个元素
print(un_title[1][2:])
un_title = ['Python', 18, '人生苦短,我用Python']
print(un_title)  # 打印列表
print(un_title[2])  # 打印列表中的第三个元素

2.2.4 输出彩色文字或背景

可以参考文章:https://blog.csdn.net/xw1680/article/details/104906287 在 PyCharm 下要输出彩色,可以在输出前设置显示方式,格式为:'\033[显示方式;前景色;背景色m '。显示方式,前景色,背景色是可选参数,可以只写其中的某一个;显示方式、前景色、背景色如下图所示:

示例代码:

python 复制代码
print('\033[1;31m Stay hungry,Stay foolish!\033[0m')  # 红色前景色输出名言
print('\033[1;32;45m 求知若饥,虚心若愚!\033[0m')  # 绿色前景色输出名言,背景色为紫色

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')  # 设置文字红色前景色,蓝色背景色显示

2.2.5 输出内容到文件

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

python 复制代码
fp = open('demo.txt', 'a+')  # 'a+'以读写模式打开文件
text = "go big or go home"
print(text, file=fp)  # 输出到文件中
fp.close()

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

2.2.6 特殊文字、符号、标志输出

调用系统提供的字符映射表,可以在 Pycharm 下输出特殊符号和标志。按 Win+R 键,输入 "charmap",调出字符映射表。单击想要插入到程序中的特殊字符,特殊符号将放大显示,如下图所示:

记住放大符号旁边的字符码。如要输入,它的字符码为 0x52,在 0x 和 52 之间加入 f0(零),即 0xf052,然后就可以通过 chr 函数进行输出。示例代码如下:

python 复制代码
print('㊗Ⓜ❤➰☮©✅❎☹')
print('🏃 🈶 😭 😄 🍐 📦')  # 输出人有悲欢离合
print('🌛 🈶 ☁ ☀ 🌕 🌘')  # 输出月有阴睛圆缺
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=",")
print(chr(8592))
print([chr(i) for i in range(8710, 8719)])  # 输出多个特殊字符

2.2.7 将多次输出内容到一行

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

python 复制代码
for x in range(0, 10):  # 设置输出内容区间为0~9
    print(x, end=' ')  # 输出数字用空格间隔输出到一行
for x in range(0, 10):  # 置输出内容区间为0~9
    print(x, end='+')  # 输出数字用加号连接
print("? = 100")  # 输出结果和原输入内容形成计算题
# 执行结果:0 1 2 3 4 5 6 7 8 9 0+1+2+3+4+5+6+7+8+9+? = 100

2.2.8 进制输出

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

python 复制代码
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()函数输出十六进制数
print('------------------------------------------------')
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))

2.2.9 动态刷新控制台输出

在 Python 中,可以动态刷新控制台的输出内容,以此来让控制台的界面更加简洁,便于用户查看输出信息。下面用一个倒计时程序,来演示动态刷新效果,代码如下:

python 复制代码
import time  # 导入时间模块

for i in range(10, -1, -1):
    time.sleep(1)  # 休眠1秒
    print('\r 距离结束还有 '.format(i) + str(i), 'S', end='')  # 输出内容到终端

如果想要使用 Python3 在终端中动态地输出多行信息,可以借助 reprint 库来实现,安装完成后引入 output 对象就可以直接输出。需要注意的是,该库只对终端环境有效,如果不是终端环境则会转化为普通的输出,并且由于 Windows 系统的特性,该库并不支持 Windows 环境,本示例所使用的操作系统为 rocky Linux 系统。代码如下:

python 复制代码
# pip install reprint
from reprint import output
import time
import random

print("Start print the form")
print("""
+--------+------------------------------+------------+---------------------+
| 代码 | 名称 | 比率 | 更新时间 |
|--------+------------------------------+------------+---------------------|
 """)
with output(initial_len=3, interval=0) as output_lines:
    while True:
        rate_line_0 = random.randint(10, 99)
        rate_line_1 = random.randint(10, 99)
        # 将当前时间格式化为字符串
        now_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
        # 输出到终端
        output_lines[0] = '| 177777 | yyy | {}% |2024-03-21 12:47:48 |'.format(rate_line_0)
        output_lines[1] = '+--------+------------------------------+------------+---------------------+'
        output_lines[2] = '| 188446 | xxx | {}% |{} |'.format(rate_line_1, now_time)
        time.sleep(1)

程序运行结果如下:

相关推荐
charlie1145141919 分钟前
C++ STL CookBook
开发语言·c++·stl·c++20
袁袁袁袁满9 分钟前
100天精通Python(爬虫篇)——第113天:‌爬虫基础模块之urllib详细教程大全
开发语言·爬虫·python·网络爬虫·爬虫实战·urllib·urllib模块教程
ELI_He99916 分钟前
PHP中替换某个包或某个类
开发语言·php
m0_7482361123 分钟前
Calcite Web 项目常见问题解决方案
开发语言·前端·rust
倔强的石头10631 分钟前
【C++指南】类和对象(九):内部类
开发语言·c++
老大白菜32 分钟前
Python 爬虫技术指南
python
Watermelo61736 分钟前
详解js柯里化原理及用法,探究柯里化在Redux Selector 的场景模拟、构建复杂的数据流管道、优化深度嵌套函数中的精妙应用
开发语言·前端·javascript·算法·数据挖掘·数据分析·ecmascript
古希腊掌管学习的神2 小时前
[搜广推]王树森推荐系统——矩阵补充&最近邻查找
python·算法·机器学习·矩阵
半盏茶香2 小时前
在21世纪的我用C语言探寻世界本质 ——编译和链接(编译环境和运行环境)
c语言·开发语言·c++·算法
Evand J3 小时前
LOS/NLOS环境建模与三维TOA定位,MATLAB仿真程序,可自定义锚点数量和轨迹点长度
开发语言·matlab