跟着我学Python进阶篇:01.试用Python完成一些简单问题

news2024/9/24 19:23:58

往期文章

跟着我学Python基础篇:01.初露端倪
跟着我学Python基础篇:02.数字与字符串编程
跟着我学Python基础篇:03.选择结构
跟着我学Python基础篇:04.循环
跟着我学Python基础篇:05.函数
跟着我学Python基础篇:06.列表
跟着我学Python基础篇:07.文本
跟着我学Python基础篇:08.集合和字典


目录

  • 往期文章
  • 前言
  • 1. 图形:简单绘图
    • 1.1 创建窗口
    • 1.2 线和多边形
  • 2. 使用Sympy进行符号处理
    • 2.1 操作表达式
      • 2.1.1化简表达式
      • 2.1.2 展开表达式
      • 2.1.3 因式分解表达式
      • 2.1.4 求导数
      • 2.1.5 求积分
    • 2.2 求解方程
      • 2.2.1 求解一元方程
      • 2.2.2求解多元方程
      • 2.2.3 求解高阶多项方程
      • 2.2.4 求解三角方程
      • 2.2.5 求解指数方程
    • 2.3 画函数图像
  • 3. 随机数的生成和模拟
    • 3.1 模拟掷骰子
    • 3.2 模拟打靶
    • 3.3 生成随机密码

前言

在基础篇,我们已经掌握了Python中的一些基础的语法规则,那么在进阶篇中,我们将在更深度一些的层次上,去学习和了解Python。

1. 图形:简单绘图

matplotlib是一个用于创建高质量图形的Python库。它可以用于绘制各种类型的图形,包括线图、散点图、条形图、直方图、饼图等。matplotlib提供了丰富的图形定制选项,允许用户自定义各种元素,如标签、标题、轴标签、颜色、线型等。此外,matplotlib还可以与numpy、pandas等其他Python库一起使用,以便更轻松地处理和可视化数据。

1.1 创建窗口

import matplotlib.pyplot as plt

# 创建一个图形窗口
fig = plt.figure()

# 可选:设置窗口的大小和标题
fig.set_size_inches(6, 4)  # 设置窗口大小为6x4英寸
fig.suptitle('My Window')  # 设置窗口标题


# 显示窗口
plt.show()

在这里插入图片描述
我们首先使用plt.figure()创建了一个图形窗口对象fig。然后,我们可以使用fig.set_size_inches()和fig.suptitle()来设置窗口的大小和标题。

1.2 线和多边形

import matplotlib.pyplot as plt

# 创建一个图形窗口
fig = plt.figure()

# 可选:设置窗口的大小和标题
fig.set_size_inches(6, 4)  # 设置窗口大小为6x4英寸
fig.suptitle('My Window')  # 设置窗口标题

# 绘制折线图
x = [1, 2, 3, 4, 5]
y = [5, 4, 3, 2, 1]
plt.plot(x, y)

# 显示窗口
plt.show()

在这里插入图片描述
我们首先创建了一个图形窗口,并设置了窗口的大小和标题。然后使用plt.plot()函数绘制了一个折线图,最后使用plt.show()函数显示图形窗口。你可以根据需要在窗口中绘制不同类型的图形。

import matplotlib.pyplot as plt

# 数据
x = ['A', 'B', 'C', 'D']
y = [10, 15, 7, 12]

# 创建一个图形窗口
fig = plt.figure()

# 绘制柱状图
plt.bar(x, y)

# 显示图形
plt.show()


在这里插入图片描述
我们定义了两个列表x和y,分别表示柱状图的横轴和纵轴数据。然后创建一个图形窗口,使用plt.bar()函数绘制柱状图。最后使用plt.show()函数显示图形窗口。

import matplotlib.pyplot as plt

# 数据
x = ['A', 'B', 'C', 'D']
y = [10, 15, 7, 12]

# 颜色
colors = ['red', 'green', 'blue', 'orange']

# 创建一个图形窗口
fig = plt.figure()

# 绘制柱状图并填充颜色
plt.bar(x, y, color=colors)

# 显示图形
plt.show()

在这里插入图片描述
定义了一个colors列表,其中每个元素对应柱状图中每个柱子的颜色。然后创建一个图形窗口,使用plt.bar()函数绘制柱状图,并通过color参数指定填充颜色。最后使用plt.show()函数显示图形窗口。你可以根据实际需求调整x、y和colors的值,以及使用其他参数来自定义柱状图的样式,如宽度、边框颜色等。

2. 使用Sympy进行符号处理

sympy包提供了大量的函数可以计算更多公式的值,包括微积分。让我们来感受一下。

2.1 操作表达式

2.1.1化简表达式

`Sympy可以将表达式自动化简为最简形式。以下是一个例子:

import sympy

# 定义符号变量x和y
x, y = sympy.symbols('x y')

# 定义表达式
expr = 2*x + x - x**2

# 化简表达式
simplified_expr = sympy.simplify(expr)

# 输出化简后的表达式
print(simplified_expr)

在这里插入图片描述

在这个例子中,我们定义了一个表达式2*x + x - x**2,使用sympy.simplify()函数将其化简为最简形式,并将结果存储在变量simplified_expr中。最后,我们使用print()函数输出化简后的表达式。

2.1.2 展开表达式

Sympy可以将表达式展开为多项式。以下是一个例子:

import sympy

# 定义符号变量x和y
x, y = sympy.symbols('x y')

# 定义表达式
expr = (x + y)**2

# 展开表达式
expanded_expr = sympy.expand(expr)

# 输出展开后的表达式
print(expanded_expr)

在这里插入图片描述

在这个例子中,我们定义了一个表达式(x + y)**2,使用sympy.expand()函数将其展开为多项式,并将结果存储在变量expanded_expr中。最后,我们使用print()函数输出展开后的表达式。

2.1.3 因式分解表达式

将表达式因式分解为乘积形式。以下是一个例子:

import sympy

# 定义符号变量x和y
x, y = sympy.symbols('x y')

# 定义表达式
expr = x**2 - y**2

# 因式分解表达式
factored_expr = sympy.factor(expr)

# 输出因式分解后的表达式
print(factored_expr)

在这里插入图片描述

在这个例子中,我们定义了一个表达式x2 - y2,使用sympy.factor()函数将其因式分解为x + y)*(x - y)的乘积形式,并将结果存储在变量actored_expr中。最后,我们使用print()函数输出因式分解后的表达式。

2.1.4 求导数

Sympy可以对表达式求导数。以下是一个例子:

import sympy

# 定义符号变量x和y
x, y = sympy.symbols('x y')

# 定义表达式
expr = x**3 + 2*x**2 + x

# 对表达式求导
derivative_expr = sympy.diff(expr, x)

# 输出求导后的表达式
print(derivative_expr)

在这里插入图片描述

在这个例子中,我们定义了一个表达式x3 + 2*x2 + x,使用sympy.diff()函数对其求导,并将结果存储在变量derivative_expr中。最后,我们使用print()函数输出求导后的表达式。

2.1.5 求积分

import sympy

# 定义符号变量x和y
x, y = sympy.symbols('x y')

# 定义表达式
expr = x**3 + 2*x**2 + x

# 对表达式求积分
integral_expr = sympy.integrate(expr, x)

# 输出求积分后的表达式
print(integral_expr)

在这里插入图片描述

在这个例子中,我们定义了一个表达式x3 + 2*x2 + x,使用sympy.integrate()函数对其求积分,并将结果存储在变量integral_expr中。最后,我们使用print()函数输出求积分后的表达式。

2.2 求解方程

2.2.1 求解一元方程

import sympy

# 定义符号变量x
x = sympy.symbols('x')

# 定义方程
equation = sympy.Eq(x**2 - 4, 0)

# 求解方程
solutions = sympy.solve(equation, x)

# 输出方程的解
print(solutions)

在这里插入图片描述
我们定义了一个一元方程x**2 - 4 = 0,使用sympy.solve()函数来求解方程,并将结果存储在变量solutions中。最后,我们使用print()函数输出方程的解。

2.2.2求解多元方程

import sympy

# 定义符号变量x和y
x, y = sympy.symbols('x y')

# 定义方程组
equations = [
    sympy.Eq(x + y, 5),
    sympy.Eq(2*x - y, 1)
]

# 求解方程组
solutions = sympy.solve(equations, (x, y))

# 输出方程组的解
print(solutions)

在这里插入图片描述
我们定义了一个多元方程组,包含两个方程x + y = 5和2*x - y = 1。我们使用sympy.solve()函数来求解方程组,并将结果存储在变量solutions中。最后,我们使用print()函数输出方程组的解。

2.2.3 求解高阶多项方程

import sympy

# 定义符号变量x
x = sympy.symbols('x')

# 定义高阶多项式方程
equation = x**4 - 6*x**3 + 11*x**2 - 6*x

# 求解方程
solutions = sympy.solve(equation, x)

# 输出方程的解
print(solutions)

在这里插入图片描述
高阶多项式方程x4 - 6*x3 + 11x**2 - 6x,使用sympy.solve()函数求解方程,并将结果存储在变量solutions中。最后,我们使用print()函数输出方程的解。

2.2.4 求解三角方程

import sympy

# 定义符号变量x
x = sympy.symbols('x')

# 定义三角方程
equation = sympy.sin(x) - sympy.cos(x)

# 求解方程
solutions = sympy.solve(equation, x)

# 输出方程的解
print(solutions)

在这里插入图片描述
我们定义了一个三角方程sin(x) - cos(x),使用sympy.solve()函数求解方程,并将结果存储在变量solutions中。最后,我们使用print()函数输出方程的解。

2.2.5 求解指数方程

import sympy

# 定义符号变量x
x = sympy.symbols('x')

# 定义指数方程
equation = sympy.exp(x) - 2**x

# 求解方程
solutions = sympy.solve(equation, x)

# 输出方程的解
print(solutions)

在这里插入图片描述

2.3 画函数图像

import sympy
from sympy.plotting import plot

# 定义符号变量x
x = sympy.symbols('x')

# 定义函数
f = x**2

# 绘制函数图像
p = plot(f, (x, -5, 5), show=False)

# 设置标题和坐标轴标签
p.title = 'Function Graph'
p.xlabel = 'x'
p.ylabel = 'y'

# 显示图像
p.show()

在这里插入图片描述
我们定义了一个函数f(x) = x**2,使用sympy库的plot()函数来绘制函数的图像。第一个参数是要绘制的函数,第二个参数是函数自变量的范围。plot()函数还有许多其他参数可以用来定制图像,例如线条颜色、线条样式等。
最后,我们设置了标题和坐标轴标签,并使用show()函数显示图像。
注意,sympy库的绘图功能相对于专业的绘图库可能较为简单,因此对于绘制复杂的图像,建议使用更专业的绘图库,例如matplotlib。

3. 随机数的生成和模拟

3.1 模拟掷骰子

import pygame
import sys
import random
import time

pygame.init()

WINDOW_SIZE = (400, 400)
screen = pygame.display.set_mode(WINDOW_SIZE)
pygame.display.set_caption("Rolling Dice Animation")

DICE_POINTS = {
    1: [(200, 200)],
    2: [(170, 170), (230, 230)],
    3: [(170, 170), (200, 200), (230, 230)],
    4: [(170, 170), (230, 230), (170, 230), (230, 170)],
    5: [(170, 170), (230, 230), (170, 230), (230, 170), (200, 200)],
    6: [(170, 170), (230, 230), (170, 230), (230, 170), (170, 200), (230, 200)],
}

def draw_dice(number):
    screen.fill((255, 255, 255))

    pygame.draw.rect(screen, (0, 0, 0), (150, 150, 100, 100))

    for point in DICE_POINTS[number]:
        pygame.draw.circle(screen, (255, 0, 0), point, 10)

    pygame.display.flip()

def roll_dice_animation():
    current_number = 1

    for _ in range(30):
        draw_dice(current_number)
        current_number = random.randint(1, 6)
        time.sleep(0.1)

    return current_number

def main():
    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()

        result = roll_dice_animation()
        print(f"Dice rolled: {result}")
        time.sleep(1)  # 停留一秒,显示掷出的点数

if __name__ == "__main__":
    main()

在这里插入图片描述
在这里插入图片描述

3.2 模拟打靶

import pygame
import sys
import random

pygame.init()

WINDOW_SIZE = (400, 400)
screen = pygame.display.set_mode(WINDOW_SIZE)
pygame.display.set_caption("Target Shooting Simulation")

TARGET_RADIUS = 50  # 调整靶子半径
TARGET_COLOR = (255, 0, 0)
BACKGROUND_COLOR = (255, 255, 255)

shots = []

def draw_target():
    pygame.draw.circle(screen, TARGET_COLOR, (200, 200), TARGET_RADIUS)

def draw_shots():
    for shot in shots:
        pygame.draw.circle(screen, (0, 255, 0), shot[0], 5)
        font = pygame.font.Font(None, 36)
        text = font.render(str(shot[1]), True, (0, 255, 0))
        screen.blit(text, (shot[0][0] - 10, shot[0][1] - 20))

def calculate_score(distance):
    max_distance = TARGET_RADIUS
    min_distance = 0
    normalized_distance = max(0, min((max_distance - distance) / max_distance, 1))
    score = int(normalized_distance * 10)
    return score

def main():
    clock = pygame.time.Clock()

    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()
            elif event.type == pygame.MOUSEBUTTONDOWN and event.button == 1:  # 左键点击
                mouse_x, mouse_y = pygame.mouse.get_pos()
                distance = ((mouse_x - 200) ** 2 + (mouse_y - 200) ** 2) ** 0.5
                if distance <= TARGET_RADIUS:
                    score = calculate_score(distance)
                    print(f"Hit! Score: {score}")
                    shots.append(((mouse_x, mouse_y), score))

        screen.fill(BACKGROUND_COLOR)
        draw_target()
        draw_shots()

        pygame.display.flip()
        clock.tick(60)

if __name__ == "__main__":
    main()

在这里插入图片描述

3.3 生成随机密码

import random
import string

def generate_password(length=12):
    characters = string.ascii_letters + string.digits + string.punctuation
    password = ''.join(random.choice(characters) for _ in range(length))
    return password

# 生成一个默认长度为12的密码
password = generate_password()
print("Generated Password:", password)

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1324487.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

类和对象(中篇)

类的六个默认成员函数 如果一个类中什么成员都没有&#xff0c;简称为空类。 空类中真的什么都没有吗&#xff1f;并不是&#xff0c;任何类在什么都不写时&#xff0c;编译器会自动生成以下6个默认成员函数。 默认成员函数&#xff1a; 用户没有显式实现&#xff0c;编译器会…

Linux上随机输出谚语的程序fortune

概要&#xff1a; Linux上有一个随机输出谚语的程序叫fortune 手册对它的描述是&#xff1a;输出一个随机的、充满希望的、有趣的谚语 本篇所用的系统是Ubuntu22.04 一、fortune的安装 sudo apt install fortune-mod 二、fortune的使用 1、示例一 这个谚语是什么意思啊…

[DNS网络] 网页无法打开、显示不全、加载卡顿缓慢 | 解决方案

[网络故障] 网页无法打开、显示不全、加载卡顿缓慢 | 解决方案 问题描述 最近&#xff0c;我在使用CSDN插件浏览 MOOC 网站时&#xff0c;遇到了一些网络故障。具体表现为&#xff1a; MOOC 中国大学慕课网&#xff1a;www.icourse163.org点击CSDN插件首页的 MOOC&#xff08…

SLAM算法与工程实践——RTKLIB编译

SLAM算法与工程实践系列文章 下面是SLAM算法与工程实践系列文章的总链接&#xff0c;本人发表这个系列的文章链接均收录于此 SLAM算法与工程实践系列文章链接 下面是专栏地址&#xff1a; SLAM算法与工程实践系列专栏 文章目录 SLAM算法与工程实践系列文章SLAM算法与工程实践…

linux 内核的 lru_list 的结构

在linux的slab分配的入口slab_alloc有一个传入参数lru&#xff0c;它的作用是使每个slab对象在unused&#xff0c;但可能后面继续使用的时候&#xff0c;不需要free&#xff0c;可以先放在lru_list上。lru_list的结构为&#xff1a; struct list_lru {struct list_lru_node *n…

网工内推 | 上市公司中级网工,思科、华为认证优先,有带薪年假

01 新晨科技 招聘岗位&#xff1a;中级网络工程师 职责描述&#xff1a; 1. 负责公司网络系统的规划、设计、实施、维护和优化&#xff1b; 2. 负责网络设备的选型、采购、安装、配置和调试&#xff1b; 3. 负责网络安全策略的制定和实施&#xff0c;保障公司网络安全&#xf…

fastjson1.2.24 反序列化漏洞(CVE-2017-18349)分析

FastJson在< 1.2.24 版本中存在反序列化漏洞&#xff0c;主要原因FastJson支持的两个特性&#xff1a; fastjson反序列化时&#xff0c;JSON字符串中的type字段&#xff0c;用来表明指定反序列化的目标恶意对象类。fastjson反序列化时&#xff0c;字符串时会自动调用恶意对…

国标28181平台只能连接视频监控吗?

在一些视频监控项目中&#xff0c;国标28181平台成为了必不可少的工具。这个平台的主要作用在于将分布在不同区域的视频监控录像机、摄像头等设备进行联网管理&#xff0c;同时还能将视频监控连接到上一级的国标监控平台。 可以说&#xff0c;国标监控平台是一个非常重要的承上…

原子学习笔记3——使用tslib库

一、tslib介绍 tslib 是专门为触摸屏设备所开发的 Linux 应用层函数库&#xff0c;并且是开源。 tslib 为触摸屏驱动和应用层之间的适配层&#xff0c;它把应用程序中读取触摸屏 struct input_event 类型数据&#xff08;这是输入设备上报给应用层的原始数据&#xff09;并进行…

动力电池系统介绍(十四)——热管理系统

动力电池系统介绍&#xff08;十四&#xff09; 一、梗概二、座舱热管理&#xff08;汽车空调&#xff09;2.1 空调制冷2.2 空调制热2.2.1 传统燃油汽车空调制热2.2.2 新能源汽车空调制热 三、动力系统热管理3.1 燃油车发动机热管理3.1.1 冷却系统3.1.2 润滑系统3.1.3 进排气系…

网络编程day5

作业 1> 使用select完成TCP客户端程序 //client #include<myhead.h> #define CLINET_IP "192.168.125.79" #define CLINET_PORT 9999 #define SERVE_IP "192.168.125.79" #define SERVE_PORT 8888 int main(int argc, const char *argv[]) {/…

音视频直播核心技术介绍

直播流程 采集&#xff1a; 是视频直播开始的第一个环节&#xff0c;用户可以通过不同的终端采集视频&#xff0c;比如 iOS、Android、Mac、Windows 等。 前处理&#xff1a;主要就是美颜美型技术&#xff0c;以及还有加水印、模糊、去噪、滤镜等图像处理技术等等。 编码&#…

文件消失但是有占用内存的恢复方法

文件消失但占用内存是一个常见的问题&#xff0c;通常是由于文件系统错误或病毒攻击引起的。在这种情况下&#xff0c;文件虽然从目录结构中消失&#xff0c;但它们仍然占用存储空间。本文将分析这一问题的原因&#xff0c;并探讨解决该问题的几种方法。 文件消失但占用内存的原…

Text2SQL学习整理(四)将预训练语言模型引入WikiSQL任务

导语 上篇博客&#xff1a;Text2SQL学习整理&#xff08;三&#xff09;&#xff1a;SQLNet与TypeSQL模型简要介绍了WikiSQL数据集提出后两个早期的baseline&#xff0c;那时候像BERT之类的预训练语言模型还未在各种NLP任务中广泛应用&#xff0c;因而作者基本都是使用Bi-LSTM…

头部首发优志愿头部u_sign生成与TLS指纹处理! + 数据可视化技术讲解【Python爬虫】

目录 针对大学名称 大学排名, 综合指数,学校情况等数据进行爬取 找对应得数据包 请求发现数据有加密 发现加密参数 搜索加密参数&#xff0c;好进行分析 分析过程 数据可视化 针对大学名称 大学排名, 综合指数,学校情况等数据进行爬取 首先进行鼠标右键&#xff0c;进行…

制作PPT找了一个校徽是方形的,如何裁剪为圆形的。

问题描述&#xff1a;制作PPT找了一个校徽是方形的&#xff0c;如何裁剪为圆形的。 问题解决&#xff1a;使用一个在线圆形裁剪软件即可。 网址为&#xff1a; https://crop-circle.imageonline.co/cn/#google_vignette

计算机组成原理综合2

21、和外存储器相比&#xff0c;内存储器的特点是________。C A. 容量大、速度快、成本低 B. 容量大、速度慢、成本高 C. 容量小、速度快、成本高 D. 容量小、速度快、成本低 22、某计算机字长16位&#xff0c;存储器容量64KB&#xff0c;若按字编址&#xf…

网络基础(十二):ACL与NAT

目录 一、ACL 1、ACL的概述 2、ACL的分类 3、ACL的应用 4、ACL的组成和基本原理 ​编辑 5、ACL的配置 5.1配置基本ACL 5.2配置高级ACL 二、NAT 1、NAT的概述 2、NAT的分类 3、NAT的工作原理 4、静态NAT的配置 5、动态NAT的配置 6、NAPT&#xff08;端口映射&am…

01AVue入门(持续学习中)

1.使用AVue开发简单的前端页面直接简单到起飞,他是Element PlusVueVite开发的,不需要向元素的前端代码一样一个组件要传很多参数,他可以使用Json文本来控制我们要传入的数据结构来决定显示什么 //我使用的比较新,我们也可以使用cdn直接使用script标签直接引入 2.开发中遇到的坑…

期货平仓日历(期货平仓日期汇总)

什么是期货平仓日历&#xff1f; 期货是一种高风险高收益的投资品种。而期货交易不同于股票等其他投资品种的交易&#xff0c;期货交易需要在一定时间内才能买卖。而期货平仓日历就是指期货交易中规定的所有合约的平仓日期汇总。 常见期货平仓日期和时间&#xff1f; 不同的…