Python学习7:输入和输出

在 Python 中,可以使用 input() 函数从标准输入读取用户输入的数据,并使用 print() 函数将数据输出到标准输出。下面是一些常用的输入输出方法:

1、使用 input() 函数读取用户输入

input() 函数会从标准输入读取用户输入的数据,并返回一个字符串类型的值。例如:

name = input("What's your name? ")
print("Hello, " + name + "!")

在上面的例子中,使用 input() 函数读取用户输入的姓名,并使用 print() 函数输出问候语。

2、使用 print() 函数输出字符串

print() 函数可以将字符串输出到标准输出。可以使用加号(+)将多个字符串连接起来,并使用逗号(,)将多个参数输出到同一行。例如:

print("Hello, World!")
print("The answer is", 42)

在上面的例子中,使用 print() 函数输出了两个字符串,第二个字符串包含了一个数字。

3、使用格式化字符串输出数据

可以使用格式化字符串将变量的值插入到字符串中。可以使用花括号({})表示变量的位置,并使用 format() 方法将变量的值插入到花括号中。例如:

name = "Alice"
age = 25
print("My name is {} and I'm {} years old.".format(name, age))

在上面的例子中,使用 format() 方法将变量 name 和 age 的值插入到字符串中。

4、使用 f-字符串输出数据

在 Python 3.6 及以后的版本中,可以使用 f-字符串来格式化字符串。f-字符串是一种特殊的字符串,以字母 f 或 F 开头,并以花括号表示变量的位置。在花括号中可以直接使用变量名,也可以使用表达式计算变量的值。例如:

name = "Bob"
age = 32
print(f"My name is {name.upper()} and I'm {age * 2} years old.")

在上面的例子中,使用 f-字符串将变量 name 的值转换为大写字母,并将变量 age 的值乘以 2。

5、使用文件读写数据

Python 提供了多种方式读写文件,可以使用 open() 函数打开文件,并使用 read()、write() 和 close() 方法读写文件。例如:

livecodeserver

# 读取文件
with open("input.txt", "r") as f:
    data = f.read()
    print(data)

# 写入文件
with open("output.txt", "w") as f:
    f.write("Hello, World!")

在上面的例子中,使用 with 语句打开文件并读取或写入数据。使用 “r” 参数表示读取文件,使用 “w” 参数表示写入文件。使用 read() 方法读取文件内容,使用 write() 方法写入文件内容。

6、使用标准错误输出错误信息

除了使用 print() 函数输出字符串到标准输出外,还可以使用标准错误将错误信息输出到控制台。可以使用 sys 模块中的 stderr 属性来输出错误信息。例如:

import sys

try:
    x = int(input("Enter a number: "))
    print(10 / x)
except ValueError:
    print("Invalid input.", file=sys.stderr)
except ZeroDivisionError:
    print("Cannot divide by zero.", file=sys.stderr)

在上面的例子中,使用 try-except 语句处理输入错误和除以零错误,并使用 print() 函数将错误信息输出到标准错误。

7、使用格式化字符串的高级特性

除了简单的格式化字符串外,还可以使用格式化字符串的高级特性来格式化输出。例如,可以使用 {name:width} 格式来指定字符串的宽度,使用 {name:.2f} 格式来指定浮点数的小数位数。例如:

name = "Alice"
age = 25
score = 85.1234
print(f"{'Name:':<10}{name:>10}")
print(f"{'Age:':<10}{age:>10}")
print(f"{'Score:':<10}{score:>10.2f}")

在上面的例子中,使用 f-字符串和 {} 格式指定字符串的宽度和对齐方式,并使用 {:.2f} 格式指定浮点数的小数位数。

8、使用 pprint 模块美化输出

pprint 模块可以美化 Python 数据结构的输出,以便更好地查看和调试数据。可以使用 pprint 模块中的 pprint() 函数将数据结构输出为美化的格式。例如:

import pprint

data = {"name": "Alice", "age": 25, "scores": [80, 85, 90]}
pprint.pprint(data)

在上面的例子中,使用 pprint.pprint() 函数将数据结构 data 输出为美化的格式。

9、使用 logging 模块输出日志信息

logging 模块可以用于输出日志信息,以便更好地理解程序的运行状态和错误信息。可以使用 logging 模块中的 getLogger() 方法创建 Logger 对象,并使用该对象的不同方法输出不同级别的日志信息。例如:

import logging

logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(levelname)s %(message)s')
logger = logging.getLogger(__name__)

def divide(x, y):
    logger.info(f"Dividing {x} by {y}")
    try:
        result = x / y
    except ZeroDivisionError:
        logger.error("Division by zero!")
        return None
    else:
        logger.info(f"Result is {result}")
        return result

在上面的例子中,使用 logging.basicConfig() 方法配置日志级别和格式,使用 getLogger() 方法创建 Logger 对象,并使用 info()、error() 等方法输出不同级别的日志信息。

10、使用 traceback 模块输出异常信息

traceback 模块可以用于输出异常信息,以便更好地定位和解决程序错误。可以使用 traceback 模块中的 print_exc() 函数输出异常信息。例如:

import traceback

try:
    x = int(input("Enter a number: "))
    print(10 / x)
except:
    traceback.print_exc()

在上面的例子中,使用 try-except 语句捕获所有异常,并使用 traceback.print_exc() 函数输出异常信息。

11、使用 cProfile 模块分析程序性能

cProfile 模块可以用于分析程序的性能,以便更好地优化程序运行效率。可以使用 cProfile 模块中的 run() 方法分析程序性能。例如:

import cProfile

# 定义程序
def func():
    for i in range(10000):
        for j in range(10000):
            k = i * j

# 分析程序性能
cProfile.run('func()')

在上面的例子中,定义一个程序 func() 进行计算,使用 cProfile.run() 方法分析程序性能。

12、使用 argparse 模块解析命令行参数

argparse 模块可以用于解析命令行参数,以便更好地控制程序的行为和输入输出。可以使用 argparse 模块中的 ArgumentParser 类创建解析器对象,并使用该对象的 add_argument() 方法添加命令行参数。例如:

import argparse

parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('integers', metavar='N', type=int, nargs='+',
                    help='an integer for the accumulator')
parser.add_argument('--sum', dest='accumulate', action='store_const',
                    const=sum, default=max,
                    help='sum the integers (default: find the max)')

args = parser.parse_args()
print(args.accumulate(args.integers))

在上面的例子中,使用 ArgumentParser 类创建解析器对象,使用 add_argument() 方法添加命令行参数,使用 parse_args() 方法解析命令行参数,并使用 argparse.Namespace 对象访问解析结果。

13、使用 pprint 模块输出对象信息

pprint 模块可以用于输出 Python 对象的信息,以便更好地查看和调试对象。可以使用 pprint 模块中的 pprint() 函数将对象输出为美化的格式。例如:

import pprint

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __repr__(self):
        return f"Person(name='{self.name}', age={self.age})"

person = Person("Alice", 25)
pprint.pprint(person)

在上面的例子中,使用 pprint.pprint() 函数将对象 person 输出为美化的格式,使用 repr() 方法定义对象的表示形式。

14、使用 csv 模块读写 CSV 文件

csv 模块可以用于读写 CSV 文件,以便更好地处理表格数据。可以使用 csv 模块中的 reader() 和 writer() 函数读写 CSV 文件。例如:

import csv

# 读取 CSV 文件
with open("data.csv", "r") as f:
    reader = csv.reader(f)
    for row in reader:
        print(row)

# 写入 CSV 文件
with open("data.csv", "w", newline="") as f:
    writer = csv.writer(f)
    writer.writerow(["Name", "Age", "Score"])
    writer.writerow(["Alice", 25, 85])
    writer.writerow(["Bob", 32, 90])

在上面的例子中,使用 csv.reader() 函数读取 CSV 文件,使用 csv.writer() 函数写入 CSV 文件,并使用 newline="" 参数指定行结束符。

15、使用 json 模块读写 JSON 数据

json 模块可以用于读写 JSON 数据,以便更好地处理数据交换和存储。可以使用 json 模块中的 loads() 和 dumps() 函数读写 JSON 数据。例如:

import json

# 读取 JSON 数据
data = '{"name": "Alice", "age": 25, "scores": [80, 85, 90]}'
json_data = json.loads(data)
print(json_data)

# 写入 JSON 数据
data = {"name": "Bob", "age": 32, "scores": [90, 95, 100]}
json_data = json.dumps(data)
print(json_data)

在上面的例子中,使用 json.loads() 函数读取 JSON 数据,使用 json.dumps() 函数写入 JSON 数据。

16、使用 xml.etree.ElementTree 模块读写 XML 数据

xml.etree.ElementTree 模块可以用于读写 XML 数据,以便更好地处理数据交换和存储。可以使用 xml.etree.ElementTree 模块中的 ElementTree 类和 Element 类读写 XML 数据。例如:

import xml.etree.ElementTree as ET

# 读取 XML 数据
tree = ET.parse("data.xml")
root = tree.getroot()
for child in root:
    print(child.tag, child.attrib)

# 写入 XML 数据
root = ET.Element("data")
child1 = ET.SubElement(root, "name")
child1.text = "Alice"
child2 = ET.SubElement(root, "age")
child2.text = "25"
tree = ET.ElementTree(root)
tree.write("data.xml")

在上面的例子中,使用 ET.parse() 方法读取 XML 文件,使用 Element 对象和 SubElement() 方法创建 XML 元素,使用 ElementTree 对象和 write() 方法写入 XML 文件。

17、使用 sqlite3 模块读写 SQLite 数据库

sqlite3 模块可以用于读写 SQLite 数据库,以便更好地持久化数据。可以使用 sqlite3 模块中的 connect() 和 cursor() 方法连接数据库和执行 SQL 语句。例如:

import sqlite3

# 连接数据库
conn = sqlite3.connect("data.db")

# 创建表格
c = conn.cursor()
c.execute('''CREATE TABLE IF NOT EXISTS students
             (id INTEGER PRIMARY KEY, name TEXT, age INTEGER, score REAL)''')

# 插入数据
c.execute("INSERT INTO students (name, age, score) VALUES (?, ?, ?)", ("Alice", 25, 85))
c.execute("INSERT INTO students (name, age, score) VALUES (?, ?, ?)", ("Bob", 32, 90))

# 查询数据
c.execute("SELECT * FROM students")
rows = c.fetchall()
for row in rows:
    print(row)

# 关闭数据库
conn.commit()
conn.close()

在上面的例子中,使用 sqlite3.connect() 方法连接数据库,使用 cursor() 方法执行 SQL 语句,使用 fetchall() 方法获取查询结果,使用 commit() 方法提交事务并关闭数据库。

18、使用 Pillow 模块读写图片文件

Pillow 模块可以用于读写图片文件,以便更好地处理图像数据。可以使用 Pillow 模块中的 Image 类读写图片文件。例如:

from PIL import Image

# 读取图片文件
im = Image.open("image.jpg")
print(im.format, im.size, im.mode)

# 显示图片
im.show()

# 保存图片文件
im.save("image.png")

在上面的例子中,使用 Image.open() 方法读取图片文件,使用 format、size 和 mode 属性获取图片信息,使用 show() 方法显示图片,使用 save() 方法保存图片文件。

19、使用 matplotlib 模块绘制图表

matplotlib 模块可以用于绘制各种类型的图表,以便更好地展示数据分布和趋势。可以使用 matplotlib 模块中的 pyplot 模块绘制图表。例如:

import matplotlib.pyplot as plt

# 绘制折线图
x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]
plt.plot(x, y)
plt.xlabel("X Label")
plt.ylabel("Y Label")
plt.title("Line Chart")
plt.show()

# 绘制柱状图
x = ["Apple", "Banana", "Orange"]
y = [50, 30, 70]
plt.bar(x, y)
plt.xlabel("Fruit")
plt.ylabel("Quantity")
plt.title("Bar Chart")
plt.show()

在上面的例子中,使用 plt.plot() 方法绘制折线图,使用 plt.bar() 方法绘制柱状图,使用 xlabel、ylabel 和 title 方法设置图表标签,使用 show() 方法显示图表。

20、使用 Pygame 模块绘制游戏界面

Pygame 模块可以用于绘制游戏界面,以便更好地实现游戏功能。可以使用 Pygame 模块中的各种类和方法绘制游戏界面和处理游戏事件。例如:

import pygame

# 初始化 Pygame
pygame.init()

# 创建游戏窗口
screen = pygame.display.set_mode((400, 300))
pygame.display.set_caption("My Game")

# 创建游戏循环
running = True
while running:
    # 处理游戏事件
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    # 绘制游戏界面
    screen.fill((255, 255, 255))
    pygame.draw.circle(screen, (255, 0, 0), (200, 150), 50)
    pygame.display.update()

# 退出 Pygame
pygame.quit()

在上面的例子中,使用 pygame.init() 初始化 Pygame,使用 pygame.display.set_mode() 创建游戏窗口,使用 pygame.event.get() 处理游戏事件,使用 pygame.draw.circle() 绘制游戏界面,使用 pygame.display.update() 更新游戏界面,使用 pygame.quit() 退出 Pygame。

Share this post:

Related content