1. 列表推导式与循环
1.1 题目描述
编写一个列表推导式,生成一个包含1到100之间所有偶数的列表。
1.2 解析
列表推导式是一种简洁且强大的Python语法,用于创建列表。以下是一个示例代码:
even_numbers = [x for x in range(1, 101) if x % 2 == 0]
1.3 实战案例
假设我们需要计算上述列表中所有偶数的和。
sum_of_even_numbers = sum(even_numbers)
print(sum_of_even_numbers)
2. 字符串操作
2.1 题目描述
给定一个字符串,将其中的所有小写字母转换为大写字母。
2.2 解析
可以使用字符串的upper()方法来实现。
original_string = "Hello, World!"
converted_string = original_string.upper()
print(converted_string)
2.3 实战案例
假设我们需要将一个包含多种字符的字符串中的数字提取出来。
import re
def extract_numbers(s):
return re.findall(r'\d+', s)
text = "I have 3 apples and 2 bananas."
numbers = extract_numbers(text)
print(numbers)
3. 函数与递归
3.1 题目描述
编写一个递归函数,计算斐波那契数列的前10项。
3.2 解析
递归是一种编程技巧,允许函数调用自身。以下是一个示例代码:
def fibonacci(n):
if n <= 1:
return n
else:
return fibonacci(n-1) + fibonacci(n-2)
fibonacci_sequence = [fibonacci(i) for i in range(10)]
print(fibonacci_sequence)
3.3 实战案例
假设我们需要计算一个字符串中每个单词的长度。
def word_lengths(text):
words = text.split()
return [len(word) for word in words]
text = "Python is great for programming."
lengths = word_lengths(text)
print(lengths)
4. 集合与字典
4.1 题目描述
给定两个集合,找出它们的交集。
4.2 解析
集合是一种无序且元素唯一的容器。可以使用集合的intersection()方法来找出两个集合的交集。
set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}
intersection_set = set1.intersection(set2)
print(intersection_set)
4.3 实战案例
假设我们需要统计一个文本中每个单词的出现次数。
from collections import Counter
text = "This is a sample text. This text has some words repeated."
word_counts = Counter(text.split())
print(word_counts)
5. 文件操作
5.1 题目描述
读取一个文本文件,并打印出每一行的内容。
5.2 解析
可以使用Python的文件操作功能来读取文件。以下是一个示例代码:
with open('example.txt', 'r') as file:
for line in file:
print(line.strip())
5.3 实战案例
假设我们需要将一个文本文件中的所有数字提取出来并存储到一个列表中。
import re
def extract_numbers_from_file(filename):
numbers = []
with open(filename, 'r') as file:
for line in file:
numbers.extend(map(int, re.findall(r'\d+', line)))
return numbers
numbers = extract_numbers_from_file('numbers.txt')
print(numbers)
6. 类与对象
6.1 题目描述
创建一个简单的类,表示一个学生,并包含姓名、年龄和成绩属性。
6.2 解析
在Python中,可以使用class关键字来定义一个类。以下是一个示例代码:
class Student:
def __init__(self, name, age, grade):
self.name = name
self.age = age
self.grade = grade
student1 = Student("Alice", 20, "A")
print(student1.name, student1.age, student1.grade)
6.3 实战案例
假设我们需要创建一个学生管理系统,其中包括添加、删除和查询学生信息的功能。
class StudentManagementSystem:
def __init__(self):
self.students = []
def add_student(self, student):
self.students.append(student)
def remove_student(self, student):
self.students.remove(student)
def get_student(self, name):
for student in self.students:
if student.name == name:
return student
return None
system = StudentManagementSystem()
system.add_student(Student("Alice", 20, "A"))
system.add_student(Student("Bob", 22, "B"))
student = system.get_student("Alice")
print(student.name, student.age, student.grade)
7. 异常处理
7.1 题目描述
编写一个函数,尝试除以0,并捕获异常。
7.2 解析
在Python中,可以使用try和except语句来处理异常。以下是一个示例代码:
def divide(a, b):
try:
result = a / b
except ZeroDivisionError:
result = "Error: Division by zero"
return result
print(divide(10, 0))
7.3 实战案例
假设我们需要处理一个可能引发异常的文件读取操作。
def read_file(filename):
try:
with open(filename, 'r') as file:
content = file.read()
return content
except FileNotFoundError:
return "Error: File not found"
content = read_file('nonexistent_file.txt')
print(content)
8. 模块与包
8.1 题目描述
创建一个简单的Python模块,并在另一个脚本中导入并使用它。
8.2 解析
Python模块是一种组织代码的方式,可以将代码封装在一个文件中。以下是一个示例代码:
module.py
def greet():
return "Hello, World!"
main.py
import module
print(module.greet())
8.3 实战案例
假设我们需要创建一个包,其中包含多个模块,并使用它来管理一组相关的功能。
# mypackage/
# ├── __init__.py
# ├── module1.py
# ├── module2.py
# └── module3.py
# module1.py
def add(a, b):
return a + b
# module2.py
def subtract(a, b):
return a - b
# module3.py
def multiply(a, b):
return a * b
# main.py
from mypackage import module1, module2, module3
result = module1.add(5, 3)
print(result)
result = module2.subtract(5, 3)
print(result)
result = module3.multiply(5, 3)
print(result)
9. 生成器
9.1 题目描述
编写一个生成器函数,用于生成斐波那契数列。
9.2 解析
生成器是一种特殊的迭代器,它在每次迭代时仅生成下一个值。以下是一个示例代码:
def fibonacci_generator():
a, b = 0, 1
while True:
yield a
a, b = b, a + b
fibonacci = fibonacci_generator()
for _ in range(10):
print(next(fibonacci))
9.3 实战案例
假设我们需要创建一个生成器函数,用于计算一个范围内的所有素数。
def is_prime(n):
if n <= 1:
return False
for i in range(2, int(n**0.5) + 1):
if n % i == 0:
return False
return True
def prime_generator(n):
for num in range(2, n+1):
if is_prime(num):
yield num
primes = prime_generator(100)
for prime in primes:
print(prime)
10. 并发与多线程
10.1 题目描述
使用Python的threading模块创建一个简单的多线程程序。
10.2 解析
多线程是一种并发编程技术,允许同时执行多个线程。以下是一个示例代码:
import threading
def print_numbers():
for i in range(5):
print(i)
thread = threading.Thread(target=print_numbers)
thread.start()
10.3 实战案例
假设我们需要创建一个多线程程序,用于计算一个列表中所有数字的和。
import threading
def sum_numbers(numbers, result):
total = sum(numbers)
result.append(total)
numbers = [1, 2, 3, 4, 5]
result = []
threads = []
for i in range(5):
thread = threading.Thread(target=sum_numbers, args=(numbers[i*2:i*2+2], result))
threads.append(thread)
thread.start()
for thread in threads:
thread.join()
print(result)
11. 网络编程
11.1 题目描述
使用Python的socket模块创建一个简单的TCP客户端和服务器。
11.2 解析
网络编程是一种允许程序通过网络进行通信的技术。以下是一个示例代码:
server.py
import socket
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('localhost', 12345))
server_socket.listen(1)
client_socket, addr = server_socket.accept()
print(f"Connected by {addr}")
while True:
data = client_socket.recv(1024)
if not data:
break
print(f"Received: {data.decode()}")
client_socket.send(data)
client_socket.close()
server_socket.close()
client.py
import socket
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(('localhost', 12345))
message = "Hello, server!"
client_socket.send(message.encode())
data = client_socket.recv(1024)
print(f"Received: {data.decode()}")
client_socket.close()
11.3 实战案例
假设我们需要创建一个Web爬虫,用于从指定网站获取页面内容。
import requests
def crawl(url):
response = requests.get(url)
return response.text
content = crawl("https://www.example.com")
print(content)
12. 数据库操作
12.1 题目描述
使用Python的sqlite3模块连接到SQLite数据库,并执行一些基本的查询操作。
12.2 解析
数据库是一种用于存储和管理数据的系统。以下是一个示例代码:
import sqlite3
# 创建数据库连接
conn = sqlite3.connect('example.db')
# 创建游标对象
cursor = conn.cursor()
# 创建表
cursor.execute('CREATE TABLE IF NOT EXISTS students (name TEXT, age INTEGER)')
# 插入数据
cursor.execute('INSERT INTO students (name, age) VALUES (?, ?)', ("Alice", 20))
# 查询数据
cursor.execute('SELECT * FROM students')
rows = cursor.fetchall()
for row in rows:
print(row)
# 关闭游标和连接
cursor.close()
conn.close()
12.3 实战案例
假设我们需要创建一个简单的用户管理系统,其中包括添加、删除和查询用户信息的功能。
import sqlite3
def create_user(name, age):
conn = sqlite3.connect('users.db')
cursor = conn.cursor()
cursor.execute('CREATE TABLE IF NOT EXISTS users (name TEXT, age INTEGER)')
cursor.execute('INSERT INTO users (name, age) VALUES (?, ?)', (name, age))
conn.commit()
cursor.close()
conn.close()
def delete_user(name):
conn = sqlite3.connect('users.db')
cursor = conn.cursor()
cursor.execute('DELETE FROM users WHERE name = ?', (name,))
conn.commit()
cursor.close()
conn.close()
def get_user(name):
conn = sqlite3.connect('users.db')
cursor = conn.cursor()
cursor.execute('SELECT * FROM users WHERE name = ?', (name,))
row = cursor.fetchone()
cursor.close()
conn.close()
return row
create_user("Alice", 20)
user = get_user("Alice")
print(user)
delete_user("Alice")
