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

往期文章

跟着我学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 timepygame.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 = 1for _ in range(30):draw_dice(current_number)current_number = random.randint(1, 6)time.sleep(0.1)return current_numberdef 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 randompygame.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_RADIUSmin_distance = 0normalized_distance = max(0, min((max_distance - distance) / max_distance, 1))score = int(normalized_distance * 10)return scoredef 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.5if 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 stringdef generate_password(length=12):characters = string.ascii_letters + string.digits + string.punctuationpassword = ''.join(random.choice(characters) for _ in range(length))return password# 生成一个默认长度为12的密码
password = generate_password()
print("Generated Password:", password)

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【MyBatis学习笔记】MyBatis基础学习

MyBatis基础 MyBatis简介MyBatis特性MyBatis下载和其他持久化层技术对比 核心配置文件详解默认的类型别名 搭建MyBatis开发环境创建maven工程创建MyBatis的核心配置文件创建mapper接口创建MyBatis的映射文件通过junit测试功能加入log4j日志功能 MyBatis获取参数值的两种方式&am…

换热站数字孪生 | 图扑智慧供热 3D 可视化

换热站作为供热系统不可或缺的一部分&#xff0c;其能源消耗对城市环保至关重要。在双碳目标下&#xff0c;供热企业可通过搭建智慧供热系统&#xff0c;实现供热方式的低碳、高效、智能化&#xff0c;从而减少碳排放和能源浪费。通过应用物联网、大数据等高新技术&#xff0c;…

【Axure RP9】实现登入效验及实现左侧菜单栏跳转各页面

目录 一 效验简介 1.1 校验好处 1.2 应用场景 二 登入校验 2.1 效果 2.2 实现流程 三 左边菜单栏左侧菜单栏跳转各页面 3.1 效果 3.2 实现图 一 效验简介 1.1 校验好处 提高安全性&#xff1a; 在传统的用户名和密码登录的基础上&#xff0c;引入了另一种或多种验证…

docker 安装及配置 nginx + tomcat(四):高可用

文章目录 1. 引言2. 高可用架构3. 实际步骤3.1 虚拟机新建系统3.2 安装 keepalived3.3 配置 keepalived3.4 启动 keepalived3.5 验证高可用3.5.1 查看当前效果3.5.2 模拟灾难 4 参考 1. 引言 前情提要&#xff1a; 《docker 安装及配置 nginx tomcat&#xff08;一&#xff0…

nodejs连接mongodb报错SyntaxError: Unexpected token .

nodejs连接mongodb报错SyntaxError: Unexpected token 如下图 经过排查&#xff0c;原因是npm默认安装的mongodb插件是最新版6.3.0 &#xff0c;而mongodb数据库版本是4.0.0 &#xff0c;两者版本不同导致nodejs报错。 解决方法是npm卸载新版本的mongodb插件&#xff0c;再安…

建行驻江门市分行纪检组党支部开展“以廉养人,以案警人”清廉文化现场教学活动

近日&#xff0c;建行驻江门市分行纪检组党支部联合建设支行党支部到江门市党群服务中心开展“以廉养人&#xff0c;以案警人”清廉文化现场教学活动。 名言语句亮初心。一楼展馆入口处竖立着“拔烂树、治病树、正歪树”“以猛药去疴刮骨疗毒的勇气反腐”“理想信念是共产党人的…

【数据结构】并查集的简单实现,合并,查找(C++)

文章目录 前言举例&#xff1a; 一、1.构造函数2.查找元素属于哪个集合FindRoot3.将两个集合归并成一个集合Union4.查找集合数量SetCount 二、源码 前言 需要将n个不同的元素划分成一些不相交的集合。开始时&#xff0c;每个元素自成一个单元素集合&#xff0c;然后按一定的规…

「X」Embedding in NLP|神经网络和语言模型 Embedding 向量入门

在「X」Embedding in NLP 进阶系列中&#xff0c;我们介绍了自然语言处理的基础知识——自然语言中的 Token、N-gram 和词袋语言模型。今天&#xff0c;我们将继续和大家一起“修炼”&#xff0c;深入探讨神经网络语言模型&#xff0c;特别是循环神经网络&#xff0c;并简要了解…

车载蓝牙物联网解决方案

车载蓝牙物联网解决方案是一种基于蓝牙技术&#xff0c;结合物联网技术的智能车载系统。它利用蓝牙技术将智能手机、智能手表、智能车载设备等连接起来&#xff0c;实现设备之间的无缝通信和数据共享&#xff0c;为驾驶者提供更加便捷、安全和智能的驾驶体验。 车载蓝牙物联网解…

RocketMQ系统性学习-RocketMQ原理分析之Broker接收消息的处理流程

Broker接收消息的处理流程&#xff1f; 既然要分析 Broker 接收消息&#xff0c;那么如何找到 Broker 接收消息并进行处理的程序入口呢&#xff1f; 那么消息既然是从生产者开始发送&#xff0c;消息是有单条消息和批量消息之分的&#xff0c;那么消息肯定是有一个标识&#…

Codeforces Round 916 (Div. 3)(G未补)

目录 A. Problemsolving Log B. Preparing for the Contest C. Quests D. Three Activities E1.E2. Game with Marbles F. Programming Competition A. Problemsolving Log 题意&#xff1a;A任务需要一分钟完成&#xff0c;B任务需要两分钟完成&#xff0c;……以此类推…

ASP.NET MVC实战之权限拦截Authorize使用

1&#xff0c;具体的实现方法代码如下 public class CustomAuthorizeAttribute : FilterAttribute, IAuthorizationFilter{/// <summary>/// 如果需要验证权限的时候&#xff0c;就执行进来/// </summary>/// <param name"filterContext"></par…

代码随想录算法训练营第四十一天|198.打家劫舍 ,213.打家劫舍II ,337.打家劫舍III

198. 打家劫舍 - 力扣&#xff08;LeetCode&#xff09; 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统&#xff0c;如果两间相邻的房屋在同一晚上被小偷闯入&#…

设计模式(三)-结构型模式(5)-外观模式

一、为何需要外观模式&#xff08;Facade&#xff09;? 要实现一个大功能&#xff0c;我们需要将它拆分成多个子系统。然后每个子系统所实现的功能&#xff0c;就由一个称为外观的高层功能模块来调用。这种设计方式就称为外观模式。该模式在开发时常常被使用过&#xff0c;所…

HTML CSS 进度条

1 原生HTML标签 <meter>&#xff1a;显示已知范围的标量值或者分数值<progress>&#xff1a;显示一项任务的完成进度&#xff0c;通常情况下&#xff0c;该元素都显示为一个进度条 1.1 <meter> <html><head><style>meter{width:200px;}…

飞天使-k8s知识点1-kubernetes架构简述

文章目录 名词功能要点 k8s核心要素CNCF 云原生框架简介k8s组建介绍 名词 CI 持续集成, 自动化构建和测试&#xff1a;通过使用自动化构建工具和自动化测试套件&#xff0c;持续集成可以帮助开发人员自动构建和测试他们的代码。这样可以快速检测到潜在的问题&#xff0c;并及早…

解决 Hbuilder打包 Apk pad 无法横屏 以及 H5 直接打包 成Apk

解决 Hbuilder打包 Apk pad 无法横屏 前言云打包配置 前言 利用VUE 写了一套H5 想着 做一个APP壳 然后把 H5 直接嵌进去 客户要求 在pad 端 能够操作 然后页面风格 也需要pad 横屏展示 云打包 配置 下面是manifest.json 配置文件 {"platforms": ["iPad"…

Axure中如何使用交互样式交互事件交互动作情形

&#x1f3ac; 艳艳耶✌️&#xff1a;个人主页 &#x1f525; 个人专栏 &#xff1a;《产品经理如何画泳道图&流程图》 ⛺️ 越努力 &#xff0c;越幸运 目录 一、Axure中交互样式 1、什么是交互样式&#xff1f; 2、交互样式的作用&#xff1f; 3、Axure中如何…

Postman使用总结--生成测试报告

1.执行生成的命令格式 newman run 用例集文件 .json -e 环境文件 .json -d 数据文件 .json/.csv -r htmlextra --reporter- htmlextra-export 测试报告名 .html -e 和 -d 是 非必须的。 如果没有使用 环境&#xff0c;不需要指定 -e 如果没有使用 数据…

Educational Codeforces Round 160 (Div. 2) A~E

A.Rating Increase&#xff08;思维&#xff09; 题意&#xff1a; 给出一个仅包含数字的字符串 s s s&#xff0c;要求将该字符串按以下要求分成左右两部分 a , b a,b a,b&#xff1a; 两个数字均不包含前导 0 0 0 两个数字均大于 0 0 0 b > a b > a b>a 如果…