Python3 输入和输出(手把手讲解)

更新时间:

💡一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论

  • 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于 Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...点击查看项目介绍 ;
  • 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;

截止目前, 星球 内专栏累计输出 82w+ 字,讲解图 3441+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 2900+ 小伙伴加入学习 ,欢迎点击围观

在编程的世界中,输入与输出(I/O)如同桥梁,连接着程序与外部世界。无论是开发一个简单的计算器,还是构建复杂的Web应用,掌握Python3的输入和输出方法都是开发者必备的基础技能。本文将从基础语法到高级技巧,通过实际案例和清晰的解释,帮助读者系统性地理解并灵活运用Python3的输入和输出功能。


一、基础输入与输出函数

1.1 输入函数 input()

input() 函数是Python中获取用户输入的最常用工具。它的语法简单,但功能强大,能够接收用户的键盘输入并返回一个字符串类型的数据。

示例代码:

name = input("请输入您的姓名:")  
print(f"欢迎,{name}!")  

关键点解析:

  • input() 的参数是提示信息,用于指导用户输入内容。
  • 返回值始终是字符串类型,若需进行数值运算,需手动转换类型(如 int()float())。

形象比喻:
可以把 input() 看作一个“对话窗口”,程序通过它向用户提问,用户回答后,程序再根据回答内容执行下一步操作。


1.2 输出函数 print()

print() 函数用于将数据输出到控制台,是调试和展示结果的核心工具。其语法灵活,支持多种格式化方式。

基础用法:

print("Hello, World!")  
print(100 + 200)  # 输出计算结果300  

关键点解析:

  • 默认情况下,print() 会在输出内容后自动换行,可通过参数 end 改变这一行为。
  • 使用 sep 参数可以自定义输出内容之间的分隔符,默认为空格。

示例:

print("Python", "is", "awesome", sep="-", end="!\n")  

二、格式化输出的进阶技巧

2.1 旧式格式化:% 操作符

虽然 print() 可直接输出变量,但在复杂场景下(如对齐、类型转换),旧式 % 格式化提供了更精细的控制。

示例:

name = "Alice"  
age = 25  
print("姓名:%s,年龄:%d" % (name, age))  

格式说明符:

  • %s:字符串
  • %d:整数
  • %f:浮点数(默认保留6位小数)

2.2 新式格式化:format() 方法

str.format() 方法比 % 更直观,支持参数位置和名称的灵活指定。

示例:

print("姓名:{}, 年龄:{}".format("Bob", 30))  

高级用法:

print("{1} 是 {0} 的朋友".format("Alice", "Bob"))  

print("成绩:{math:.1f}, 科目:{subject}".format(math=98.6, subject="数学"))  

2.3 f-string(Python3.6+)

f-string(格式化字符串字面值)是Python3.6引入的语法糖,简洁高效,尤其适合快速输出变量。

示例:

name = "Charlie"  
score = 95.5  
print(f"{name} 的成绩是 {score:.2f} 分")  

优势:

  • 直接在字符串前加 f,无需调用 format() 方法。
  • 支持嵌入表达式(如 f"{2+3}" 输出 5)。

三、文件输入与输出

3.1 文件读写基础

程序与文件的交互是输入输出的另一重要场景。Python通过 open() 函数打开文件,并通过模式参数指定操作类型。

打开文件的模式:

  • "r":只读(默认)
  • "w":覆盖写入
  • "a":追加写入
  • "b":二进制模式(如图片、视频文件)

示例:写入文件

with open("data.txt", "w") as file:  
    file.write("第一行内容\n")  
    file.write("第二行内容")  

示例:读取文件

with open("data.txt", "r") as file:  
    content = file.read()  # 读取全部内容  
    print(content)  

3.2 文件操作的上下文管理器 with

使用 with 语句管理文件对象,能确保文件在操作完成后自动关闭,避免资源泄漏。

对比:

file = open("data.txt", "r")  
print(file.read())  
file.close()  # 必须显式关闭  

with open("data.txt", "r") as file:  
    print(file.read())  # 自动关闭,无需手动操作  

3.3 文件逐行读取与处理

对于大文件,逐行读取能节省内存。

示例:统计文件行数

line_count = 0  
with open("data.txt", "r") as file:  
    for line in file:  
        line_count += 1  
print(f"总行数:{line_count}")  

四、高级输入输出技巧

4.1 标准输入输出重定向

在命令行中,可以通过重定向符号 >< 将输入输出与文件关联,实现批量处理。

示例:

python script.py > output.txt  

python script.py < input.txt  

4.2 处理二进制文件

对于图片、音频等非文本文件,需以二进制模式操作。

示例:复制图片文件

with open("source.jpg", "rb") as source:  
    with open("copy.jpg", "wb") as target:  
        target.write(source.read())  

五、常见问题与解决方案

5.1 输入非预期类型

若用户输入无法转换为数值,可能导致程序崩溃。通过 try-except 捕获异常可增强健壮性。

示例:安全的数值输入

while True:  
    try:  
        number = int(input("请输入一个整数:"))  
        print(f"您输入的数字是:{number}")  
        break  
    except ValueError:  
        print("输入无效,请重新输入!")  

5.2 文件不存在或权限错误

操作不存在的文件或无写入权限时,会抛出 FileNotFoundErrorPermissionError

解决方案:

try:  
    with open("missing.txt", "r") as file:  
        pass  
except FileNotFoundError:  
    print("文件不存在,请检查路径!")  

六、结论

Python3的输入和输出功能如同程序的“感官系统”,帮助开发者与用户及外部数据高效交互。从基础的 input()print(),到格式化字符串和文件操作,再到异常处理和高级技巧,掌握这些内容能让开发者构建出更健壮、灵活的应用。无论是处理用户交互界面,还是操作大规模数据文件,Python3的输入输出工具链都能提供强大的支持。

通过本文的学习,读者应能:

  1. 熟练使用输入输出函数完成基础任务。
  2. 理解不同格式化方法的适用场景。
  3. 安全地读写文件并处理常见异常。
  4. 结合实际项目需求,灵活组合输入输出技术。

编程之路永无止境,希望本文能为读者在Python3输入输出领域的探索提供坚实的起点。

最新发布