Python基本命令、函数、以及小项目

目录

1.基本操作

1.1 例子

1.2 输出结果

2.数据结构

2.1 例子

2.2 输出结果

3.字符串操作

3.1 例子

3.2 输出结果

4.文件操作

4.1 例子

4.2 输出结果

5.数学操作

5.1 例子

5.2 输出结果

6.模块导入

6.1 例子

6.2 输出结果

7.控制结构

7.1例子

输出结果

7.函数定义

7.1 例子

7.2 输出结果

8.类和对象

8.1 例子

8.2 输出结果

9.错误和异常处理

9.1 例子

9.2 输出结果

10.项目实战

10.1 质数判断

10.1.1 需求

10.1.2 代码

10.1.3 运行结果

10.1.4 知识导入

10.2 随机点名系统

10.2.1 需求

10.2.2 设计思路

10.2.3 代码

10.2.4 运行结果

10.3 通讯录管理系统

10.3.1 项目需求

10.3.2 设计思路

10.3.3 具体步骤

10.3.4 代码

10.3.5 运行结果


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: 26

Set 操作
添加元素后: {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 循环: 4

break 和 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_idend_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. 类设计

为了实现上述需求,我们设计两个类:ContactAddressBook

  • Contact 类:

    • 用于表示单个联系人,包含姓名、电话和邮箱属性。
    • 提供一个字符串表示方法,便于打印联系人信息。
  • AddressBook 类:

    • 用于管理多个联系人,包含一个联系人列表。
    • 提供添加、查看、查找、删除联系人的方法。
    • 提供保存联系人到文件和从文件加载联系人的方法。

2. 数据存储

  • 选择使用 JSON 文件存储联系人信息,因为 JSON 格式易于读取和写入,并且与 Python 的字典和列表结构兼容。
  • AddressBook 类中实现 save_contactsload_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
联系人已保存到文件。
感谢使用通讯录管理系统!

  • 18
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值