Python提供了多种方式来处理输入和输出,让我们能够与用户交互、格式化显示信息以及读写文件。掌握这些技能对日常编程工作非常重要。
在Python中,最常用的输出方式是使用print()函数。这个函数可以显示文本、数字和各种数据。
# 简单的输出
print("Hello, World!")
# 输出多个值,用逗号分隔
name = "小明"
age = 20
print("姓名:", name, "年龄:", age)
# 输出计算结果
print("5 + 3 =", 5 + 3)为了让输出看起来更整齐,我们可以使用多种格式化方法。
这是目前最推荐的格式化方式:
# 基本用法
print("欢迎来到{}教程".format("fly63"))
# 按位置引用
print("{0}的{1}成绩是{2}分".format("小明", "数学", 95))
# 按关键字引用
print("{name}今年{age}岁".format(name="小红", age=18))
# 数字格式化
import math
print("圆周率约等于{:.2f}".format(math.pi)) # 保留两位小数
# 对齐文本
print("{:<10} | {:^10} | {:>10}".format("左对齐", "居中", "右对齐"))
print("{:>10}".format(123)) # 右对齐,宽度10Python 3.6引入了f-string,这是最简洁的格式化方法:
name = "李华"
score = 88.5
print(f"学生{name}的考试成绩是{score}分")
print(f"平均分:{score:.1f}") # 保留一位小数
print(f"二进制:{10:b}") # 二进制显示虽然不推荐新项目使用,但很多旧代码中还能看到:
name = "王刚"
age = 25
print("姓名:%s,年龄:%d" % (name, age))
import math
print("圆周率:%.3f" % math.pi)Python字符串提供了一些有用的对齐方法:
text = "Python"
print(text.ljust(10) + "*") # 左对齐
print(text.center(10) + "*") # 居中对齐
print(text.rjust(10) + "*") # 右对齐
# 输出:
# Python *
# Python *
# Python*
# 数字补零
print("12".zfill(5)) # 00012
print("-3.14".zfill(8)) # -003.14处理表格数据时,格式化特别有用:
# 输出乘法表
print("乘法表:")
for i in range(1, 6):
for j in range(1, 6):
print(f"{i}×{j}={i*j:2d}", end=" ")
print()
# 输出学生成绩表
students = [
("张三", 85, 92, 78),
("李四", 90, 88, 95),
("王五", 76, 85, 80)
]
print("\n学生成绩表:")
print("{:<8} {:<6} {:<6} {:<6} {:<6}".format("姓名", "语文", "数学", "英语", "平均"))
print("-" * 40)
for name, chinese, math, english in students:
avg = (chinese + math + english) / 3
print(f"{name:<8} {chinese:<6} {math:<6} {english:<6} {avg:<6.1f}")使用input()函数可以获取用户输入:
# 基本输入
name = input("请输入你的姓名:")
print("你好," + name + "!")
# 数字输入(需要转换)
age = int(input("请输入你的年龄:"))
height = float(input("请输入你的身高(米):"))
print(f"{age}年后你将{age + 10}岁")
# 多个输入
values = input("请输入三个数字,用空格分隔:").split()
a, b, c = map(float, values)
print(f"平均值:{(a + b + c) / 3:.2f}")使用open()函数打开文件,需要指定文件名和模式:
# 各种打开模式
# 'r' - 只读(默认)
# 'w' - 写入,会覆盖原有内容
# 'a' - 追加,在文件末尾添加
# 'r+' - 读写
# 'b' - 二进制模式
# 写入文件
with open("example.txt", "w", encoding="utf-8") as f:
f.write("这是第一行\n")
f.write("这是第二行\n")
f.write("这是第三行\n")# 读取整个文件
with open("example.txt", "r", encoding="utf-8") as f:
content = f.read()
print("文件内容:")
print(content)
# 逐行读取
print("\n逐行读取:")
with open("example.txt", "r", encoding="utf-8") as f:
for line_num, line in enumerate(f, 1):
print(f"第{line_num}行: {line.strip()}")
# 读取所有行到列表
with open("example.txt", "r", encoding="utf-8") as f:
lines = f.readlines()
print(f"总共{len(lines)}行")# 复制文件
def copy_file(source, destination):
try:
with open(source, "r", encoding="utf-8") as src:
with open(destination, "w", encoding="utf-8") as dst:
dst.write(src.read())
print(f"文件已从 {source} 复制到 {destination}")
except FileNotFoundError:
print("文件不存在")
# 统计文件信息
def file_info(filename):
try:
with open(filename, "r", encoding="utf-8") as f:
content = f.read()
lines = content.split('\n')
words = content.split()
print(f"文件名: {filename}")
print(f"字符数: {len(content)}")
print(f"行数: {len(lines)}")
print(f"单词数: {len(words)}")
except FileNotFoundError:
print("文件不存在")
# 使用示例
copy_file("example.txt", "backup.txt")
file_info("example.txt")可以控制文件读取的位置:
with open("data.txt", "w+", encoding="utf-8") as f:
# 写入数据
f.write("0123456789ABCDEF")
# 移动到开头
f.seek(0)
print("文件开头:", f.read(5)) # 读取5个字符
# 移动到第10个字符
f.seek(10)
print("第10个字符开始:", f.read())
# 获取当前位置
position = f.tell()
print(f"当前位置: {position}")使用pickle模块可以保存和加载Python对象:
import pickle
# 保存数据
data = {
"students": ["小明", "小红", "小刚"],
"scores": [85, 92, 78],
"teacher": "张老师"
}
with open("school_data.pkl", "wb") as f:
pickle.dump(data, f)
print("数据已保存")
# 读取数据
with open("school_data.pkl", "rb") as f:
loaded_data = pickle.load(f)
print("读取的数据:", loaded_data)def save_students(students, filename="students.txt"):
"""保存学生信息到文件"""
with open(filename, "w", encoding="utf-8") as f:
for name, info in students.items():
f.write(f"{name},{info['age']},{info['grade']}\n")
print("学生信息已保存")
def load_students(filename="students.txt"):
"""从文件加载学生信息"""
students = {}
try:
with open(filename, "r", encoding="utf-8") as f:
for line in f:
name, age, grade = line.strip().split(',')
students[name] = {
'age': int(age),
'grade': grade
}
except FileNotFoundError:
print("文件不存在,创建新的学生列表")
return students
# 使用示例
students = {
"张三": {"age": 18, "grade": "A"},
"李四": {"age": 19, "grade": "B"},
"王五": {"age": 17, "grade": "A"}
}
save_students(students)
loaded_students = load_students()
# 显示学生信息
print("\n学生信息:")
print("{:<8} {:<4} {:<6}".format("姓名", "年龄", "等级"))
for name, info in loaded_students.items():
print(f"{name:<8} {info['age']:<4} {info['grade']:<6}")def write_log(message, level="INFO", filename="app.log"):
"""写入日志"""
from datetime import datetime
timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
log_entry = f"[{timestamp}] {level}: {message}\n"
with open(filename, "a", encoding="utf-8") as f:
f.write(log_entry)
print(log_entry.strip())
# 使用示例
write_log("程序启动")
write_log("用户登录成功", "INFO")
write_log("文件处理完成", "SUCCESS")
write_log("发现警告信息", "WARNING")总是使用with语句:确保文件正确关闭
指定编码:特别是处理中文时使用encoding="utf-8"
处理异常:使用try-except处理文件操作错误
选择合适模式:根据需要选择读取、写入或追加模式
# 好的做法
try:
with open("data.txt", "r", encoding="utf-8") as f:
content = f.read()
# 处理内容
except FileNotFoundError:
print("文件不存在")
except IOError:
print("文件读取错误")
# 不好的做法
f = open("data.txt", "r")
content = f.read()
f.close() # 可能忘记调用掌握Python的输入输出操作,能够让你编写出更加实用和用户友好的程序。从简单的控制台交互到复杂的文件处理,这些技能在实际开发中都会经常用到。
本文内容仅供个人学习/研究/参考使用,不构成任何决策建议或专业指导。分享/转载时请标明原文来源,同时请勿将内容用于商业售卖、虚假宣传等非学习用途哦~感谢您的理解与支持!