Python中的print() 函数和格式化操作方法

Written by

in

文章目录
  • ​print()​ 是 Python 中最基础也是最常用的输出函数,但它的功能远不止简单的文本输出。 核心语法: print(*objects, sep=’ ‘, end=’n’, file=sys.stdout, flush=False)
  • 在学习和使用格式化输出时,常会遇到一些典型问题:
  • 方法 优势 劣势 适用场景 百分号格式化 兼容旧版本 功能有限,易出错 维护旧代码 format() 方法 功能全面,兼容性好 语法相对繁琐 考试,跨版本项目 f-string 简洁高效,支持表达式 仅支持 Python 3.6+ 新项目首选,日常开发 新项目:选择 f-string,它的简洁性和性能都是最佳的。 维护旧代码:根据原有代码风格选择相应方法。 兼容性要求高:使用 format() 方法,它在 Python 2.6+ 和 3.x 中都有良好支持。
  • ​print()​ 函数和字符串格式化是每个 Python 开发者必须掌握的基础技能。从简单的 %​ 操作符到强大的 f-string,Python 一直在进化,让我们的编码工作变得更加愉快和高效。 无论你选择哪种方法,最重要的是保持一致性。在同一个项目中尽量使用同一种格式化风格,这样代码会更易读、更易维护。 你现在更喜欢用哪种格式化方法呢?在实际项目中遇到过什么有趣的格式化场景?欢迎在评论区分享你的经验! 到此这篇关于Python中的print() 函数和格式化操作的文章就介绍到这了,更多相关Python print() 函数内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客! 您可能感兴趣的文章: python中的print()函数end=' '的使用及说明 Python中print()函数使用实例详解 Python中print()函数的用法详情 Python如何使用print()函数输出格式化字符串 python print()函数的end参数和sep参数的用法说明 python3的print()函数的用法图文讲解 python中print()函数的“,”与java中System.out.print()函数中的“+”功能详解
  • 目录
    • 一、print() 函数基础
      • 关键参数
    • 二、三大格式化输出方法
      • 1、百分号(%)格式化:传统方法
      • 2、 format() 方法:通用
      • 3、 f-string:最优选择
    • 三、避坑点
      • 1、类型不匹配
      • 2、占位符数量不匹配
      • 3、f-string 前缀遗漏
      • 4、转义大括号
    • 四、方法选择
      • 五、实用技巧
        • 1. 调试:快速查看变量
        • 2. 多行字符串格式化
        • 3. 条件表达式在 f-string 中的应用
      • 六、结语

        ​print()​ 是 Python 中最基础也是最常用的输出函数,但它的功能远不止简单的文本输出。

        核心语法:

        print(*objects, sep=' ', end='n', file=sys.stdout, flush=False)

        sep 参数:定义多个输出对象之间的分隔符,默认为空格

        print("a", "b", "c", sep="-")  # 输出:a-b-c
        print(2024, 9, 30, sep="/")    # 输出:2024/9/30

        end 参数:指定输出结束时的字符,默认为换行符

        print("Hello", end="!")
        print("World")  # 输出:Hello!World

        objects:可以接受任意数量的输出对象,包括字符串、数字、列表等

        name = "Alice"
        age = 25
        print("姓名:", name, "年龄:", age)  # 输出:姓名: Alice 年龄: 25

        这是 Python 最早的字符串格式化方法,虽然现在有更现代的选择,但在维护旧代码时仍然常见。

        基本语法

        print("格式字符串" % (变量1, 变量2, ...))

        常用格式符号:

        格式符号 功能说明 示例 输出结果
        %s 字符串(万能匹配) ​"name: %s" % "XY"​ name: XY
        %d 十进制整数 ​"age: %d" % 18​ age: 18
        %f 浮点数 ​"weight: %.2f" % 60.5​ weight: 60.50
        %x 十六进制整数 ​"hex: %x" % 255​ hex: ff

        还可以加上一些字符来控制输出宽度等格式化需求(详情见下面的format方法)

        print("age: %08d" % 18)    # 占8位,不足补0 → age: 00000018
        print("num: %8.3f" % 18)   # 占8位,小数3位 → num:  18.000

        ​format()​ 方法提供了更强大、更灵活的格式化功能,是 Python 2.6 及以上版本的推荐选择。

        基础用法:在字符串里需要替换的位置加上{},在字符串后加上.format()​,在format括号里加上要替换的具体值。

        # 按默认顺序
        print("name: {}, age: {}".format("XY", 18))
        # 按位置索引,位置索引默认从0开始
        print("age: {1}, name: {0}".format("XY", 18))
        # 按名称匹配
        print("name: {n}, age: {a}".format(n="XY", a=18))

        格式化技巧:

        • 引导符“:”起手,表示要对{}​里的内容进行格式化。
        • 填充:在输出的位数不够时,用指定的符号填充,比如'*'、'-'、'='、'+'​等。
        • 对齐:对指定输出的内容进行对齐输出。
        • 宽度:指定输出的字符串宽度,即在控制台输出的长度。

        注意,必须严格按照上面图片的顺序进行格式化。(不需要的格式化操作则跳过)

        pi = 3.14159
        # 保留2位小数
        print("pi: {:.2f}".format(pi))           # pi: 3.14
        # 百分比格式
        print("rate: {:.1%}".format(0.85))       # rate: 85.0%
        # 千分位分隔
        print("money: {:,}".format(1234567))     # money: 1,234,567
        # 对齐填充
        print("title: {:*^20}".format("Python")) # title: *******Python********

        简单例题1:

        键盘输入字符串s,按要求把输出到屏幕。

        格式要求,宽度为20个字符,等号字符“=”填充,居中对齐。如果输入字符串超过20位,则全部输出。
        例如:键盘输入字符串s为“PYTHON”,屏幕输出 =======PYTHON=======

        s = input("请输入一个字符串:")
        print("{:=^20}".format(s)) #按照顺序填入需要的格式化,填充、对齐、宽度。

        简单例题2:
        键盘输入正整数n,按要求把输出到屏幕.

        格式要求,宽度为20个字符,字符“-”填充,右对齐,带千位分隔符。如果输入正整数超过20位,则按照真实长度输出。
        例如:键盘输入正整数n为1234, 屏幕输出:—————1,234

        n = eval(input("请输入正整数:")) #注意,input()得到的结果是一个字符串,需要转化成整数
        print("{:->20,}".format(n)) #按照顺序填入需要的格式化,填充、对齐、宽度、千位符。

        f-string(格式化字符串字面值)是 Python 3.6 引入的新特性,具有简洁的语法和优异的性能。

        基本语法:在字符串前加 f 或 F,在大括号中直接嵌入变量或表达式

        name = "XY"
        age = 18
        print(f"name: {name}, age: {age}")  # name: XY, age: 18

        进阶:

        # 表达式计算
        print(f"1+1 = {1+1}")  # 1+1 = 2
        # 进制转换
        print(f"binary: {age:b}, octal: {age:o}")  # binary: 10010, octal: 22
        # 数值格式化
        print(f"weight: {60.5:.1f}kg")  # weight: 60.5kg
        # 调用函数和方法
        text = "hello"
        print(f"大写: {text.upper()}")  # 大写: HELLO

        在学习和使用格式化输出时,常会遇到一些典型问题:

        # ❌ 错误示例
        print("%d" % 3.14)  # 报错:%d 不能直接接收浮点数。%d接收整数,%f接收浮点数。
        # ✅ 正确做法
        print("%d" % int(3.14))  # 输出:3
        print("%.0f" % 3.14)     # 输出:3

        # ❌ 错误示例
        "{} {}".format("a")  # 报错:占位符数量多于参数
        # ✅ 正确做法
        "{} {}".format("a", "b")  # 输出:a b

        # ❌ 错误示例
        name = "Alice"
        print("name: {name}")  # 输出:name: {name}(没有变量替换)
        # ✅ 正确做法
        print(f"name: {name}")  # 输出:name: Alice

        当需要输出字面的大括号时:{{}}​,输出的是{}

        print(f"{{name: {name}}}")  # 输出:{name: Alice}

        方法 优势 劣势 适用场景
        百分号格式化 兼容旧版本 功能有限,易出错 维护旧代码
        format() 方法 功能全面,兼容性好 语法相对繁琐 考试,跨版本项目
        f-string 简洁高效,支持表达式 仅支持 Python 3.6+ 新项目首选,日常开发
        1. 新项目:选择 f-string,它的简洁性和性能都是最佳的。
        2. 维护旧代码:根据原有代码风格选择相应方法。
        3. 兼容性要求高:使用 format() 方法,它在 Python 2.6+ 和 3.x 中都有良好支持。

        # 在变量名前后显示值,便于调试
        value = 42
        print(f"{value = }")  # 输出:value = 42

        name = "Bob"
        age = 30
        message = f"""
        个人信息:
        姓名:{name}
        年龄:{age}
        """
        print(message)

        score = 85
        print(f"成绩:{score},{'及格' if score >= 60 else '不及格'}")

        (1)变量赋值:

        • 创建一个名为 score​ 的变量
        • 将整数值 85​ 赋给该变量
        • 此时内存中 score​ 的值为 85

        (2)f-string 解析,分为两个部分:

        第一部分:{score}​

        • 识别到花括号 {}​
        • 查找变量 score​ 的值
        • 将 score​ 的值 85​ 转换为字符串并插入到相应位置{}​

        第二部分:{'及格' if score >= 60 else '不及格'}​

        • 这是一个​条件表达式​(三元运算符)
        • 语法格式:值1 if 条件 else 值2​

        (3)条件表达式的执行:

        • 条件:score >= 60​ → 85 >= 60​ → True​
        • 选择结果:由于条件为 True​,选择 if​ 前面的值 '及格'​
        • 忽略:else​ 后面的 '不及格'​ 不会被使用

        (4)所有的{}​都替换成功,输出到控制台。

        print("成绩:85,及格")  #成绩:85,及格

        ​print()​ 函数和字符串格式化是每个 Python 开发者必须掌握的基础技能。从简单的 %​ 操作符到强大的 f-string,Python 一直在进化,让我们的编码工作变得更加愉快和高效。

        无论你选择哪种方法,最重要的是保持一致性。在同一个项目中尽量使用同一种格式化风格,这样代码会更易读、更易维护。

        你现在更喜欢用哪种格式化方法呢?在实际项目中遇到过什么有趣的格式化场景?欢迎在评论区分享你的经验!

        到此这篇关于Python中的print() 函数和格式化操作的文章就介绍到这了,更多相关Python print() 函数内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!

        您可能感兴趣的文章:

        • python中的print()函数end=' '的使用及说明
        • Python中print()函数使用实例详解
        • Python中print()函数的用法详情
        • Python如何使用print()函数输出格式化字符串
        • python print()函数的end参数和sep参数的用法说明
        • python3的print()函数的用法图文讲解
        • python中print()函数的“,”与java中System.out.print()函数中的“+”功能详解

        站内搜索