了解一下带有示例的python的简单介绍

本文目录一览:

python中的类型转换都有什么,用在什么场景下?

1.字符串(string)

示例: ‘余庆’,’yuqing’,’123’,’Hello!’

特点: 用引号括起来的文本。

转换方式: 使用str()函数转换,str()函数能将数据转换成其字符串类型,不管这个数据是int类型还是float类型,只要放到括号里。就能成为字符串类型。

2.整数(int)

示例:-1,0,1,2,123

特点:不带小数点和引号的普通数字。

转换方式:使用int()函数转换, 只有符合整数规范的字符串类数据,才能被int()函数强制转换。

(注:整数形式的字符串比如’6’和’1’,可以被int()函数强制转换。其次,文字形式,比如中文、火星文或者标点符号,不可以被int()函数强制转换。

最后,小数形式的字符串,由于Python的语法规则,也不能使用int()函数强制转换。)

(注:int()函数的本质是将数据转换为整数。对于浮点数,int()函数会做取整处理。int()函数会直接抹零,直接输出整数部分。)

3.浮点数(float)

示例:-0.33,3.1415926,1.0

特点:带小数点的数字,运算结果会存在误差。

转换方式:使用float()函数转换,float()函数也可以将整数和字符串转换为浮点类型。但同时,如果括号里面的数据是字符串类型,那这个数据一定得是数字形式。

【Python基础】python基本语法规则有哪些?

Python基本语法

Python的语法相对比C,C++,Java更加简洁,比较符合人的正常思维。本篇介绍Python的基本语法,通过本篇文章你可以学到以下内容。

掌握Python的基本语法

识别Python中的关键字

Python是一门脚本语言,有以下特点:

面向对象:类

语法块:使用缩进进行标记

注释: #单行注释,”””多行注释”””,”’我也是多行注释”

打印与输出:print(), input()

变量: 变量在赋值的时候确定变量的类型

模块:通过import 模块名进行加载模块

Python的标识符

标识符是用户编程时使用的名字,用于给变量、常量、函数、语句块等命名,以建立起名称与使用之间的关系。标识符通常由字母和数字以及其它字符构成。

标识符的命名遵循以下规定:

开头以字母或者下划线_,剩下的字符数字字母或者下划线

Python遵循小驼峰命名法

不是使用Python中的关键字进行命名

代码示例:

num = 10 # 这是一个int类型变量

错误命名示例:

123rate(数字开头)、 mac book pro(含有空格),class(关键字)

Python关键字

以下列表中的关键字不可以当作标识符进行使用。Python语言的关键字只包含小写字母。

进来吧,给自己10分钟,这篇文章带你直接学会python

Python的语言特性

Python是一门具有强类型(即变量类型是强制要求的)、动态性、隐式类型(不需要做变量声明)、大小写敏感(var和VAR代表了不同的变量)以及面向对象(一切皆为对象)等特点的编程语言。

获取帮助

你可以很容易的通过Python解释器获取帮助。如果你想知道一个对象(object)是如何工作的,那么你所需要做的就是调用help(object)!另外还有一些有用的方法,dir()会显示该对象的所有方法,还有object.__doc__会显示其文档:

语法

Python中没有强制的语句终止字符,且代码块是通过缩进来指示的。缩进表示一个代码块的开始,逆缩进则表示一个代码块的结束。声明以冒号(:)字符结束,并且开启一个缩进级别。单行注释以井号字符(#)开头,多行注释则以多行字符串的形式出现。赋值(事实上是将对象绑定到名字)通过等号(“=”)实现,双等号(“==”)用于相等判断,”+=”和”-=”用于增加/减少运算(由符号右边的值确定增加/减少的值)。这适用于许多数据类型,包括字符串。你也可以在一行上使用多个变量。例如:

数据类型

Python具有列表(list)、元组(tuple)和字典(dictionaries)三种基本的数据结构,而集合(sets)则包含在集合库中(但从Python2.5版本开始正式成为Python内建类型)。列表的特点跟一维数组类似(当然你也可以创建类似多维数组的“列表的列表”),字典则是具有关联关系的数组(通常也叫做哈希表),而元组则是不可变的一维数组(Python中“数组”可以包含任何类型的元素,这样你就可以使用混合元素,例如整数、字符串或是嵌套包含列表、字典或元组)。数组中第一个元素索引值(下标)为0,使用负数索引值能够从后向前访问数组元素,-1表示最后一个元素。数组元素还能指向函数。来看下面的用法:

字符串

Python中的字符串使用单引号(‘)或是双引号(“)来进行标示,并且你还能够在通过某一种标示的字符串中使用另外一种标示符(例如 “He said ‘hello’.”)。而多行字符串可以通过三个连续的单引号(”’)或是双引号(“””)来进行标示。Python可以通过u”This is a unicode string”这样的语法使用Unicode字符串。如果想通过变量来填充字符串,那么可以使用取模运算符(%)和一个元组。使用方式是在目标字符串中从左至右使用%s来指代变量的位置,或者使用字典来代替,示例如下:

流程控制

Python中可以使用if、for和while来实现流程控制。Python中并没有select,取而代之使用if来实现。使用for来枚举列表中的元素。如果希望生成一个由数字组成的列表,则可以使用range(number)函数。

函数

函数通过“def”关键字进行声明。可选参数以集合的方式出现在函数声明中并紧跟着必选参数,可选参数可以在函数声明中被赋予一个默认值。已命名的参数需要赋值。函数可以返回一个元组(使用元组拆包可以有效返回多个值)。Lambda函数是由一个单独的语句组成的特殊函数,参数通过引用进行传递,但对于不可变类型(例如元组,整数,字符串等)则不能够被改变。这是因为只传递了该变量的内存地址,并且只有丢弃了旧的对象后,变量才能绑定一个对象,所以不可变类型是被替换而不是改变(译者注:虽然Python传递的参数形式本质上是引用传递,但是会产生值传递的效果)。

Python支持有限的多继承形式。私有变量和方法可以通过添加至少两个前导下划线和最多尾随一个下划线的形式进行声明(如“__spam”,这只是惯例,而不是Python的强制要求)。当然,我们也可以给类的实例取任意名称。

导入

外部库可以使用 import [libname] 关键字来导入。同时,你还可以用 from [libname] import [funcname] 来导入所需要的函数。例如:

Python基本语法都有哪些?

1.关于编码:

默认情况下,Python 3 源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串。 当然你也可以为源码文件指定不同的编码:

# -*- coding: cp-1252 -*-

2.标识符:

第一个字符必须是字母表中字母或下划线,其他的部分由字母、数字和下划线组成。

标识符对大小写敏感。

在 Python 3 中,可以用中文作为变量名,非 ASCII 标识符也是允许的了。

3.保留字:

保留字即关键字,我们不能把它们用作任何标识符名称。

Python 的标准库提供了一个 keyword 模块,可以输出当前版本的所有关键字:

代码:

import keyword

keyword.kwlist

结果:

[‘False’, ‘None’, ‘True’, ‘and’, ‘as’, ‘assert’, ‘break’, ‘class’, ‘continue’, ‘def’, ‘del’, ‘elif’, ‘else’, ‘except’, ‘finally’, ‘for’, ‘from’, ‘global’, ‘if’, ‘import’, ‘in’, ‘is’, ‘lambda’, ‘nonlocal’, ‘not’, ‘or’, ‘pass’, ‘raise’, ‘return’, ‘try’, ‘while’, ‘with’, ‘yield’]

4.关于注释:

单行注释以 # 开头

多行注释可以用多个 # 号,还有 ”’ 和 “””

5.缩进与多行语句:

Python最具特色的就是使用缩进来表示代码块,不需要使用大括号 {} 。

缩进的空格数是可变的,但是同一个代码块的语句必须包含相同的缩进空格数

Python 通常是一行写完一条语句,但如果语句很长,我们可以使用反斜杠(\)来实现多行语句,例如:

代码:total = item_one + \

item_two + \

item_three

在 [], {}, 或 () 中的多行语句,不需要使用反斜杠(\),例如:

代码:total = [‘item_one’, ‘item_two’, ‘item_three’,

‘item_four’, ‘item_five’]

6.数字(Number)类型:

Python中数字有四种类型:整数、布尔型、浮点数和复数。

int (整数), 如 1, 只有一种整数类型 int,表示为长整型,没有 python2 中的 Long。

bool (布尔), 如 True。

float (浮点数), 如 1.23、3E-2

complex (复数), 如 1 + 2j、 1.1 + 2.2j

7.字符串:

python中单引号和双引号使用完全相同。

使用三引号(”’或”””)可以指定一个多行字符串。

转义符 ‘\’

反斜杠可以用来转义,使用r可以让反斜杠不发生转义。。 如 r”this is a line with \n” 则\n会显示,并不是换行。

按字面意义级联字符串,如”this ” “is ” “string”会被自动转换为this is string。

字符串可以用 + 运算符连接在一起,用 * 运算符重复。

Python 中的字符串有两种索引方式,从左往右以 0 开始,从右往左以 -1 开始。

Python中的字符串不能改变。

Python 没有单独的字符类型,一个字符就是长度为 1 的字符串。

字符串的截取的语法格式如下:变量[头下标:尾下标:步长]

代码示例:

#!/usr/bin/python3

str=’Runoob’

print(str) # 输出字符串

print(str[0:-1]) # 输出第一个到倒数第二个的所有字符

print(str[0]) # 输出字符串第一个字符

print(str[2:5]) # 输出从第三个开始到第五个的字符

print(str[2:]) # 输出从第三个开始后的所有字符

print(str * 2) # 输出字符串两次

print(str + ‘你好’) # 连接字符串

print(‘hello\nrunoob’) # 使用反斜杠(\)+n转义特殊字符

print(r’hello\nrunoob’) # 在字符串前面添加一个 r,表示原始字符串,不会发生转义

8.空行:

函数之间或类的方法之间用空行分隔,表示一段新的代码的开始。类和函数入口之间也用一行空行分隔,以突出函数入口的开始。

空行与代码缩进不同,空行并不是Python语法的一部分。书写时不插入空行,Python解释器运行也不会出错。但是空行的作用在于分隔两段不同功能或含义的代码,便于日后代码的维护或重构。

记住:空行也是程序代码的一部分。

9.等待用户输入input:

执行下面的程序在按回车键后就会等待用户输入:

input(“\n\n按下 enter 键后退出。”)

以上代码中 ,”\n\n”在结果输出前会输出两个新的空行。一旦用户按下 enter 键时,程序将退出。

10.同一行显示多条语句:

Python可以在同一行中使用多条语句,语句之间使用分号(;)分割,以下是一个简单的实例:

import sys; x = ‘runoob’; sys.stdout.write(x + ‘\n’)

11.代码组:

缩进相同的一组语句构成一个代码块,我们称之代码组。

像if、while、def和class这样的复合语句,首行以关键字开始,以冒号( : )结束,该行之后的一行或多行代码构成代码组。

我们将首行及后面的代码组称为一个子句(clause)。

12.Print输出:

Print 输出

print 默认输出是换行的,如果要实现不换行需要在变量末尾加上 end=””:

代码:

x=”a”

y=”b”

# 换行输出

print( x )

print( y )

# 不换行输出

print( x, end=” ” )

print( y, end=” ” )

13.import 与 from…import

在 python 用 import 或者 from…import 来导入相应的模块。

将整个模块(somemodule)导入,格式为: import somemodule

从某个模块中导入某个函数,格式为: from somemodule import somefunction

从某个模块中导入多个函数,格式为: from somemodule import firstfunc, secondfunc, thirdfunc

将某个模块中的全部函数导入,格式为: from somemodule import *

代码:

导入 sys 模块

import sys

print (‘命令行参数为:’)

for i in sys.argv:

print (i)

print (‘\n python 路径为’,sys.path)

导入 sys 模块的 argv,path 成员

from sys import argv,path # 导入特定的成员

print(‘path:’,path) # 因为已经导入path成员,所以此处引用时不需要加sys.path

14.命令行参数:

很多程序可以执行一些操作来查看一些基本信息,Python可以使用-h参数查看各参数帮助信息:

代码:

$ python -h

usage: python [option] … [-c cmd | -m mod | file | -] [arg] …

Options and arguments (and corresponding environment variables):

-c cmd : program passed in as string (terminates option list)

-d : debug output from parser (also PYTHONDEBUG=x)

-E : ignore environment variables (such as PYTHONPATH)

-h : print this help message and exit

[ etc. ]

15.一个有用的函数:help( )

调用 python 的 help() 函数可以打印输出一个函数的文档字符串:

# 如下实例,查看 max 内置函数的参数列表和规范的文档

help(max)

……显示帮助信息…… 按下 : q 两个按键即退出说明文档

如果仅仅想得到文档字符串:

print(max.__doc__) # 注意,doc的前后分别是两个下划线

max(iterable, *[, default=obj, key=func]) – value

max(arg1, arg2, *args, *[, key=func]) – value

With a single iterable argument, return its biggest item. The

default keyword-only argument specifies an object to return if

the provided iterable is empty.

With two or more arguments, return the largest argument.

Python模拟随机游走图形效果示例

Python模拟随机游走图形效果示例

本文实例讲述了Python模拟随机游走图形效果。分享给大家供大家参考,具体如下:

在python中,可以利用数组操作来模拟随机游走。

下面是一个单一的200步随机游走的例子,从0开始,步长为1和-1,且以相等的概率出现。纯Python方式实现,使用了内建的 random 模块:

# 随机游走importmatplotlib.pyplot as pltimportrandomposition=0walk=[position]steps=200foriinrange(steps): step=1ifrandom.randint(0,1)else-1 position+=step walk.append(position)fig=plt.figure()plt.title(“”)ax=fig.add_subplot(111)ax.plot(walk)plt.show()

第二种方式:简单的把随机步长累积起来并且可以可以使用一个数组表达式来计算。因此,我用 np.random 模块去200次硬币翻转,设置它们为1和-1,并计算累计和:

# 随机游走importmatplotlib.pyplot as pltimportnumpy as npnsteps=200draws=np.random.randint(0,2, size=nsteps)steps=np.where(draws 0,1,-1)walk=steps.cumsum()fig=plt.figure()plt.title(“”)ax=fig.add_subplot(111)ax.plot(walk)plt.show()

一次模拟多个随机游走

# 随机游走importmatplotlib.pyplot as pltimportnumpy as npnwalks=5nsteps=200draws=np.random.randint(0,2, size=(nwalks, nsteps))# 0 or 1steps=np.where(draws 0,1,-1)walks=steps.cumsum(1)fig=plt.figure()plt.title(“”)ax=fig.add_subplot(111)foriinrange(nwalks): ax.plot(walks[i])plt.show()

当然,还可以大胆的试验其它的分布的步长,而不是相等大小的硬币翻转。你只需要使用一个不同的随机数生成函数,如 normal 来产生相同均值和标准偏差的正态分布:steps=np.random.normal(loc=0, scale=0.25, size=(nwalks, nsteps))

建议收藏!10 种 Python 聚类算法完整操作示例

聚类或聚类分析是无监督学习问题。它通常被用作数据分析技术,用于发现数据中的有趣模式,例如基于其行为的客户群。有许多聚类算法可供选择,对于所有情况,没有单一的最佳聚类算法。相反,最好探索一系列聚类算法以及每种算法的不同配置。在本教程中,你将发现如何在 python 中安装和使用顶级聚类算法。完成本教程后,你将知道:

聚类分析,即聚类,是一项无监督的机器学习任务。它包括自动发现数据中的自然分组。与监督学习(类似预测建模)不同,聚类算法只解释输入数据,并在特征空间中找到自然组或群集。

群集通常是特征空间中的密度区域,其中来自域的示例(观测或数据行)比其他群集更接近群集。群集可以具有作为样本或点特征空间的中心(质心),并且可以具有边界或范围。

聚类可以作为数据分析活动提供帮助,以便了解更多关于问题域的信息,即所谓的模式发现或知识发现。例如:

聚类还可用作特征工程的类型,其中现有的和新的示例可被映射并标记为属于数据中所标识的群集之一。虽然确实存在许多特定于群集的定量措施,但是对所识别的群集的评估是主观的,并且可能需要领域专家。通常,聚类算法在人工合成数据集上与预先定义的群集进行学术比较,预计算法会发现这些群集。

有许多类型的聚类算法。许多算法在特征空间中的示例之间使用相似度或距离度量,以发现密集的观测区域。因此,在使用聚类算法之前,扩展数据通常是良好的实践。

一些聚类算法要求您指定或猜测数据中要发现的群集的数量,而另一些算法要求指定观测之间的最小距离,其中示例可以被视为“关闭”或“连接”。因此,聚类分析是一个迭代过程,在该过程中,对所识别的群集的主观评估被反馈回算法配置的改变中,直到达到期望的或适当的结果。scikit-learn 库提供了一套不同的聚类算法供选择。下面列出了10种比较流行的算法:

每个算法都提供了一种不同的方法来应对数据中发现自然组的挑战。没有最好的聚类算法,也没有简单的方法来找到最好的算法为您的数据没有使用控制实验。在本教程中,我们将回顾如何使用来自 scikit-learn 库的这10个流行的聚类算法中的每一个。这些示例将为您复制粘贴示例并在自己的数据上测试方法提供基础。我们不会深入研究算法如何工作的理论,也不会直接比较它们。让我们深入研究一下。

在本节中,我们将回顾如何在 scikit-learn 中使用10个流行的聚类算法。这包括一个拟合模型的例子和可视化结果的例子。这些示例用于将粘贴复制到您自己的项目中,并将方法应用于您自己的数据。

1.库安装

首先,让我们安装库。不要跳过此步骤,因为你需要确保安装了最新版本。你可以使用 pip Python 安装程序安装 scikit-learn 存储库,如下所示:

接下来,让我们确认已经安装了库,并且您正在使用一个现代版本。运行以下脚本以输出库版本号。

运行该示例时,您应该看到以下版本号或更高版本。

2.聚类数据集

我们将使用 make _ classification ()函数创建一个测试二分类数据集。数据集将有1000个示例,每个类有两个输入要素和一个群集。这些群集在两个维度上是可见的,因此我们可以用散点图绘制数据,并通过指定的群集对图中的点进行颜色绘制。这将有助于了解,至少在测试问题上,群集的识别能力如何。该测试问题中的群集基于多变量高斯,并非所有聚类算法都能有效地识别这些类型的群集。因此,本教程中的结果不应用作比较一般方法的基础。下面列出了创建和汇总合成聚类数据集的示例。

运行该示例将创建合成的聚类数据集,然后创建输入数据的散点图,其中点由类标签(理想化的群集)着色。我们可以清楚地看到两个不同的数据组在两个维度,并希望一个自动的聚类算法可以检测这些分组。

已知聚类着色点的合成聚类数据集的散点图接下来,我们可以开始查看应用于此数据集的聚类算法的示例。我已经做了一些最小的尝试来调整每个方法到数据集。3.亲和力传播亲和力传播包括找到一组最能概括数据的范例。

它是通过 AffinityPropagation 类实现的,要调整的主要配置是将“ 阻尼 ”设置为0.5到1,甚至可能是“首选项”。下面列出了完整的示例。

运行该示例符合训练数据集上的模型,并预测数据集中每个示例的群集。然后创建一个散点图,并由其指定的群集着色。在这种情况下,我无法取得良好的结果。

数据集的散点图,具有使用亲和力传播识别的聚类

4.聚合聚类

聚合聚类涉及合并示例,直到达到所需的群集数量为止。它是层次聚类方法的更广泛类的一部分,通过 AgglomerationClustering 类实现的,主要配置是“ n _ clusters ”集,这是对数据中的群集数量的估计,例如2。下面列出了完整的示例。

运行该示例符合训练数据集上的模型,并预测数据集中每个示例的群集。然后创建一个散点图,并由其指定的群集着色。在这种情况下,可以找到一个合理的分组。

使用聚集聚类识别出具有聚类的数据集的散点图

5.BIRCHBIRCH

聚类( BIRCH 是平衡迭代减少的缩写,聚类使用层次结构)包括构造一个树状结构,从中提取聚类质心。

它是通过 Birch 类实现的,主要配置是“ threshold ”和“ n _ clusters ”超参数,后者提供了群集数量的估计。下面列出了完整的示例。

运行该示例符合训练数据集上的模型,并预测数据集中每个示例的群集。然后创建一个散点图,并由其指定的群集着色。在这种情况下,可以找到一个很好的分组。

使用BIRCH聚类确定具有聚类的数据集的散点图

6.DBSCANDBSCAN

聚类(其中 DBSCAN 是基于密度的空间聚类的噪声应用程序)涉及在域中寻找高密度区域,并将其周围的特征空间区域扩展为群集。

它是通过 DBSCAN 类实现的,主要配置是“ eps ”和“ min _ samples ”超参数。下面列出了完整的示例。

运行该示例符合训练数据集上的模型,并预测数据集中每个示例的群集。然后创建一个散点图,并由其指定的群集着色。在这种情况下,尽管需要更多的调整,但是找到了合理的分组。

使用DBSCAN集群识别出具有集群的数据集的散点图

7.K均值

K-均值聚类可以是最常见的聚类算法,并涉及向群集分配示例,以尽量减少每个群集内的方差。

它是通过 K-均值类实现的,要优化的主要配置是“ n _ clusters ”超参数设置为数据中估计的群集数量。下面列出了完整的示例。

运行该示例符合训练数据集上的模型,并预测数据集中每个示例的群集。然后创建一个散点图,并由其指定的群集着色。在这种情况下,可以找到一个合理的分组,尽管每个维度中的不等等方差使得该方法不太适合该数据集。

使用K均值聚类识别出具有聚类的数据集的散点图

8.Mini-Batch

K-均值Mini-Batch K-均值是 K-均值的修改版本,它使用小批量的样本而不是整个数据集对群集质心进行更新,这可以使大数据集的更新速度更快,并且可能对统计噪声更健壮。

它是通过 MiniBatchKMeans 类实现的,要优化的主配置是“ n _ clusters ”超参数,设置为数据中估计的群集数量。下面列出了完整的示例。

运行该示例符合训练数据集上的模型,并预测数据集中每个示例的群集。然后创建一个散点图,并由其指定的群集着色。在这种情况下,会找到与标准 K-均值算法相当的结果。

带有最小批次K均值聚类的聚类数据集的散点图

9.均值漂移聚类

均值漂移聚类涉及到根据特征空间中的实例密度来寻找和调整质心。

它是通过 MeanShift 类实现的,主要配置是“带宽”超参数。下面列出了完整的示例。

运行该示例符合训练数据集上的模型,并预测数据集中每个示例的群集。然后创建一个散点图,并由其指定的群集着色。在这种情况下,可以在数据中找到一组合理的群集。

具有均值漂移聚类的聚类数据集散点图

10.OPTICSOPTICS

聚类( OPTICS 短于订购点数以标识聚类结构)是上述 DBSCAN 的修改版本。

它是通过 OPTICS 类实现的,主要配置是“ eps ”和“ min _ samples ”超参数。下面列出了完整的示例。

运行该示例符合训练数据集上的模型,并预测数据集中每个示例的群集。然后创建一个散点图,并由其指定的群集着色。在这种情况下,我无法在此数据集上获得合理的结果。

使用OPTICS聚类确定具有聚类的数据集的散点图

11.光谱聚类

光谱聚类是一类通用的聚类方法,取自线性线性代数。

它是通过 Spectral 聚类类实现的,而主要的 Spectral 聚类是一个由聚类方法组成的通用类,取自线性线性代数。要优化的是“ n _ clusters ”超参数,用于指定数据中的估计群集数量。下面列出了完整的示例。

运行该示例符合训练数据集上的模型,并预测数据集中每个示例的群集。然后创建一个散点图,并由其指定的群集着色。在这种情况下,找到了合理的集群。

使用光谱聚类聚类识别出具有聚类的数据集的散点图

12.高斯混合模型

高斯混合模型总结了一个多变量概率密度函数,顾名思义就是混合了高斯概率分布。它是通过 Gaussian Mixture 类实现的,要优化的主要配置是“ n _ clusters ”超参数,用于指定数据中估计的群集数量。下面列出了完整的示例。

运行该示例符合训练数据集上的模型,并预测数据集中每个示例的群集。然后创建一个散点图,并由其指定的群集着色。在这种情况下,我们可以看到群集被完美地识别。这并不奇怪,因为数据集是作为 Gaussian 的混合生成的。

使用高斯混合聚类识别出具有聚类的数据集的散点图

在本文中,你发现了如何在 python 中安装和使用顶级聚类算法。具体来说,你学到了:

原创文章,作者:IGYM,如若转载,请注明出处:https://www.506064.com/n/146368.html

汽车小知识 小米SU7 今日油价 油耗计算器 电耗计算器 购置税计算器 贷款计算器 保险计算器 交通违章代码 体育新闻
(0)
IGYMIGYM
上一篇 2024-10-29
下一篇 2024-10-29

相关推荐

发表回复

登录后才能评论