【Python】使用库 -- 详解
库就是别人已经写好了的代码,可以让我们直接拿来用。
一个编程语言能不能流行起来,一方面取决于语法是否简单方便容易学习,一方面取决于生态是否完备。所谓的 “生态” 指的就是语言是否有足够丰富的库,来应对各种各样的场景。在实际开发中,也并非所有的代码都自己手写,而是要充分利用现成的库,简化开发过程。
按照库的来源,可以大致分成两大类:
- 标准库:Python 自带的库。只要安装了 Python 就可以直接使用。
- 第三方库:其他人实现的库。要想使用,需要额外安装。
我们自己也可以实现 “第三方库” 发布出去,交给别人来使用。
一、标准库
1、认识标准库
Python 自身内置了非常丰富的库。
在 Python 官方文档上可以看到这些库的内容:
The Python Standard Library — Python 3.10.13 documentation
- 内置函数(如 print,input 等)
- 内置类型(针对 int,str,bool,list,dict 等类型内置的操作)
- 文本处理
- 时间日期
- 数学计算
- 文件目录
- 数据存储(操作数据库,数据序列化等)
- 加密解密
- 操作系统相关
- 并发编程相关(多进程,多线程,协程,异步等)
- 网络编程相关
- 多媒体相关(音频处理,视频处理等)
- 图形化界面相关
- .... ...
不需要把这些库的内容都背下来,只要大概知道里面有什么,需要用的时候能够找到即可。
2、使用 import 导入模块
使用 import 可以导入标准库的一个模块。
import [模块名]
所谓 “模块”,其实就是一个单独的 .py 文件。
使用 import 语句可以把这个外部的 .py 文件导入到当前 .py 文件中,并执行其中的代码。
3、日期计算(代码示例)
输入任意的两个日期,计算两个日期之间隔了多少天。
- 使用 import 语句导入标准库的 datetime 模块
- 使用 datetime.datetime 构造两个日期,参数使用 “年,月,日” 这样的格式。
- 两个日期对象相减,即可得到日期的差值。
关于 datetime 的更多操作,可以参考官方文档:
datetime — Basic date and time types — Python 3.12.4 documentation
4、字符串操作(代码示例)
字符串是 Python 的内置类型,字符串的很多方法不需要导入额外的模块,即可直接使用。
(1)剑指offer 58 —— 翻转单词顺序
对应题目链接:151. 反转字符串中的单词 - 力扣(LeetCode)
输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串 "I am a student. ",则输出 "student. a am I"。
- 使用 str 的 split 方法进行字符串切分,指定空格为分隔符,返回结果是一个列表。
- 使用列表的 reverse 方法进行逆序。
- 使用 str 的 join 方法进行字符串拼接,把列表中的内容进行合并。
def reverseWords(s):tokens = s.split()tokens.reverse()return ' '.join(tokens)print(reverseWords('I am a student.'))
(2)leetcode 796 —— 旋转字符串
对应题目链接:796. 旋转字符串 - 力扣(LeetCode)
给定两个字符串,s 和 goal。如果在若干次旋转操作之后,s 能变成 goal,那么返回 true。
s 的旋转操作就是将 s 最左边的字符移动到最右边。例如,若 s = 'abcde',再旋转一次之后结果就是 'bcdea' 。
- 使用 len 求字符串的长度。如果长度不相同,则一定不能旋转得到。
- 将 s 和自己进行拼接,然后直接使用 in 方法来判定 goal 是否是 s + s 的子串。
def rotateString(s, goal):return len(s) == len(goal) and goal in s + sprint(rotateString('abcde', 'cdeab'))
(3)leetcode 2255 —— 统计是给定字符串前缀的字符串数目
对应题目链接:2255. 统计是给定字符串前缀的字符串数目 - 力扣(LeetCode)
给你一个字符串数组 words 和一个字符串 s,其中 words[i] 和 s 只包含小写英文字母。请你返回 words 中是字符串 s 前缀 的 字符串数目 。
一个字符串的 前缀 是出现在字符串开头的子字符串。子字符串 是一个字符串中的连续一段字符序列。
- 依次遍历 words 中的字符串。
- 直接使用字符串的 startswith 方法即可判定当前字符串是否是 s 的前缀。
def countPrefixes(words, s):res = 0 # 符合要求字符串个数for word in words:if s.startswith(word):res += 1return resprint(countPrefixes(["a","b","c","ab","bc","abc"], "abc"))
关于字符串的更多操作,参考官方文档:
Built-in Types — Python 3.12.4 documentation
(4)文件查找工具(代码示例)
指定一个待搜索路径,同时指定一个待搜索的关键字。
在待搜索路径中查找是否文件名中包含这个关键字。
-
使用 os.walk 即可实现目录的递归遍历。
-
os.walk 返回一个三元组,分别是当前路径,当前路径下包含的目录名(多个),当前路径下包含的文件名(多个)。
os.walk 每次调用都能自动的去针对子目录进行递归的操作,只需要使用上述循环就可以把所有的路径都获取出来。
关于 os 模块的更多操作,参考官方文档:
os — Miscellaneous operating system interfaces — Python 3.12.4 documentation
二、第三方库
1、认识第三方库
第三方库就是别人已经实现好了的库,我们可以拿过来直接使用。
虽然标准库已经很强大了,但是终究是有限的。而第三方库可以视为是集合了全世界 Python 程序员的智慧,可以说是几乎无穷无尽。
当我们遇到一个需求场景的时候,如何知道、该使用哪个第三方库呢?
就需要用到下面几个网站了:
当我们确定了该使用哪个第三方库之后,就可以使用 pip 来安装第三方库了。
2、使用 pip
pip 是 Python 内置的包管理器,所谓包管理器就类似于我们平时使用的手机 app 应用商店一样。
第三方库有很多,是不同的人、不同的组织实现的。为了方便大家整理,Python 官方提供了一个网站 PyPI https://pypi.org/ 来收集第三方库。其他大佬写好的第三方库也会申请上传到 PyPI 上,这个时候就可以方便的使用 pip 工具来下载 PyPI 上的库了。
pip 在我们安装 Python 的时候就已经内置了,无需额外安装。
pip 是一个可执行程序,就在 Python 的安装目录中。打开 cmd,直接输入:pip。如果显示以下帮助信息,说明 pip 已经准备就绪。
如果最开始按照要求在安装 Python 的时候勾选了:
那么 pip 就是默认可用的。
如果提示:
'pip' 不是内部或外部命令,也不是可运行的程序或批处理文件。
则说明没有正确的把 pip 加入到 PATH 中,可以手动把 pip 所在的路径加入到 PATH 环境变量中。可参考:windows环境下面配置pip环境变量 - 简书 (jianshu.com)
或者卸载重装 Python,记得勾上上述选项,也许是更简单的办法。
使用命令:pip install [库名] 即可安装第三方库。
注意:这个命令需要从网络上下载,使用时要保证网络畅通。安装成功后,即可使用 import 导入相关模块,即可进行使用。
如果使用 pip 安装完第三方库之后,在 PyCharm 中仍然提示找不到对应的模块,则检查 Settings -> Project -> Python Interpreter,看当前 Python 解释器设置的是否正确。(如果一个机器上安装了多个版本的 Python,容易出现这种情况)
3、生成二维码(代码示例)
所谓二维码本质上就是使用黑白点阵表示一个字符串。我们日常使用的二维码内部一般是一个 URL,扫码后会自动跳转到对应的地址,从而打开一个网页。可以把任意的字符串制作成一个二维码图片。
(1)通过搜索引擎,确定使用哪个库
得到情报,qrcode 这个库可以用来生成二维码。
(2)查看 qrcode 文档
在 PyPI 上搜索 qrcode:
点击则进入 qrcode 的详情页。
文档开头描述了如何安装 qrcode:
页面中央位置描述了 qrcode 库的使用方法:
(3)使用 pip 安装
在终端输入命令:pip install qrcode[pil]
注意 :pip 安装的时候可能会有警告,提示使用的 pip 版本太低。这个警告可以不用处理,不影响正常使用。
(4)编写代码
按照文档给出的示例,模仿一段代码:
运行完毕后得到结果如下:
使用微信或者其他工具扫码,即可看到二维码内容。
4、操作 Excel(代码示例)
读取 excel 可以使用 xlrd 模块,文档地址:xlrd — xlrd 2.0.1 documentation
修改 excel 可以使用 xlwt 模块,文档地址:xlwt documentation — xlwt 1.3.0 documentation
此处以 xlrd 为例,演示 Excel 的基本操作。
需求有如下 Excel 表格 d:/test.xlsx
求 100 班的同学的平均分。
虽然 Excel 自身支持很强大的功能,也可以求和、求平均值。但是如果是稍微复杂的需求,操作起来可能就没那么方便了。
(1)安装 xlrd
pip install xlrd==1.2.0
注意 :此处要指定版本号安装. 如果不指定版本号, 则安装最新版. 最新版里删除了对 xlsx 格式文件的支持。
(2)编写代码
- 使用 open_workbook 方法打开一个 Excel 文件。
- 使用 xlsx.sheet_by_index(0) 获取到 0 号标签页。
- 使用 table.nrows 获取到表格的行数。
- 使用 table.cell_value(row, col) 获取到表格中 row,col 位置的元素值。
5、“程序员鼓励师”(代码示例)
监听键盘按键,每按键 20 下就自动播放一个音频,鼓励一下辛苦搬砖的每一个程序员。
(1)安装第三方依赖
pynput 用于监听键盘按键。(注意版本不要用最新)
playsound 用于播放音频。
pip install pynput==1.6.8
pip install playsound==1.2.2
(2)准备音频文件
此处准备了一个 ding.mp3 放到和 py 代码同级目录中:
(3)编写代码
使用 from import 的格式直接导入模块中的指定对象 / 函数。
使用 keyboard.Listener 监听键盘按键,其中 on_release 会在释放按键时被调用。
使用 listener.start 启动监听器. 为了防止程序直接退出, 使用 listener.join 让程序等待用户按键。
使用 count 计数,每隔 10 次,调用 playsound 播放音频文件。
(4)改进代码
上述代码在执行过程中,会感觉到播放音频会导致按键卡顿,可以使用多线程解决这个问题。
- 使用 threading.Thread 引入多线程类。
- 使用 Thread 的构造函数来构造一个线程。target 表示线程要执行的任务,args 表示 target 中要调用函数的参数。
- 使用 Thread.start() 启动线程。
6、学生管理系统(综合案例)
(1)需求说明
实现一个命令行版本的学生管理系统。
- 新增学生
- 显示学生
- 查找学生
- 删除学生
- 存档到文件
(2)创建入口函数
- 使用一个全局列表 students 表示所有学生信息。
- 使用 menu 函数和用户交互,这是一个自定义函数。
- 使用 insert,show,find,delete 这几个自定义函数完成增删查操作。
- 使用 sys.exit 实现程序退出。
(3)实现菜单函数
(4)实现增删查操作
A. 新增学生
B. 显示学生
C. 查找学生
D. 删除学生
(5)加入存档读档
A. 约定存档格式
将存档文件放到 d:/record.txt 文件中,并且以行文本的方式来保存学生信息,格式如下:
学号\t名字\t性别\t班级
学号\t名字\t性别\t班级
学号\t名字\t性别\t班级
- 每个同学占一行。
- 每个同学的信息之间使用 \t 制表符进行分隔。
B. 实现存档函数
在 insert 和 delete 末尾,调用 save 函数进行存档。
C. 实现读档函数
在 main 函数开头的地方,调用 load 加载存档:
(6)演示测试过程
(7)打包成 exe 程序发布
当前虽然已经实现了一个管理系统,但是 .py 的文件只能在安装了 Python 环境的机器上运行。为了能够更好的部署到其他主机上,可以借助 pyinstaller 来把 Python 程序打包成 exe 程序。
A. 安装 pyinstaller
pip install pyinstaller
B. 打包程序
- -F 表示打包成单个 exe(不带动态库)
pyinstaller -F 学生管理系统.py
打包完成之后:
此时就可以把这个程序拷贝给其他机器使用了,无需 Python 环境也可运行。
三、扩展
1、python cookbook
python 经典进阶书籍, 针对各种典型场景提供了一些解决方案。
2、awesome-python
Python 的一些非常实用的程序库:awesome-python: awesome-python 的中文版 (gitee.com)
3、500 Lines or Less
使用简短的 Python 代码来实现一些有意思的程序:
aosabook/500lines: 500 Lines or Less (github.com)
相关文章:
【Python】使用库 -- 详解
库就是别人已经写好了的代码,可以让我们直接拿来用。 一个编程语言能不能流行起来,一方面取决于语法是否简单方便容易学习,一方面取决于生态是否完备。所谓的 “生态” 指的就是语言是否有足够丰富的库,来应对各种各样的场景。在…...
Web3D:WebGL为什么在渲染性能上输给了WebGPU。
WebGL已经成为了web3D的标配,市面上有N多基于webGL的3D引擎,WebGPU作为挑战者,在渲染性能上确实改过webGL一头,由于起步较晚,想通过这个优势加持,赶上并超越webGL仍需时日。 贝格前端工场为大家分享一下这…...
SpringBoot面试高频总结01
1. 什么是SpringBoot? SpringBoot是一个基于Spring框架的快速开发框架,它采用约定大于配置,自动装配的方式,可以快速地创建独立的,生产级别的,基于Spring的应用程序。 相比于传统的Spring框架,S…...
Linux 工作队列(Workqueue):概念与实现
目录 一、工作队列的概念1.1 什么是工作队列1.2 为什么使用工作队列 二、工作队列的实现2.1 定义和初始化工作队列2.2 工作队列API 三、工作队列的应用3.1 延迟执行任务3.2 处理复杂的中断任务 四、工作队列的类型4.1 普通工作队列4.2 高优先级工作队列 五、总结 在Linux内核中…...
前端页面是如何禁止被查看源码、被下载,被爬取,以及破解方法
文章目录 1.了解禁止查看,爬取原理1.1.JS代码,屏蔽屏蔽键盘和鼠标右键1.2.查看源码时,通过JS控制浏览器窗口变化2.百度文库是如何防止抓包2.1.HTPPS2.2. 动态加载为什么看不到?如何查看动态加载的内容?3.禁止复制,如果解决3.1.禁止复制原理3.2.如何破解1.了解禁止查看,爬…...
51单片机嵌入式开发:14、STC89C52RC 之HX1838红外解码NEC+数码管+串口打印+LED显示
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 STC89C52RC 之HX1838红外解码NEC数码管串口打印LED显示 STC89C52RC 之HX1838红外解码NEC数码管串口打印LED显示1 概述2 硬件电路2.1 遥控器2.2 红外接收器电路2.3 STC89C52单…...
在不同环境中,Java应用程序和MySQL等是如何与Docker进行交互和操作的?
1. 本地开发环境 在本地开发环境中,可以使用Docker Compose来管理和运行Java应用程序容器和MySQL容器。通常,会创建一个docker-compose.yml文件,定义需要的服务及其配置。 以下是一个示例docker-compose.yml文件: version: 3 services:app…...
《DRL》P10-P15-损失函数-优化(梯度下降和误差的反向传播)
文章目录 损失函数交叉熵损失多类别分类任务概述真实标签的独热编码交叉熵损失函数 L p 范式 \mathcal{L}_{p}\text{ 范式} Lp 范式均方误差平均绝对误差 优化梯度下降和误差的反向传播 简介 本文介绍了神经网络中的损失函数及其优化方法。损失函数用于衡量模型预测值与真实值…...
Spring Boot项目的404是如何发生的
问题 在日常开发中,假如我们访问一个Sping容器中并不存在的路径,通常会返回404的报错,具体原因是什么呢? 结论 错误的访问会调用两次DispatcherServlet:第一次调用无法找到对应路径时,会给Response设置一个…...
<数据集>手势识别数据集<目标检测>
数据集格式:VOCYOLO格式 图片数量:2400张 标注数量(xml文件个数):2400 标注数量(txt文件个数):2400 标注类别数:5 标注类别名称:[fist, no_gesture, like, ok, palm] 序号类别名称图片数框数1fist597…...
【Vue3】选项式 API
【Vue3】选项式 API 背景简介开发环境开发步骤及源码总结 背景 随着年龄的增长,很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来,技术出身的人总是很难放下一些执念,遂将这些知识整理成文,以纪念曾经努力学习奋斗的日子。…...
2、如何发行自己的数字代币(truffle智能合约项目实战)
2、如何发行自己的数字代币(truffle智能合约项目实战) 1-Atom IDE插件安装2-truffle tutorialtoken3-tutorialtoken源码框架分析4-安装openzeppelin代币框架(代币发布成功) 1-Atom IDE插件安装 正式介绍基于web的智能合约开发 推…...
百日筑基第二十三天-23种设计模式-创建型总汇
百日筑基第二十三天-23种设计模式-创建型总汇 前言 设计模式可以说是对于七大设计原则的实现。 总体来说设计模式分为三大类: 创建型模式,共五种:单例模式、简单工厂模式、抽象工厂模式、建造者模式、原型模式。结构型模式,共…...
张量的基本使用
目录 1.张量的定义 2.张量的分类 3.张量的创建 3.1 根据已有数据创建张量 3.2 根据形状创建张量 3.3 创建指定类型的张量 1.张量的定义 张量(Tensor)是机器学习的基本构建模块,是以数字方式表示数据的形式。PyTorch就是将数据封装成张量…...
Oracle(14)什么是唯一键(Unique Key)?
唯一键(Unique Key)是数据库表中的一个或多个列,它们的值必须在整个表中唯一,但允许包含NULL值。唯一键的主要目的是确保表中每一行的数据在指定的列(或列组合)中是唯一的,以防止重复数据的出现…...
PostgreSQL的引号、数据类型转换和数据类型
一、单引号和双引号(重要): 1、在mysql没啥区别 2、在pgsql中,实际字符串用单引号,双引号相当于mysql的,用来包含关键字; -- 单引号,表示user_name的字符串实际值 insert into t_user(user_nam…...
Mad MAD Sum-Codeforces Round 960 (Div. 2)
题目在这里 大意: MAD函数返回出现次数 ≥ 2 \geq2 ≥2的最大整数 b i b_i bi M A D ( a [ 1 , 2 , . . . i ] ) MAD(a[1,2,...i]) MAD(a[1,2,...i]) 每次操作把 a i a_i ai进行上述操作,直到全变为0为止,对每次操作的数组进行求和,记…...
Flutter 插件之 package_info_plus
当使用Flutter开发应用时,通常需要获取应用程序的基本信息,例如包名、版本号和构建号。Flutter提供了一个名为 package_info_plus 的插件,它能方便地帮助我们获取这些信息。 1. 添加依赖 首先,需要在项目的 pubspec.yaml 文件中添加 package_info_plus 的依赖。打开 pubs…...
如何实现布隆过滤器?
1.布隆过滤器的场景 在Redis 缓存击穿(失效)、缓存穿透、缓存雪崩怎么解决?中我们说到可以使用布隆过滤器避免「缓存穿透」。 你会说我们只要记录了每个用户看过的历史记录,每次推荐的时候去查询数据库过滤存在的数据实现去重。 …...
运维团队如何高效监控容器化环境中的PID及其他关键指标
随着云计算和容器化技术的快速发展,越来越多的企业开始采用容器化技术来部署和管理应用程序。然而,容器化环境的复杂性和动态性给运维团队带来了前所未有的挑战。本文将从PID(进程标识符)监控入手,探讨运维团队如何高效…...
通过vue3 + TypeScript + uniapp + uni-ui 实现下拉刷新和加载更多的功能
效果图: 核心代码: <script lang="ts" setup>import { ref, reactive } from vue;import api from @/request/api.jsimport empty from @/component/empty.vueimport { onLoad,onShow, onPullDownRefresh, onReachBottom } from @dcloudio/uni-applet form …...
Pointnet++改进即插即用系列:全网首发WTConv2d大接受域的小波卷积|即插即用,提升特征提取模块性能
简介:1.该教程提供大量的首发改进的方式,降低上手难度,多种结构改进,助力寻找创新点!2.本篇文章对Pointnet++特征提取模块进行改进,加入WTConv2d,提升性能。3.专栏持续更新,紧随最新的研究内容。 目录 1.理论介绍 2.修改步骤 2.1 步骤一 2.2 步骤二 2.3 步骤三 1.理…...
4核16G服务器支持多少人?4C16G服务器性能测评
租赁4核16G服务器费用,目前4核16G服务器10M带宽配置70元1个月、210元3个月,那么能如何呢?配置为ECS经济型e实例4核16G、按固定带宽10Mbs、100GB ESSD Entry系统盘。 那么问题来了,4C16G10M带宽的云服务器可以支持多少人同时在线&…...
塔子哥的平均数-美团2023笔试(codefun2000)
题目链接 塔子哥的平均数-美团2023笔试(codefun2000) 题目内容 给定一个正整数数组a1 ,a2 ,…,an,求平均数正好等于k的最长连续子数组的长度 输入描述 输出描述 输出一个整数,表示最长满足题目条件的长度。 样例1 输入 5 2 1 3 2 4 1 输出 3 样例1解释…...
故障诊断 | 基于小波包能量谱对滚动轴承的故障诊断Matlab代码
故障诊断 | 基于小波包能量谱对滚动轴承的故障诊断Matlab代码 目录 故障诊断 | 基于小波包能量谱对滚动轴承的故障诊断Matlab代码效果一览基本介绍程序设计参考资料 效果一览 基本介绍 基于小波包能量谱对滚动轴承的故障诊断 matlab代码 数据采用的是凯斯西储大学数据 首先利用…...
E14.【C语言】练习:有关短路运算
#include <stdio.h> int main() {int i 0,a0,b2,c 3,d4;i a && b && d;printf("a %d\nb %d\nc %d\nd %d\n", a, b, c, d);return 0; } 求输出结果 分析: a:先使用后 ,a(见第15篇http://…...
python BeautifulSoup库安装与使用(anaconda、pip)
BeautifulSoup 是一个可以从HTML或XML文件中提取数据的Python库。Beautiful Soup 已成为和 lxml、html5lib 一样出色的Python解释器,为用户灵活地提供不同的解析策略或强劲的速度。 Requests 获取html BeautifulSoup 解析html、xml,BeautifulSoup4库也称bs4库 安装B…...
基于Matlab的数据可视化
基于Matlab的数据可视化 一、二维图形的绘制(一)基本图形函数(1)plot函数(2)fplot函数(3)其他坐标系的二维曲线 (二)图形属性设置(1)线…...
深入理解Linux网络(二):UDP接收内核探究
深入理解Linux网络(二):UDP接收内核探究 一、UDP 协议处理二、recvfrom 系统调⽤实现 一、UDP 协议处理 udp 协议的处理函数是 udp_rcv。 //file: net/ipv4/udp.c int udp_rcv(struct sk_buff *skb) {return __udp4_lib_rcv(skb, &udp_…...
linux内核中list的基本用法
内核链表 1 list_head 结构 为了使用链表机制,驱动程序需要包含<linux/types.h>头文件,该文件定义了如下结构体实现双向链: struct list_head {struct list_head *next, *prev; };2 链表的初始化 2.1 链表宏定义和初始化 可使用以…...
知名网络公司有哪些/济宁seo推广
先打出nand表0 nand 011 nand 100 nand 111 nand 01容易发现(!a)a nand a然后(a&b)!(a nand b)然后(a|b)!((!a)&(!b))然后(a^b)(a|b)&(a nand b)所以通过nand我们可以实现任意一种位运算所以每一位我们想得到0/1都是可以的按道理[L,R]中符合位数要求的数都能得到然…...
广州网站建设费/郑州seo排名优化
为什么80%的码农都做不了架构师?>>> 在上一篇文章《》中,我们详细说明了一下如何创建一个可以使用增删改操作的jqGrid。 但是在实际的修改、新增保存中,会看到如下的错误提示:error Status:"OK".Error code…...
专业网站建设市场/友链
本题就是求半交平面的交包含哪些直线,而且有点特殊(一般的半交平面用双端队列,因为可能转到最开始的直线,但本题不会,所以只需要一端操作就行了)。 1 /**************************************************…...
wordpress防黑客/网络营销推广方式
Linux下的常用查找命令 locatewhereiswhichfindlocate -i, 忽略大小写 find 根据文件名或正则表达式搜索 -name 条件限制 -a 与条件 -o 或条件 -not 非条件(此参数的功能类似于否定参数‘!’) <code class"hljs lasso has-numbering"…...
公司的网站如何进行修改布局/南宁seo费用服务
AngularJS的四大特性的思维导图如下: 将AngularJS应用于工作:其思维导图如下: AngularJS服务思维导图: 转载于:https://www.cnblogs.com/PHM64123/p/7660985.html...
网站开发专业培训/百度推广怎么联系
发布时间:2016-06-28注意:乐谱触发有先后顺序,两个乐谱事件不能同时触发.满足触发条件后,在出自家门时会发生寻找乐谱事件. 1 音階の基礎条件:一年春17日 位置:ダンヒル家床边. 效果:树林区域跳跃蘑菇使用可能.(从小镇北部进入 ...标签:牧场物语攻…...