30个py实例

基础入门(1-5)

打印信息

# 打印文本和变量
name = "Python"
print(f"欢迎学习{name}编程!")
print("这是数字:", 123)
  • print 括号内的 f 是 f-string(格式化字符串字面量) 的标记,用于快速格式化字符串,是 Python 3.6 及以上版本引入的便捷语法。传统的字符串拼接(如 print("欢迎学习" + name + "编程!")),f-string 更简洁、直观,是 Python 中推荐使用的字符串格式化方式。

变量与数据类型

# 不同数据类型的变量
age = 25  # 整数
height = 1.75  # 浮点数
is_student = True  # 布尔值
name = "小明"  # 字符串

# 查看变量类型
print(type(age))
print(type(name))
  • Python 是一种 “动态类型语言”,变量的类型不需要手动声明(比如不需要写 int age = 25),而是根据赋值自动确定;
  • type() type() 是一个内置函数,用于查看一个变量、值或对象的数据类型。可以帮你快速确认变量的类型

简单数学运算

a = 10
b = 3

print(f"{a} + {b} = {a + b}")
print(f"{a} - {b} = {a - b}")
print(f"{a} × {b} = {a * b}")
print(f"{a} ÷ {b} = {a / b}")
print(f"{a} ÷ {b} 的余数 = {a % b}")
print(f"{a} 的 {b} 次方 = {a ** b}")
  • {a} 会被变量 a 的值(10)替换
  • {b} 会被变量 b 的值(3)替换
  • {a + b} 会被表达式 a + b 的结果替换
  • {} 就像一个 “空盒子”,会被具体的变量、表达式或参数值 “填充”,让字符串可以动态包含不同内容,避免了繁琐的字符串拼接

字符串操作

message = "Hello Python"

# 字符串长度
print(len(message))

# 大小写转换
print(message.lower())
print(message.upper())

# 字符串拼接
greeting = "Hello"
name = "Alice"
print(greeting + ", " + name + "!")

# 字符串格式化
print(f"{greeting}, {name}!")

代码执行结果如下:
image

  • len() 是一个内置函数,用于返回对象的 “长度” 或 “元素个数”。它可以作用于字符串、列表、元组、字典等多种数据类型;
  • 在 Python 中,lower() 和 upper() 是字符串(str 类型)的内置方法,用于转换字符串中字母的大小写:
    • lower():将字符串中所有大写字母转换为小写字母,非字母字符不变;
    • upper():将字符串中所有小写字母转换为大写字母,非字母字符不变;
  • print括号内的“ ”包裹起来部分表示是字符串;
  • print括号内的+表示拼接两个字符串,但不打印输出;

输入与输出

# 获取用户输入
name = input("请输入你的名字: ")
age = int(input("请输入你的年龄: "))

# 输出信息
print(f"你好,{name}!你明年将会是{age + 1}岁。")

代码执行效果为:
image

  • input() 是一个内置函数,用于从用户那里(比如键盘输入)获取数据。它会暂停程序运行,等待用户输入内容,直到用户按下回车键后,将输入的内容作为字符串形式返回并返回;
  • input() 无论用户输入什么内容,默认返回的都是字符串类型。如果需要数字(比如年龄、分数),必须用 int()(转整数)或 float()(转浮点数)转换;

条件与循环(6-10)

简单条件判断

score = 85

if score >= 90:
    print("优秀")
elif score >= 80:
    print("良好")
elif score >= 60:
    print("及格")
else:
    print("不及格")

猜数字(限定次数)

import random

secret = random.randint(1, 20)
max_attempts = 5

for attempt in range(max_attempts):
    guess = int(input(f"请猜一个1-20之间的数字(第{attempt + 1}次): "))
    
    if guess == secret:
        print("恭喜你,猜对了!")
        break
    elif guess < secret:
        print("太小了!")
    else:
        print("太大了!")
else:
    print(f"很遗憾,你没猜对。正确答案是{secret}")

代码执行结果:
image
image

  • random.randint(1, 20) 就是 random 模块提供的函数,作用是生成一个指定范围内(1 到 20 之间,包括 1 和 20)的随机整数。
  • random 是 Python 自带的 “标准库” 模块,不需要额外安装,直接导入就能用。
    • 除了 randint(),random 模块还有很多实用功能,比如:
    • random.random():生成 0 到 1 之间的随机小数
    • random.choice([1,2,3]):从列表中随机选择一个元素
    • random.shuffle([1,2,3]):随机打乱列表顺序
  • range() 是 Python 的一个内置函数,用于生成一个整数序列,通常配合 for 循环使用,用来控制循环的次数:
    • range(n):生成从 0 到 n-1 的整数序列(包含 0,不包含 n)。例如:range(5) 会生成 0, 1, 2, 3, 4(共 5 个数字)。
    • range(start, end):生成从 start 到 end-1 的整数序列。例如:range(2, 7) 会生成 2, 3, 4, 5, 6。
    • range(start, end, step):生成从 start 到 end-1 的整数序列,步长为 step(每次增加 step)。

计算 1 到 100 的和

total = 0
for i in range(1, 101):
    total += i
print(f"1到100的和是: {total}")

打印乘法表

for i in range(1, 10):
    for j in range(1, i + 1):
        print(f"{j}×{i}={i*j}", end="\t")
    print()  # 换行

代码运行结果:
image

  • 在 Python 的 print() 函数中,end 是一个可选参数,用于指定打印内容结束时添加的字符,默认值是换行符 \n(即打印后自动换行)。在上面实例中,end="\t" 的作用是让每次打印的内容后添加一个制表符(Tab 键的效果),而不是默认的换行,这样可以让乘法表的内容对齐成整齐的列。
  • py的其他转义字符:
    image

计算阶乘

n = int(input("请输入一个正整数: "))
result = 1

for i in range(1, n + 1):
    result *= i

print(f"{n}的阶乘是: {result}")

列表与字典(11-15)

列表基本操作

# 创建列表
fruits = ["苹果", "香蕉", "橙子"]

# 访问元素
print(fruits[0])  # 第一个元素
print(fruits[-1])  # 最后一个元素

# 添加元素
fruits.append("草莓")
print(fruits)

# 列表切片
print(fruits[1:3])  # 第二个到第三个元素
  • 在 Python 列表操作中,append() 是列表的一个内置方法,用于向列表的末尾添加一个新元素:
    • 添加位置:始终在列表的最后添加元素,不会影响原有元素的顺序;
    • 参数要求:append() 只能接收一个参数(即要添加的元素),可以是任意数据类型(字符串、数字、甚至另一个列表);
    • 无返回值:append() 直接修改原列表,不会返回新列表(所以不需要用变量接收结果);

列表排序与筛选

numbers = [34, 12, 45, 17, 23, 56]

# 排序
numbers.sort()
print("排序后:", numbers)

# 筛选偶数
evens = [num for num in numbers if num % 2 == 0]
print("偶数:", evens)

# 列表推导式
squares = [num **2 for num in numbers]
print("平方数:", squares)
  • 在 Python 列表操作中,sort() 是列表的内置方法,用于对列表中的元素进行原地排序(直接修改原列表,不创建新列表);
  • 降序排序:通过参数 reverse=True 实现从大到小排列:
numbers = [34, 12, 45, 17, 23, 56]
numbers.sort(reverse=True)  # 降序排序
print(numbers)  # 输出:[56, 45, 34, 23, 17, 12]
  • [num for num in numbers if num % 2 == 0] 称为列表推导式,意思是:“遍历 numbers 中的每个元素 num,只保留那些是偶数(num % 2 == 0)的 num,最后组成一个新列表”。这种语法在处理列表时非常常用,可以快速实现筛选、转换等操作,让代码更简洁高效。

简单通讯录(字典)

contacts = {
    "张三": "13800138000",
    "李四": "13900139000",
    "王五": "13700137000"
}

# 显示所有联系人
print("通讯录:")
for name, phone in contacts.items():
    print(f"{name}: {phone}")

# 添加新联系人
contacts["赵六"] = "13600136000"

# 查找联系人
search_name = "李四"
if search_name in contacts:
    print(f"{search_name}的电话是: {contacts[search_name]}")

代码执行结果:
image

  • 在 Python 字典操作中,contacts.items() 是字典的一个内置方法,用于返回字典中所有键值对(key-value pairs)的视图对象。这个视图对象包含了字典中所有的键和对应的值,可以通过循环遍历获取每一组键值对;
  • 字典存储的是 “键 - 值” 对应关系,items() 方法让我们可以同时获取键和对应的值。如果只需要键,可以用 keys() 方法;如果只需要值,可以用 values() 方法:
# 只获取所有键(姓名)
for name in contacts.keys():
    print(name)  # 输出:张三、李四、王五

# 只获取所有值(电话号码)
for phone in contacts.values():
    print(phone)  # 输出:13800138000、13900139000、13700137000

统计列表元素出现次数

words = ["apple", "banana", "apple", "orange", "banana", "apple"]
counts = {}

for word in words:
    if word in counts:
        counts[word] += 1
    else:
        counts[word] = 1

print("单词出现次数:")
for word, count in counts.items():
    print(f"{word}: {count}次")

代码执行结果:
image

学生成绩排序

students = [
    {"name": "张三", "score": 85},
    {"name": "李四", "score": 92},
    {"name": "王五", "score": 78}
]

# 按成绩从高到低排序
students.sort(key=lambda x: x["score"], reverse=True)

print("成绩排名:")
for i, student in enumerate(students, 1):
    print(f"第{i}名: {student['name']}, 分数: {student['score']}")

代码执行结果:
image

  • students.sort(...):
    sort() 是列表的排序方法,会直接修改原列表(原地排序)。
  • key=lambda x: x["score"]:
    • key 参数用于指定 “排序依据”,即按照什么规则排序。
    • lambda x: x["score"] 是一个匿名函数(临时函数),表示:对于列表中的每个元素 x(这里的 x 是每个学生的字典,如 {"name": "张三", "score": 85}),取它的 "score" 键对应的值(即成绩)作为排序依据。
  • reverse=True:
    • reverse 是 “反转” 的意思,默认值为 False(升序,从小到大)。
    • 这里设为 True,表示按成绩从高到低排序(降序)。

函数与模块(16-20)

简单函数定义

def greet(name):
    """向指定的人打招呼"""
    return f"你好,{name}!"

def add(a, b):
    """计算两个数的和"""
    return a + b

# 使用函数
print(greet("小明"))
print(add(3, 5))

代码运行结果为:
image

  • py函数定义规则:
    • 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号();
    • 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数;
    • 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明;
    • 函数内容以冒号起始,并且缩进;
    • return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None;

计算斐波那契数列

def fibonacci(n):
    """生成前n个斐波那契数"""
    fib = [0, 1]
    if n <= 2:
        return fib[:n]
    
    for i in range(2, n):
        next_num = fib[i-1] + fib[i-2]
        fib.append(next_num)
    return fib

# 生成前10个斐波那契数
print(fibonacci(10))

使用默认参数

def calculate_area(length, width=None):
    """计算面积,默认计算正方形面积"""
    if width is None:
        # 如果只提供一个参数,计算正方形面积
        return length * length
    else:
        # 计算长方形面积
        return length * width

print("正方形面积:", calculate_area(5))
print("长方形面积:", calculate_area(5, 8))

使用标准库:时间模块

import time
import datetime

# 获取当前时间戳
print("当前时间戳:", time.time())

# 获取当前时间
current_time = time.localtime()
print("当前时间:", time.strftime("%Y-%m-%d %H:%M:%S", current_time))

# 使用datetime模块
today = datetime.date.today()
print("今天日期:", today)
tomorrow = today + datetime.timedelta(days=1)
print("明天日期:", tomorrow)
  • 在 Python 的 time 标准库中,localtime() 是一个用于获取本地时间的函数,它会返回一个包含当前本地日期和时间信息的结构体(struct_time 对象);

简单模块示例

# 假设这是一个名为mymath.py的文件
def add(a, b):
    return a + b

def subtract(a, b):
    return a - b

def multiply(a, b):
    return a * b

def divide(a, b):
    if b == 0:
        return "除数不能为0"
    return a / b

# 使用方法(在另一个文件中)
# import mymath
# print(mymath.add(2, 3))

文件操作与类(21-25)

读写文本文件

# 写入文件
with open("notes.txt", "w", encoding="utf-8") as f:
    f.write("这是我的第一行笔记\n")
    f.write("这是我的第二行笔记\n")

# 读取文件
with open("notes.txt", "r", encoding="utf-8") as f:
    content = f.read()
    print("文件内容:")
    print(content)

统计文件单词数

def count_words(filename):
    """统计文件中的单词数量"""
    try:
        with open(filename, "r", encoding="utf-8") as f:
            content = f.read()
            # 简单分割单词(按空格和标点)
            words = content.split()
            return len(words)
    except FileNotFoundError:
        return f"错误:文件 '{filename}' 不存在"

word_count = count_words("notes.txt")
print(f"单词数量: {word_count}")

简单的类示例

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    
    def greet(self):
        return f"你好,我叫{self.name},今年{self.age}岁。"
    
    def birthday(self):
        self.age += 1
        return f"生日快乐!我现在{self.age}岁了。"

# 创建对象
person1 = Person("张三", 25)
print(person1.greet())
print(person1.birthday())

类的继承

class Animal:
    def __init__(self, name):
        self.name = name
    
    def speak(self):
        return "动物发出声音"

class Dog(Animal):
    def speak(self):
        return f"{self.name}汪汪叫"

class Cat(Animal):
    def speak(self):
        return f"{self.name}喵喵叫"

dog = Dog("小黑")
cat = Cat("小白")

print(dog.speak())
print(cat.speak())

图书管理系统(简单版)

class Book:
    def __init__(self, title, author):
        self.title = title
        self.author = author
        self.borrowed = False
    
    def __str__(self):
        status = "已借出" if self.borrowed else "可借阅"
        return f"{self.title} (作者: {self.author}) - {status}"

class Library:
    def __init__(self):
        self.books = []
    
    def add_book(self, book):
        self.books.append(book)
        print(f"已添加图书: {book.title}")
    
    def list_books(self):
        print("\n图书馆藏书:")
        for i, book in enumerate(self.books, 1):
            print(f"{i}. {book}")

# 使用图书管理系统
lib = Library()
lib.add_book(Book("Python编程", "张三"))
lib.add_book(Book("数据结构", "李四"))
lib.list_books()

进阶应用(26-30)

简单密码生成器

import random
import string

def generate_password(length=8):
    """生成指定长度的随机密码"""
    # 包含大小写字母、数字和特殊字符
    characters = string.ascii_letters + string.digits + "!@#$%^&*()"
    
    # 随机选择字符
    password = ''.join(random.choice(characters) for _ in range(length))
    return password

# 生成10位密码
print("生成的密码:", generate_password(10))

数据可视化(简单图表)

import matplotlib.pyplot as plt

# 确保中文显示正常
plt.rcParams["font.family"] = ["SimHei", "WenQuanYi Micro Hei", "Heiti TC"]

# 数据
subjects = ["数学", "语文", "英语", "物理", "化学"]
scores = [85, 92, 78, 88, 90]

# 创建柱状图
plt.figure(figsize=(10, 6))
plt.bar(subjects, scores, color='skyblue')
plt.title('学生成绩分布图')
plt.xlabel('科目')
plt.ylabel('分数')
plt.ylim(0, 100)  # 设置y轴范围

# 显示图表
plt.show()

文本分析工具

def analyze_text(text):
    """分析文本,返回单词频率统计"""
    # 预处理文本:转为小写,去除标点
    text = text.lower()
    for punctuation in '.,!?;:"\'()[]{}':
        text = text.replace(punctuation, ' ')
    
    # 分割单词
    words = text.split()
    
    # 统计频率
    frequency = {}
    for word in words:
        if word in frequency:
            frequency[word] += 1
        else:
            frequency[word] = 1
    
    # 按频率排序
    sorted_frequency = sorted(frequency.items(), key=lambda x: x[1], reverse=True)
    return sorted_frequency

# 分析示例文本
sample_text = """Python is a powerful programming language. 
It is easy to learn and fun to use. Python is widely used in many fields."""

word_counts = analyze_text(sample_text)

print("单词频率统计(前5名):")
for word, count in word_counts[:5]:
    print(f"{word}: {count}次")

简单的待办事项管理器

class TodoList:
    def __init__(self):
        self.tasks = []
    
    def add_task(self, task):
        self.tasks.append({"task": task, "completed": False})
        print(f"已添加任务: {task}")
    
    def list_tasks(self):
        print("\n待办事项:")
        for i, task in enumerate(self.tasks, 1):
            status = "✓" if task["completed"] else " "
            print(f"{i}. [{status}] {task['task']}")
    
    def complete_task(self, index):
        if 1 <= index <= len(self.tasks):
            self.tasks[index-1]["completed"] = True
            print(f"已完成任务: {self.tasks[index-1]['task']}")
        else:
            print("无效的任务编号")

# 使用待办事项管理器
todo = TodoList()
todo.add_task("学习Python")
todo.add_task("阅读书籍")
todo.list_tasks()
todo.complete_task(1)
todo.list_tasks()

温度转换器(带用户界面)

import tkinter as tk
from tkinter import ttk, messagebox

class TemperatureConverter:
    def __init__(self, root):
        self.root = root
        self.root.title("温度转换器")
        self.root.geometry("300x200")
        
        # 创建输入框
        self.temp_input = ttk.Entry(root, width=10, font=("Arial", 14))
        self.temp_input.grid(row=0, column=1, padx=10, pady=20)
        
        # 创建下拉菜单选择单位
        self.unit_var = tk.StringVar(value="摄氏度")
        self.unit_combobox = ttk.Combobox(root, textvariable=self.unit_var, 
                                         values=["摄氏度", "华氏度"], width=8, font=("Arial", 14))
        self.unit_combobox.grid(row=0, column=2, padx=10)
        
        # 创建转换按钮
        self.convert_btn = ttk.Button(root, text="转换", command=self.convert)
        self.convert_btn.grid(row=1, column=1, columnspan=2, pady=10)
        
        # 创建结果标签
        self.result_label = ttk.Label(root, text="结果将显示在这里", font=("Arial", 14))
        self.result_label.grid(row=2, column=1, columnspan=2, pady=10)
    
    def convert(self):
        try:
            temp = float(self.temp_input.get())
            unit = self.unit_var.get()
            
            if unit == "摄氏度":
                # 摄氏度转华氏度
                result = temp * 9/5 + 32
                self.result_label.config(text=f"{result:.2f} 华氏度")
            else:
                # 华氏度转摄氏度
                result = (temp - 32) * 5/9
                self.result_label.config(text=f"{result:.2f} 摄氏度")
        except ValueError:
            messagebox.showerror("输入错误", "请输入有效的数字")

if __name__ == "__main__":
    root = tk.Tk()
    app = TemperatureConverter(root)
    root.mainloop()
posted @ 2025-03-12 10:45  MKYC  阅读(36)  评论(0)    收藏  举报