Python之print打印

本文详细介绍了Python中打印变量的多种方法,包括基本打印、字符串拼接、占位符、打印多个变量的技巧,以及Python3.6以后的f-string。适合初学者和进阶者了解和实践Python调试与输出技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python是一门脚本语言,少不了使用各种print打印调试,本文总结一下python print打印的几种方法。

1 单独打印变量

1.1 只打印变量:

方法:

print(variable)

示例:

name = "Mike"
age = 21

print(name)
print(age)

输出:

Mike
21

1.2 带其他信息:

示例:

name = "Mike"
age = 21
print('my name is', name)
print('my age is', age)

这里“,”起到python中的字符串拼接作用。

输出:

my name is Mike
my age is 21

1.3 占位符(%-formatting):

示例:

name = "Mike"
age = 21
print('my name is %s' %name)
print('my age is %d' %age)
#print('my age is %d', %age)  # wrong 变量值与打印内容不能以逗号分开

%s %d是一个占位符,其作用就是暂时霸占一个位置,等正确的内容来了之后再安排插进去。

注意:当使用占位的方式进行变量的打印的时候,变量值与打印内容不能以逗号分开,否则会报错。
输出:

my name is Mike
my age is 21

2 打印多个变量

2.1 字符串拼接

可以通过将多个变量串联为字符串来打印多个变量。

方法:

print(str(variable1) + str(variable2) + str(variable3))

注意:

  • 如果要显示任何消息或分隔符,也可以将它们与变量连接起来。
  • 如果变量是字符串,则无需使用str()

示例:

name = "Mike"
age = 21

# 仅打印多个变量,多个变量以逗号分割
print(name, age)

# 逗号作为连接符,print时将,转为空格(sep参数控制的)
print('my name is',  name, 'age is', age)

# 没有分割符
print('my name is' + str(name) + 'age is' + str(age))

# 加入空格 逗号分割
print('my name is' +' ' + str(name) +','+ 'age is' + ' ' + str(age))

输出:

Mike 21
my name is Mike age is 21
my name isMikeage is21
my name is Mike,age is 21

2.2 占位符(%-formatting)

示例:

print('my name is %s age is %d ' %(name, age))

输出:

my name is Mike age is 21

2.3 使用format方法

示例:

name = "Mike"
age = 21
# 花括号内省略字段名,传递位置参数
print('my name is {} age is {} '.format(name, age))

# 可以通过数字形式的简单字段名传递位置参数
print('my name is {0} age is {1} '.format(name, age))

# 使用变量名形式的简单字段名传递关键字参数
print('my name is {na} age is {ag} '.format(na = name, ag = age))

以上几种写法实现的效果相同。

输出:

my name is Mike age is 21
my name is Mike age is 21
my name is Mike age is 21

2.4 python3.6 新方法

从Python 3.6开始,f-string是格式化字符串的一种很好的新方法。与其他格式化方式相比,它们不仅更易读,更简洁,不易出错,而且速度更快!

示例:

print(f'my name is {name} age is {age}')

输出:

my name is Mike age is 21
<think>我们正在解决Pythonprint输出中文乱码的问题。根据引用内容,我们可以总结出以下几种常见原因和解决方案: 原因1:Python 2 中默认编码不是utf-8(常见于Python 2) 解决方案:在文件开头设置默认编码(注意:Python 3中已移除sys.setdefaultencoding方法) import sys reload(sys) # Python 2需要,Python 3不需要 sys.setdefaultencoding('utf-8') 原因2:文件保存编码与Python解析编码不一致 解决方案:在文件头部添加编码声明,并确保文件保存为相应编码(如UTF-8) # -*- coding: utf-8 -*- 原因3:在Python 2中使用print语句打印多个对象时,如果使用括号(即print作为函数使用),会被解释为打印元组,导致非字符串对象(如元组)不自动解码 解决方案:使用print语句(不加括号)或者分别打印多个字符串 原因4:终端环境的编码与输出编码不一致 解决方案:调整终端的编码设置(如Windows的cmd可以改为使用chcp 65001切换到UTF-8编码) 下面我们详细说明: 步骤1:确保文件保存为UTF-8编码(无BOM) 在编辑器(如VSCode, Sublime, Vim等)中设置文件编码为UTF-8。 步骤2:在文件开头添加编码声明(对于Python 2和3都适用) ```python # -*- coding: utf-8 -*- ``` 步骤3:根据Python版本选择处理方式 - 对于Python 2: ```python import sys reload(sys) # 重新加载sys模块以启用setdefaultencoding sys.setdefaultencoding('utf-8') # 设置默认编码 ``` 注意:在Python 2中,打印多个变量时,避免使用print作为函数(即加括号),而应该使用print语句: ```python # 正确 print s, t # 输出:你好 中国 # 错误(会被解释为打印元组) print(s, t) # 输出:('\xe4\xbd\xa0\xe5\xa5\xbd', '\xe4\xb8\xad\xe5\x9b\xbd') ``` - 对于Python 3: 由于Python 3默认使用UTF-8编码,通常不需要设置默认编码(且不再有sys.setdefaultencoding方法)。如果出现乱码,检查文件是否保存为UTF-8,以及终端是否支持UTF-8。 步骤4:处理终端编码问题 在Windows命令提示符(cmd)中,默认编码是GBK,可以执行以下命令切换到UTF-8: chcp 65001 然后重新运行程序。 在Linux或macOS终端,通常默认支持UTF-8,如果遇到问题,可以检查环境变量: echo $LANG 确保其包含UTF-8(如en_US.UTF-8)。 步骤5:如果以上方法无效,尝试将字符串显式编码/解码 例如,在Python 2中: s = '你好' print s.decode('utf-8') # 将字符串从utf-8解码成unicode再打印Python 3中,字符串默认是unicode,所以直接打印即可。但如果从外部读取的数据是字节串,需要先解码: s = b'\xe4\xbd\xa0\xe5\xa5\xbd' print(s.decode('utf-8')) 总结表格: | 原因 | Python版本 | 解决方案 | |------|------------|----------| | 默认编码非UTF-8 | Python 2 | 设置sys.setdefaultencoding('utf-8') | | 文件保存编码与声明不符 | 通用 | 文件头部添加`# -*- coding: utf-8 -*-`并保存为UTF-8 | | 使用print函数打印多个对象(Python 2) | Python 2 | 使用print语句(不加括号)或分别打印 | | 终端编码不匹配 | 通用 | 调整终端编码为UTF-8(Windows: chcp 65001) | | 字符串未正确解码 | 通用 | 对字节串进行正确解码(.decode('utf-8')) | 示例代码(Python 2): ```python # -*- coding: utf-8 -*- import sys reload(sys) sys.setdefaultencoding('utf-8') s = '你好' t = '世界' print s, t # 正确输出:你好 世界 ``` 示例代码(Python 3): ```python # -*- coding: utf-8 -*- s = '你好' t = '世界' print(s, t) # 输出:你好 世界 ``` 注意:在Python 3中,如果从文件读取或网络接收的数据是字节流,需要先解码成字符串再打印。 相关问题: 1. 如何检查Python当前环境的默认编码? 2. Python 2和Python 3在字符串处理上有哪些主要区别? 3. 如何在Windows命令提示符中永久设置UTF-8编码? 4. 如何解决Python写入文件时中文乱码的问题? 5. 如何判断一个字符串是字节串(bytes)还是Unicode字符串?</think>### Python `print` 函数输出中文乱码的终极解决方案 当 Python 输出中文出现乱码(如 `\xe4\xbd\xa0\xe5\xa5\xbd`)时,通常由编码配置不匹配引起。以下是系统性的解决步骤: --- #### 1. **确认 Python 版本** 不同版本的解决方案差异较大: ```bash python --version # Python 2 或 3? ``` --- #### 2. **Python 2 专用解决方案** **步骤 1:设置文件编码声明** ```python # -*- coding: utf-8 -*- # 文件开头添加[^2] ``` **步骤 2:修改默认编码** ```python import sys reload(sys) # 仅Python 2需要 sys.setdefaultencoding('utf-8') # 强制UTF-8[^1] ``` **步骤 3:正确使用 `print` 语句** ```python # 正确方式(不加括号) print "你好,世界" # 错误方式(会输出元组乱码) print("你好", "世界") # 输出:('\xe4\xbd\xa0\xe5\xa5\xbd', '\xe4\xb8\xad\xe5\x9b\xbd')[^3] ``` --- #### 3. **Python 3 通用解决方案** **步骤 1:添加编码声明** ```python # -*- coding: utf-8 -*- # 仍建议添加[^2] ``` **步骤 2:直接使用 `print` 函数** ```python print("你好,世界") # Python 3默认UTF-8[^4] ``` **步骤 3:处理混合输出** ```python s = '你好' t = '世界' print(f"{s} {t}") # 使用f-string格式化输出 ``` --- #### 4. **环境一致性检查** | 组件 | 检查方式 | 目标编码 | |---------------|-----------------------------|----------| | 文件保存编码 | 编辑器设置 → 保存为UTF-8 | UTF-8 | | 终端编码 | `chcp 65001` (Windows) | UTF-8 | | IDE编码 | PyCharm/VSCode设置 → 文件编码 | UTF-8 | **Windows CMD 永久设置:** ```cmd reg add HKCU\Console /v CodePage /t REG_DWORD /d 65001 /f ``` --- #### 5. **高级修复方案** **方案 1:显式编解码** ```python s = '你好'.encode('utf-8').decode('utf-8') print(s) ``` **方案 2:环境变量覆盖** ```bash # Linux/macOS export PYTHONIOENCODING=utf-8 # Windows set PYTHONIOENCODING=utf-8 ``` **方案 3:检查系统区域设置** ```python import locale print(locale.getpreferredencoding()) # 应为UTF-8 ``` --- #### 乱码原因对照表 | 现象 | 原因 | 解决方案 | |-------------------------------|--------------------------|------------------------| | `\xe4\xbd\xa0\xe5\xa5\xbd` | Python 2 默认ASCII编码 | `sys.setdefaultencoding` | | 打印元组时乱码 | Python 2 的`print()`误用 | 改用`print a,b`
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值