目录
1.基本操作
- print(): 输出内容到控制台。
- input(): 从控制台读取输入。
- len(): 返回对象的长度。
- type(): 返回对象的类型。
- str(), int(), float(): 类型转换函数。
1.1 例子
# print 和 input
print("Hello, World!")
name = input("请输入你的名字: ")
print("你好," + name)
# len 和 type
my_list = [1, 2, 3, 4, 5]
print("列表的长度:", len(my_list))
print("my_list 的类型:", type(my_list))
# 类型转换
number_str = "123"
number = int(number_str)
print("字符串转整数:", number)
1.2 输出结果
Hello, World!
请输入你的名字: FHYAAAX #这里是自己输入的,“input”
你好,FHYAAAX
列表的长度: 5
my_list 的类型: <class 'list'>
字符串转整数: 123
2.数据结构
-
list:
- append(): 向列表末尾添加元素。
- extend(): 扩展列表,添加多个元素。
- insert(): 在指定位置插入元素。
- remove(): 移除列表中的某个元素。
- pop(): 移除并返回指定位置的元素。
- sort(): 对列表进行排序。
- reverse(): 反转列表。
-
dict:
- keys(): 返回字典的所有键。
- values(): 返回字典的所有值。
- items(): 返回字典的键值对。
- get(): 根据键获取值。
- update(): 更新字典。
- pop(): 移除并返回指定键的值。
-
set:
- add(): 向集合添加元素。
- remove(): 从集合中移除元素。
- union(): 返回两个集合的并集。
- intersection(): 返回两个集合的交集。
- difference(): 返回两个集合的差集。
2.1 例子
# List 操作
print("List 操作")
my_list = [1, 2, 3]
my_list.append(4)
print("添加元素后:", my_list)
my_list.extend([5, 6])
print("扩展列表后:", my_list)
my_list.insert(0, 0)
print("插入元素后:", my_list)
my_list.remove(3)
print("移除元素后:", my_list)
popped_item = my_list.pop()
print("弹出元素后:", my_list, "弹出的元素:", popped_item)
my_list.sort()
print("排序后:", my_list)
my_list.reverse()
print("反转列表后:", my_list)
# Dict 操作
print("\nDict 操作")
my_dict = {"name": "Alice", "age": 25}
print("键:", my_dict.keys())
print("值:", my_dict.values())
print("键值对:", my_dict.items())
print("获取 name:", my_dict.get("name"))
my_dict.update({"age": 26})
print("更新后:", my_dict)
age = my_dict.pop("age")
print("弹出后:", my_dict, "弹出的 age:", age)
# Set 操作
print("\nSet 操作")
my_set = {1, 2, 3}
my_set.add(4)
print("添加元素后:", my_set)
my_set.remove(2)
print("移除元素后:", my_set)
other_set = {3, 4, 5}
print("并集:", my_set.union(other_set))
print("交集:", my_set.intersection(other_set))
print("差集:", my_set.difference(other_set))
2.2 输出结果
List 操作
添加元素后: [1, 2, 3, 4]
扩展列表后: [1, 2, 3, 4, 5, 6]
插入元素后: [0, 1, 2, 3, 4, 5, 6]
移除元素后: [0, 1, 2, 4, 5, 6]
弹出元素后: [0, 1, 2, 4, 5] 弹出的元素: 6
排序后: [0, 1, 2, 4, 5]
反转列表后: [5, 4, 2, 1, 0]Dict 操作
键: dict_keys(['name', 'age'])
值: dict_values(['Alice', 25])
键值对: dict_items([('name', 'Alice'), ('age', 25)])
获取 name: Alice
更新后: {'name': 'Alice', 'age': 26}
弹出后: {'name': 'Alice'} 弹出的 age: 26Set 操作
添加元素后: {1, 2, 3, 4}
移除元素后: {1, 3, 4}
并集: {1, 3, 4, 5}
交集: {3, 4}
差集: {1}
3.字符串操作
- split(): 拆分字符串。
- join(): 合并字符串列表。
- find(): 查找子字符串。
- replace(): 替换子字符串。
- upper(): 转换为大写。
- lower(): 转换为小写。
- strip(): 去除首尾空白字符。
3.1 例子
text = "Hello, world!"
print("拆分:", text.split(","))
print("合并:", "-".join(["a", "b", "c"]))
print("查找:", text.find("world"))
print("替换:", text.replace("world", "Python"))
print("大写:", text.upper())
print("小写:", text.lower())
print("去除空白:", " Hello ".strip())
3.2 输出结果
拆分: ['Hello, world!']
合并: a-b-c
查找: 7
替换: Hello, Python!
大写: HELLO, WORLD!
小写: hello, world!
去除空白: Hello
4.文件操作
- open(): 打开文件。
- read(): 读取文件内容。
- write(): 写入文件内容。
- close(): 关闭文件。
4.1 例子
# 创建并写入文件
with open("example.txt", "w") as file:
file.write("Hello, World!")
# 读取文件
with open("example.txt", "r") as file:
content = file.read()
print("文件内容:", content)
4.2 输出结果
文件内容: Hello, World!
5.数学操作
- abs(): 绝对值。
- round(): 四舍五入。
- max(): 返回最大值。
- min(): 返回最小值。
- sum(): 求和。
5.1 例子
print("绝对值:", abs(-10))
print("四舍五入:", round(3.14159, 2))
print("最大值:", max(1, 2, 3))
print("最小值:", min(1, 2, 3))
print("求和:", sum([1, 2, 3, 4, 5]))
5.2 输出结果
绝对值: 10
四舍五入: 3.14
最大值: 3
最小值: 1
求和: 15
6.模块导入
- import: 导入模块。
- from ... import ...: 从模块中导入特定的函数或变量。
- as: 为导入的模块或函数起别名。
6.1 例子
import math
print("平方根:", math.sqrt(16))
from datetime import datetime
print("当前日期和时间:", datetime.now())
import numpy as np
array = np.array([1, 2, 3])
print("Numpy 数组:", array)
6.2 输出结果
平方根: 4.0
当前日期和时间: 2024-08-04 01:03:03.878883
Numpy 数组: [1 2 3]
7.控制结构
- if, elif, else: 条件语句。
- for: 循环。
- while: 循环。
- break: 结束循环。
- continue: 跳过当前循环块中的剩余语句,继续下一次循环。
7.1例子
# 条件语句
print("条件语句")
x = int(input("请输入一个数:"))
if x > 0:
print("x 是正数")
elif x == 0:
print("x 是零")
else:
print("x 是负数")
# 循环
print("\n循环")
for i in range(5):
print("For 循环:", i)
i = 0
while i < 5:
print("While 循环:", i)
i += 1
# break 和 continue
print("\nbreak 和 continue")
for i in range(5):
if i == 3:
break
print("Break 示例:", i)
for i in range(5):
if i == 3:
continue
print("Continue 示例:", i)
输出结果
条件语句
请输入一个数:6
x 是正数循环
For 循环: 0
For 循环: 1
For 循环: 2
For 循环: 3
For 循环: 4
While 循环: 0
While 循环: 1
While 循环: 2
While 循环: 3
While 循环: 4break 和 continue
Break 示例: 0
Break 示例: 1
Break 示例: 2
Continue 示例: 0
Continue 示例: 1
Continue 示例: 2
Continue 示例: 4
7.函数定义
- def: 定义函数。
- return: 返回函数值。
7.1 例子
def greet(name):
return "Hello," + name
print(greet("Alice"))
def add(a, b):
return a + b
print(add(2, 3))
7.2 输出结果
Hello,Alice
5
8.类和对象
- class: 定义类。
- init(): 类的构造方法。
- self: 类的方法的第一个参数,代表类的实例。
8.1 例子
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def greet(self):
return "你好,我的名字是 " + self.name
person = Person("Alice", 25)
print(person.greet())
print("年龄:", person.age)
8.2 输出结果
你好,我的名字是 Alice
年龄: 25
9.错误和异常处理
- try: 捕获异常。
- except: 处理捕获的异常。
- finally: 无论是否发生异常,都会执行的代码块。
- raise: 主动引发异常。
9.1 例子
try:
result = 10 / 0
except ZeroDivisionError:
print("不能除以零")
finally:
print("这段代码总是会执行")
try:
raise ValueError("发生错误")
except ValueError as e:
print("捕获到异常:", e)
9.2 输出结果
不能除以零
这段代码总是会执行
捕获到异常: 发生错误
10.项目实战
10.1 质数判断
10.1.1 需求
判断一个数是否为质数
10.1.2 代码
# 输入的数字
number = int(input("请输入一个数:"))
# 小于2的数不是质数
if number < 2:
print(f"{number} 不是质数")
else:
# 假设是质数
is_prime = True
# 检查从2到number平方根的所有数是否能整除number
for i in range(2, int(number**0.5) + 1):
if number % i == 0:
is_prime = False
break
# 根据is_prime的值输出结果
if is_prime:
print(f"{number} 是质数")
else:
print(f"{number} 不是质数")
10.1.3 运行结果
请输入一个数:7
7 是质数
10.1.4 知识导入
使用 %
操作符进行字符串格式化
在 Python 中,使用 %
操作符可以进行类似于 C 语言 printf
风格的字符串格式化。占位符如 %s
、%d
等会被对应的变量替换。
使用 str.format()
方法进行字符串格式化
str.format()
方法允许使用大括号 {}
作为占位符,然后在方法调用时将值传入。占位符的位置会被传入的值替换。
使用 f-strings (格式化字符串字面值)
f-strings 是 Python 3.6 引入的一种字符串格式化方法,使用更加简洁。它在字符串前加上 f
,然后在字符串内使用 {}
包含变量或表达式。
示例:
name = "Alice"
age = 25
# 使用 % 操作符
print("使用 %% 操作符: 姓名: %s, 年龄: %d" % (name, age))
# 使用 str.format() 方法
print("使用 str.format(): 姓名: {}, 年龄: {}".format(name, age))
# 使用 f-strings
print(f"使用 f-strings: 姓名: {name}, 年龄: {age}")
结果:
使用 % 操作符: 姓名: Alice, 年龄: 25
使用 str.format(): 姓名: Alice, 年龄: 25
使用 f-strings: 姓名: Alice, 年龄: 25
10.2 随机点名系统
10.2.1 需求
创建一个简单的命令行系统,用户可以通过菜单选择生成奇数学号、偶数学号或全部学号,并从这些学号中随机点名若干个学号。
10.2.2 设计思路
1. 导入必要的模块
首先需要导入 random
模块,用于后续的随机数生成和随机选择操作:
import random
2. 定义生成学号的函数
定义一个函数 generate_ids
,根据传入的参数生成指定范围内的奇数、偶数或全部学号:
def generate_ids(start_id, end_id, even=None):
"""
生成范围内的所有学号,可以选择奇数、偶数或全部学号
"""
if even is None:
return [i for i in range(start_id, end_id + 1)]
elif even:
return [i for i in range(start_id, end_id + 1) if i % 2 == 0]
else:
return [i for i in range(start_id, end_id + 1) if i % 2 != 0]
start_id
和end_id
定义学号的范围。even
参数用于控制生成奇数、偶数或全部学号。
3. 定义随机选择学号的函数
定义一个函数 select_random_ids
,从生成的学号列表中随机选择指定数量的学号:
def select_random_ids(start_id, end_id, num_to_select, even=None):
"""
在指定范围内随机选择指定数量的学号(可以是奇数、偶数或全部)
"""
ids = generate_ids(start_id, end_id, even)
if num_to_select > len(ids):
print("点名人数超过可用学号数量,请输入一个较小的数字。")
return []
else:
return random.sample(ids, num_to_select)
- 通过调用
generate_ids
函数生成学号列表。 - 检查
num_to_select
是否超过可用学号数量,防止错误选择。 - 使用
random.sample
从学号列表中随机选择指定数量的学号。
4. 设计主程序
设计一个主程序,提供用户交互菜单,让用户选择操作类型:
def main():
print("欢迎使用随机点名系统")
# 定义学号范围
start_id = 2023115902
end_id = 2023116150
while True:
print("\n菜单:")
print("1. 随机点名奇数学号")
print("2. 随机点名偶数学号")
print("3. 随机点名全部学号")
print("4. 退出")
choice = input("请选择操作(输入对应数字):")
if choice == '1':
num_to_select = int(input("请输入需要点名的人数:"))
selected_ids = select_random_ids(start_id, end_id, num_to_select, even=False)
if selected_ids:
print("随机选中的学号是:")
for id in selected_ids:
print(id)
elif choice == '2':
num_to_select = int(input("请输入需要点名的人数:"))
selected_ids = select_random_ids(start_id, end_id, num_to_select, even=True)
if selected_ids:
print("随机选中的学号是:")
for id in selected_ids:
print(id)
elif choice == '3':
num_to_select = int(input("请输入需要点名的人数:"))
selected_ids = select_random_ids(start_id, end_id, num_to_select, even=None)
if selected_ids:
print("随机选中的学号是:")
for id in selected_ids:
print(id)
elif choice == '4':
print("退出系统。")
break
else:
print("无效选择,请重新输入。")
if __name__ == "__main__":
main()
- 定义学号范围。
- 提供菜单选项:随机点名奇数学号、偶数学号、全部学号或退出系统。
- 根据用户选择调用相应的函数进行操作。
5. 整合各个部分
将上述函数和主程序整合在一起,形成一个完整的系统,用户可以通过菜单选择操作,随机点名奇数学号、偶数学号或全部学号。
10.2.3 代码
import random
def generate_ids(start_id, end_id, even=None):
"""
生成范围内的所有学号,可以选择奇数、偶数或全部学号
"""
if even is None:
return [i for i in range(start_id, end_id + 1)]
elif even:
return [i for i in range(start_id, end_id + 1) if i % 2 == 0]
else:
return [i for i in range(start_id, end_id + 1) if i % 2 != 0]
def select_random_ids(start_id, end_id, num_to_select, even=None):
"""
在指定范围内随机选择指定数量的学号(可以是奇数、偶数或全部)
"""
ids = generate_ids(start_id, end_id, even)
if num_to_select > len(ids):
print("点名人数超过可用学号数量,请输入一个较小的数字。")
return []
else:
return random.sample(ids, num_to_select)
def main():
print("欢迎使用随机点名系统")
# 定义学号范围
start_id = 2023115902
end_id = 2023116150
while True:
print("\n菜单:")
print("1. 随机点名奇数学号")
print("2. 随机点名偶数学号")
print("3. 随机点名全部学号")
print("4. 退出")
choice = input("请选择操作(输入对应数字):")
if choice == '1':
num_to_select = int(input("请输入需要点名的人数:"))
selected_ids = select_random_ids(start_id, end_id, num_to_select, even=False)
if selected_ids:
print("随机选中的学号是:")
for id in selected_ids:
print(id)
elif choice == '2':
num_to_select = int(input("请输入需要点名的人数:"))
selected_ids = select_random_ids(start_id, end_id, num_to_select, even=True)
if selected_ids:
print("随机选中的学号是:")
for id in selected_ids:
print(id)
elif choice == '3':
num_to_select = int(input("请输入需要点名的人数:"))
selected_ids = select_random_ids(start_id, end_id, num_to_select, even=None)
if selected_ids:
print("随机选中的学号是:")
for id in selected_ids:
print(id)
elif choice == '4':
print("退出系统。")
break
else:
print("无效选择,请重新输入。")
if __name__ == "__main__":
main()
10.2.4 运行结果
菜单:
1. 随机点名奇数学号
2. 随机点名偶数学号
3. 随机点名全部学号
4. 退出
请选择操作(输入对应数字):1
请输入需要点名的人数:2
随机选中的学号是:
2023115983
2023115925菜单:
1. 随机点名奇数学号
2. 随机点名偶数学号
3. 随机点名全部学号
4. 退出
请选择操作(输入对应数字):2
请输入需要点名的人数:3
随机选中的学号是:
2023115948
2023116004
2023116026菜单:
1. 随机点名奇数学号
2. 随机点名偶数学号
3. 随机点名全部学号
4. 退出菜单:
1. 随机点名奇数学号
2. 随机点名偶数学号
3. 随机点名全部学号
4. 退出
请选择操作(输入对应数字):3
请输入需要点名的人数:4
随机选中的学号是:
2023115922
2023116103
2023116129
2023116021菜单:
1. 随机点名奇数学号
2. 随机点名偶数学号
3. 随机点名全部学号
4. 退出
请选择操作(输入对应数字):4
退出系统。
10.3 通讯录管理系统
10.3.1 项目需求
- 用户能够添加联系人,包括姓名、电话和邮箱。
- 用户能够查看所有联系人。
- 用户能够根据姓名查找联系人。
- 用户能够根据姓名删除联系人。
- 用户退出时,联系人信息能够保存到文件中,下次启动时能够加载。
10.3.2 设计思路
1. 类设计
为了实现上述需求,我们设计两个类:Contact
和 AddressBook
。
-
Contact 类:
- 用于表示单个联系人,包含姓名、电话和邮箱属性。
- 提供一个字符串表示方法,便于打印联系人信息。
-
AddressBook 类:
- 用于管理多个联系人,包含一个联系人列表。
- 提供添加、查看、查找、删除联系人的方法。
- 提供保存联系人到文件和从文件加载联系人的方法。
2. 数据存储
- 选择使用 JSON 文件存储联系人信息,因为 JSON 格式易于读取和写入,并且与 Python 的字典和列表结构兼容。
- 在
AddressBook
类中实现save_contacts
和load_contacts
方法,分别用于保存联系人到文件和从文件加载联系人。
3. 用户交互
- 通过一个主函数
main
实现用户交互,提供一个简单的命令行菜单。 - 用户可以选择添加联系人、查看联系人、查找联系人、删除联系人和保存并退出。
- 使用
input
函数获取用户输入,根据用户选择调用AddressBook
类的相应方法。
10.3.3 具体步骤
1. 定义 Contact
类
__init__
方法初始化联系人对象的姓名、电话和邮箱。__str__
方法返回联系人信息的字符串表示。
2. 定义 AddressBook
类
__init__
方法初始化联系人列表和文件名,调用load_contacts
方法加载联系人。add_contact
方法向联系人列表中添加联系人。view_contacts
方法打印所有联系人。find_contact
方法根据姓名查找联系人。delete_contact
方法根据姓名删除联系人。save_contacts
方法将联系人保存到文件。load_contacts
方法从文件加载联系人,如果文件不存在则创建新的联系人文件。
3. 实现主函数 main
- 创建
AddressBook
对象。 - 提供一个循环菜单,用户可以选择不同的操作。
- 根据用户选择调用
AddressBook
类的方法。 - 用户选择保存并退出时,调用
save_contacts
方法保存联系人并退出程序。
10.3.4 代码
import json # 导入json模块
class Contact:
def __init__(self, name, phone, email):
self.name = name # 联系人姓名
self.phone = phone # 联系人电话
self.email = email # 联系人邮箱
def __str__(self):
return f"姓名: {self.name}, 电话: {self.phone}, 邮箱: {self.email}"
class AddressBook:
def __init__(self, filename='contacts.json'):
self.contacts = [] # 联系人列表
self.filename = filename # 保存联系人的文件名
self.load_contacts() # 加载联系人
def add_contact(self, contact):
self.contacts.append(contact) # 向联系人列表中添加联系人
print(f"添加联系人: {contact.name}")
def view_contacts(self):
print("所有联系人:")
for contact in self.contacts: # 打印所有联系人
print(contact)
def find_contact(self, name):
for contact in self.contacts:
if contact.name == name: # 查找联系人
return contact
return None
def delete_contact(self, name):
contact = self.find_contact(name) # 查找联系人
if contact:
self.contacts.remove(contact) # 从列表中移除联系人
print(f"删除联系人: {name}")
else:
print(f"未找到联系人: {name}")
def save_contacts(self):
with open(self.filename, 'w') as file:
json.dump([contact.__dict__ for contact in self.contacts], file) # 将联系人保存到文件
print("联系人已保存到文件。")
def load_contacts(self):
try:
with open(self.filename, 'r') as file:
contacts_list = json.load(file) # 从文件加载联系人
self.contacts = [Contact(**contact) for contact in contacts_list] # 创建联系人对象列表
print("联系人已从文件加载。")
except FileNotFoundError:
print("未找到联系人文件,创建新的文件。")
def main():
address_book = AddressBook() # 创建通讯录对象
while True:
print("\n通讯录管理系统")
print("1. 添加联系人")
print("2. 查看所有联系人")
print("3. 查找联系人")
print("4. 删除联系人")
print("5. 保存并退出")
choice = input("请选择操作 (1-5): ") # 用户选择操作
if choice == '1':
# 添加联系人
name = input("请输入姓名: ")
phone = input("请输入电话: ")
email = input("请输入邮箱: ")
contact = Contact(name, phone, email) # 创建联系人对象
address_book.add_contact(contact) # 添加联系人
elif choice == '2':
# 查看所有联系人
address_book.view_contacts()
elif choice == '3':
# 查找联系人
name = input("请输入要查找的姓名: ")
contact = address_book.find_contact(name)
if contact:
print("找到联系人:")
print(contact)
else:
print("未找到联系人。")
elif choice == '4':
# 删除联系人
name = input("请输入要删除的姓名: ")
address_book.delete_contact(name)
elif choice == '5':
# 保存并退出
address_book.save_contacts()
print("感谢使用通讯录管理系统!")
break
else:
print("无效选择,请重新输入。")
if __name__ == "__main__":
main()
10.3.5 运行结果
通讯录管理系统
1. 添加联系人
2. 查看所有联系人
3. 查找联系人
4. 删除联系人
5. 保存并退出
请选择操作 (1-5): 1
请输入姓名: a
请输入电话: 123
请输入邮箱: 123
添加联系人: a
请选择操作 (1-5): 1
请输入姓名: b
请输入电话: 1234
请输入邮箱: 1234
添加联系人: b
请选择操作 (1-5): 2
所有联系人:
姓名: a, 电话: 123, 邮箱: 123
姓名: b, 电话: 1234, 邮箱: 1234
请输入要查找的姓名: a
找到联系人:
姓名: a, 电话: 123, 邮箱: 123
请选择操作 (1-5): 4
请输入要删除的姓名: b
删除联系人: b
请选择操作 (1-5): 5
联系人已保存到文件。
感谢使用通讯录管理系统!