规范判断,读书笔记

By admin in 4858.com on 2019年4月8日

  Python版本:三.陆.贰  操作系统:Windows
 小编:SmallWZQ

Python基础——条件判断,python基础判断

  Python版本:三.陆.二  操作系统:Windows  小编:SmallWZQ

  到近期截止,Python基础体系的稿子中的程序都是一条一条语句顺序执行的。在本章中,作者会重点介绍让程序接纳是或不是推行语句块的法子。

  Python程序为何能够实现自小编选取的功力吗?因为它能够根据规则实行判断是还是不是执行上面包车型客车语句块。

  Python基础——数据类型中讲到的布尔值就与标准判断有着一定的联络。

5.一 print和import的越来越多消息

伍.一 print和import的更加多新闻

  到近年来结束,Python基础种类的稿子中的程序都以一条一条语句顺序执行的。在本章中,笔者会重点介绍让程序选用是还是不是执行语句块的法子。

规则判断

伍.1.一运用逗号输出

5.一.壹接纳逗号输出

  Python程序为什么能够达成自身选拔的功效吗?因为它能够根据标准进行判断是或不是执行上面的语句块。

 1.1 语句块

  什么是语句块呢?

  语句块是在条件为真(条件语句)时实施或然执行数次(循环语句)的壹组语句。在代码前停放空格来缩进语句即可创制语句块。

  关于缩进:

    使用tab键也能够缩进语句块。Python将四个tab字符解释为到下3个tab字符位置的移动,而叁个tab字符地点为九个空格,可是正式且推荐的措施是只用空格,尤其是在每一种缩进需求多少个空格的时候。

  在Python中,英文版冒号(:)用来标识语句块的起来,块中的每1个讲话都是缩进的(缩进量相同)。当回退到和曾经已经关闭的块一样的缩进量时,就意味着最近块已经甘休了(这些不要担心,很多程序编辑器和合并开发条件都知晓怎样缩进语句块,能够扶持用户轻松把握缩进)!!!

 1.贰 条件和准星语句

  故事中的if语句就要闪亮登场啦~~~

  使用原则语句并非少写了冒号(:),而且必须是英文版本的。

  1. if语句

  对于if语句,若条件判定为真,那么前面包车型地铁语句块就会被实施。若条件判定为假,语句块就会被跳过,不会履行。

1 #if语句
2 age = 20
3 if age >= 18:
4     print('your age is', age)
5     print('adult')

  2. else语句

  else子句只是扩充一种选拔(之所以称之为子句是因为它不是独立的说话,而是if的壹有些)。if…else…搭配,若if语句为False,不实施if下的语句块,而去else下的语句块。

1 #if...else...语句
2 age = 3
3 if age >= 18:
4     print('your age is', age)
5     print('adult')
6 else:
7     print('your age is', age)
8     print('teenager')

  3. elif语句

  即使须要检讨多少个规范,就足以行使elif,它是else
if的简写,也是if和else语句的一路使用,就算用elif做更密切的判定:

1 #if...elif...elif...else...语句
2 age = 3
3 if age >= 18:
4     print('adult')
5 elif age >= 6:
6     print('teenager')
7 else:
8     print('kid')

  四. 规格语句计算

if <条件判断1>:
    <执行1>
elif <条件判断2>:
    <执行2>
elif <条件判断3>:
    <执行3>
else:
    <执行4>

  5. 注意点

  if语句执行有性子状,它是从上往下判断,借使在有些判断上是True,把该论断相应的口舌执行后,就大意掉多余的elifelse语句,所以,请测试并分解为什么上边的程序打字与印刷的是teenager:

1 #条件语句执行特点:从上往下判断
2 age = 20
3 if age >= 6:
4     print('teenager')
5 elif age >= 18:
6     print('adult')
7 else:
8     print('kid')

  6. input()运用

  最终看3个有题指标尺码判断。很多同室会用input()读取用户的输入,那样能够本人输入,程序运维得越来越好玩,更有人性化。其实啊,Error往往出现在不测的地点。不信,来看段代码:

#if语句中使用input()方法
birth = input('birth: ')
if birth < 2000:
    print('00前')
else:
    print('00后')

  输入19九3,结果报错:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unorderable types: str() > int()

规范判断,读书笔记。  为何吧?作者在刚接触Python时,用到那里报错也是百思不得其解,同样纠结了长久。直到后来,小编才日渐懂了。

  关于input(),小编在小说《Python基础——输出[print()]与输入[input()]》中壹度讲得比较详细了。

  这是因为input()回去的数据类型是strstr无法直接和整数比较,必须先把str转换到整数。Python提供了int()函数来成功那件事情。

s = input('birth: ')
birth = int(s)
if birth < 2000:
    print('00前')
else:
    print('00后')

  由此,在编制程序中,条件判断是可怜首要的。条件判断能够让电脑自个儿做采取,Python的if…elif…else很利索。条件判断从上向下相称,当满足条件时进行相应的块内语句,后续的elif和else都不再履行。

一.3 条件运算符

  条件判断,if语句龙在判断并精选是不是执行,而并未有过多关系条件自个儿。

  上边是Python湖南中国广播集团大的规范运算符:

Python中的条件运算符
表达式 描述
x == y x 等于 y
x < y x 小于 y
x > y x 大于 y
x >= y x 大于等于 y
x <= y x 小于等于 y
x != y x 不等于 y
x is y x和y是同一个对象
x is not y x和y不是同一对象
x in y x是y容器的成员
x not in y x不是y容器的成员

  在Python中,相比较运算和赋值运算是能够一连的——多少个运算符能够连在壹起使用,比如:
0 < age <120。

  有些运算符值得越发关注:

  1、相等运算符

  假如想要知道八个内容是还是不是等于,你应当利用卓殊运算符,即七个等号==。请务必记得是八个等号!!!单个等号只是赋值啊~~~

1 #相等运算符==
2 >>>"python" == "python"
3 True
4 >>>"Python" == "python"
5 False
6 >>>"python" = "python"
7   File "<stdin>", line 1
8 SyntaxError: can't assign to literal
9 #很明显,单个相等运算符是赋值运算符,是用来改变值的,而不能用来比较

  二、is:同一性运算符

  其一概念很不自身,什么是同一性?第一遍接触真是云里雾里啊,真正清楚is运算符才知道同1性的真谛。

  乍壹看,is运算符和==一样,事实上却今非昔比。

  示例代码如下:

 1 #同一性运算符:is
 2 #is和==之间的差异
 3 >>>x = y = [1,2,3]
 4 >>>z = [1,2,3]
 5 >>>x == y
 6 True
 7 >>>x == z
 8 True
 9 >>>x is y
10 True
11 >>>y is x
12 True
13 >>>x is z
14 False
15 >>>z is x
16 False

  注:==运算符相比较多个目的是还是不是等于,is判定双方是或不是相同(同1个对象)。

  3、in:成员身价运算符

  4、布尔运算符:and、or和not

  伍、断言:条件后,添加字符串,解释断言,关键字:assert(在先后中置入检查点)

打字与印刷七个表明式也是卓有功用的,只要将它们用逗号隔离就好:

打字与印刷四个表明式也是行得通的,只要将它们用逗号隔开分离就好:

  Python基础——数据类型中讲到的布尔值就与标准判断有着一定的关系。

小结

  一. 等号运算符:==,单个等号=为赋值运算符;

  二. 口径判断能够让电脑自个儿做取舍,Python的if…elif…else很利索;

  三.
规则判断从上向下相称,当知足条件时实施相应的块内语句,后续的elif和else都不再实行。

Python版本:三.陆.二 操作系统:Windows 小编:SmallWZQ
到近来截止,Python基础类别的稿子中的程序都是一条…

>>>print'age:',42
age: 42

  

>>>print'age:',42age: 42

  

规格判断

要同时输出文本和变量值,却又不指望选取字符串格式化:

要同时输出文本和变量值,却又不期望采纳字符串格式化:

 1.1 语句块

  什么是语句块吧?

  语句块是在尺度为真(条件语句)时实施只怕实施数次(循环语句)的一组语句。在代码前放置空格来缩进语句即可创制语句块。

  关于缩进:

    使用tab键也得以缩进语句块。Python将3个tab字符解释为到下一个tab字符地点的运动,而三个tab字符地方为七个空格,可是正式且推荐的方法是只用空格,越发是在种种缩进要求多少个空格的时候。

  在Python中,英文版冒号(:)用来标识语句块的上马,块中的每二个言语都以缩进的(缩进量相同)。当回退到和曾经已经关闭的块1样的缩进量时,就表示如今块已经截至了(那个不用操心,很多先后编辑器和集成开发条件都精通怎么缩进语句块,能够扶助用户轻松把握缩进)!!!

 一.二 条件和规格语句

  传说中的if语句就要闪亮登场啦~~~

  使用规范语句并非少写了冒号(:),而且必须是英文版本的。

  1. if语句

  对于if语句,若条件判定为真,那么前边的语句块就会被实践。若条件判定为假,语句块就会被跳过,不会实施。

1 #if语句
2 age = 20
3 if age >= 18:
4     print('your age is', age)
5     print('adult')

  2. else语句

  else子句只是扩大一种选取(之所以称之为子句是因为它不是独自的言辞,而是if的1局地)。if…else…搭配,若if语句为False,不执行if下的语句块,而去else下的语句块。

1 #if...else...语句
2 age = 3
3 if age >= 18:
4     print('your age is', age)
5     print('adult')
6 else:
7     print('your age is', age)
8     print('teenager')

  3. elif语句

  假诺须要检讨七个标准,就足以采用elif,它是else
if的简写,也是if和else语句的同台利用,即便用elif做更加细致的论断:

1 #if...elif...elif...else...语句
2 age = 3
3 if age >= 18:
4     print('adult')
5 elif age >= 6:
6     print('teenager')
7 else:
8     print('kid')

  4. 标准化语句总计

if <条件判断1>:
    <执行1>
elif <条件判断2>:
    <执行2>
elif <条件判断3>:
    <执行3>
else:
    <执行4>

  5. 注意点

  if语句执行有性情子,它是从上往下判断,固然在有些判断上是True,把该论断相应的口舌执行后,就忽略掉多余的elifelse语句,所以,请测试并解释为啥下边的次序打字与印刷的是teenager:

1 #条件语句执行特点:从上往下判断
2 age = 20
3 if age >= 6:
4     print('teenager')
5 elif age >= 18:
6     print('adult')
7 else:
8     print('kid')

  6. input()运用

  最终看二个有毛病的规则判断。很多同校会用input()读取用户的输入,那样能够团结输入,程序运转得更有意思,更有人性化。其实啊,Error往往出现在意想不到的地方。不信,来看段代码:

#if语句中使用input()方法
birth = input('birth: ')
if birth < 2000:
    print('00前')
else:
    print('00后')

  输入19玖三,结果报错:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unorderable types: str() > int()

  为啥吗?笔者在刚接触Python时,用到此地报错也是百思不得其解,同样纠结了久久。直到后来,小编才慢慢懂了。

  关于input(),我在小说《Python基础——输出[print()]与输入[input()]》中曾经讲得相比较详细了。

  那是因为input()重临的数据类型是strstr不能够直接和整数相比较,必须先把str转换来整数。Python提供了int()函数来实现那件工作。

s = input('birth: ')
birth = int(s)
if birth < 2000:
    print('00前')
else:
    print('00后')

  由此,在编制程序中,条件判断是尤其主要的。条件判断能够让电脑本身做取舍,Python的if…elif…else很灵活。条件判断从上向下匹配,当满意条件时进行相应的块内语句,后续的elif和else都不再实施。

一.叁 条件运算符

  条件判断,if语木正在判断并选择是还是不是推行,而从不过多关系条件本人。

  上面是Python西藏中国广播公司泛的口径运算符:

Python中的条件运算符
表达式 描述
x == y x 等于 y
x < y x 小于 y
x > y x 大于 y
x >= y x 大于等于 y
x <= y x 小于等于 y
x != y x 不等于 y
x is y x和y是同一个对象
x is not y x和y不是同一对象
x in y x是y容器的成员
x not in y x不是y容器的成员

  在Python中,相比运算和赋值运算是能够接连的——多少个运算符能够连在一起使用,比如: 0 < age <120。

  有个别运算符值得尤其关心:

  一、相等运算符

  倘诺想要知道七个内容是还是不是等于,你应当运用万分运算符,即多个等号==。请务必记得是四个等号!!!单个等号只是赋值啊~~~

1 #相等运算符==
2 >>>"python" == "python"
3 True
4 >>>"Python" == "python"
5 False
6 >>>"python" = "python"
7   File "<stdin>", line 1
8 SyntaxError: can't assign to literal
9 #很明显,单个相等运算符是赋值运算符,是用来改变值的,而不能用来比较

  二、is:同壹性运算符

  4858.com,其一定义很不友好,什么是同一性?首次接触真是云里雾里啊,真正精通is运算符才知道同一性的真理。

  乍一看,is运算符和==壹样,事实上却今非昔比。

  示例代码如下:

 1 #同一性运算符:is
 2 #is和==之间的差异
 3 >>>x = y = [1,2,3]
 4 >>>z = [1,2,3]
 5 >>>x == y
 6 True
 7 >>>x == z
 8 True
 9 >>>x is y
10 True
11 >>>y is x
12 True
13 >>>x is z
14 False
15 >>>z is x
16 False

  注:==运算符相比较多个对象是否等于,is判定两方是或不是同样(同八个目的)。

  3、in:成员身份运算符

  4、布尔运算符:and、or和not

  伍、短路逻辑

  短路???条件表明式中的布尔运算符就有那本特性。什么是短路逻辑吗?如下所示:

  条件表明式:a and
b,该表明式曾几何时回到True呢?即a与b同时为真,若a判定为False,则无论b是真是假,该表达式都为为False。

  事实上,假设x为假,条件表明式会重返x的值,不然重回y的值。那种作为被称呼短路逻辑。而堵塞逻辑同样适用于or运算符。

>>> name='Gumby'

>>> salutation='Mr.'

>>> greeting='Hello.'

>>>print greeting,salutation,name

Hello. Mr. Gumby

  

倘诺在结尾处加上逗号,那么接下去的语句会与前一条语句在同样行打字与印刷:

print ‘Hello,’,
print ‘world!’

Hello, world!

五.1.二 把某件事作为另壹件事导入

>>> name='Gumby'>>> salutation='Mr.'>>> greeting='Hello.'>>>print greeting,salutation,nameHello. Mr. Gumby

  

若是在结尾处加上逗号,那么接下去的语句会与前一条语句在同壹行打字与印刷:

print ‘Hello,’,
print ‘world!’

Hello, world!

伍.1.二 把某件事作为另一件事导入

小结

  一.
等号运算符:==,单个等号=为赋值运算符;

  贰. Python的原则判断if…elif…else很灵敏;

  三. 标准判断从上向下相称;

  4. 打断逻辑适用于布尔运算符(and,or)。

从模块导入函数:

从模块导入函数:

import somemodule

from somemodule import somefunctian

from somemodule import somefunction,anotherfunction,yetanotherfunction

from somemodule import*

能够在言语末尾扩大3个as子句,在该子句后交付名字,或为整个模块提供小名:

>>> import math as foobar

>>> foobar.sqrt(4)

2.0

  

import somemodule

from somemodule import somefunctian

from somemodule import somefunction,anotherfunction,yetanotherfunction

from somemodule import*

能够在言语末尾增添3个as子句,在该子句后交付名字,或为整个模块提供外号:

>>> import math as foobar>>> foobar.sqrt2.0

  

也能够为函数提供小名:

也足以为函数提供小名:

>>> from math import sqrt as foobar

>>> foobar(4)

2.0

  

  

5.2赋值

>>> from math import sqrt as foobar>>> foobar2.0

  

  

5.2赋值

伍.二.一队列解包

5.二.一行列解包

七个赋值操作能够同时拓展:

多个赋值操作能够同时开始展览:

>>> x,y,z=1,2,3

>>> print x,y,z

1 2 3

>>> x,y=y,x

>>> print x,y,z

2 1 3

  

队列解包(sequence
unpacking)或可选代解包–将多个值的类别解开,然后嵌入变量的行列中:

>>> values=1,2,3

>>> values

(1, 2, 3)

>>> x,y,z=values

>>> x

1

  

当函数可能措施再次回到元组(可能别的系列或可迭代对象)时,这几个特点越发有用。若是须要取得(和删除)字典中专断的键-值对,可以应用popitem方法,这么些办法将键-值作为元组重返。那么那么些元组就足以一向赋值到七个变量中:

>>> x,y,z=1,2,3>>> print x,y,z1 2 3>>> x,y=y,x>>> print x,y,z2 1 3

  

队列解包(sequence
unpacking)或可选代解包–将四个值的种类解开,然后放到变量的行列中:

>>> values=1,2,3>>> values>>> x,y,z=values>>> x1

  

当函数只怕措施再次回到元组(只怕其余类别或可迭代对象)时,那么些特点尤其有用。借使需求取得字典中专断的键-值对,能够使用popitem方法,那几个方法将键-值作为元组重回。那么那一个元组就足以一向赋值到五个变量中:

>>> scoundrel={'name':'robin','girlfriend':'marion'}>>> key,value=scoundrel.popitem()>>> key'girlfriend'>>> value'marion'

  

 

它同意函数重回3个上述的值并且打包成元组,然后经过3个赋值语句很简单举办访问。所解包的队列中的成分数量必须和停放在赋值符号=右边的变量数量完全壹致,不然Python会在赋值时引发那一个:

>>> scoundrel={'name':'robin','girlfriend':'marion'}

>>> key,value=scoundrel.popitem()

>>> key

‘girlfriend’

>>> value

‘marion’

  

>>> x,y,z=1,2Traceback (most recent call last):File "<input>", line 1, in <module>ValueError: need more than 2 values to unpack

  

它同意函数重返三个上述的值并且打包成元组,然后通过二个赋值语句很简单开展走访。所解包的队列中的成分数量必须和停放在赋值符号=左侧的变量数量完全1致,不然Python会在赋值时引发这几个:

5.贰.2链式赋值

>>> x,y,z=1,2

Traceback (most recent call last):

File ““, line 1, in

ValueError: need more than 2 values to unpack

  

链式赋值(chained assignment)是将同3个值赋给三个变量的走后门。

五.二.贰链式赋值

x=y=somefunction()

链式赋值(chained assignment)是将同三个值赋给多少个变量的近便的小路。

和下边语句的遵从是相同的:

x=y=somefunction()

y=somefunction()

和下部语句的效应是壹样的:

x=y

y=somefunction()

瞩目上边的言语和下部的语句不必然等价:

x=y

x=somefunction()

注意上边的讲话和下部的语句不必然等价:

y=somefunction()

x=somefunction()

5.贰.三增量赋值

y=somefunction()

此地未有将赋值表达式写为x=x+壹,而是将表明式运算符放置在赋值运算符的左侧,写成x+=1。那种写法叫做增量赋值(augmented
assignment),对于*、/、%等标准运算符都适用.

五.2.三增量赋值

>>> x=2>>> x+=1>>> x*=2>>> x6

  

5.三语句块:缩排的童趣

此处未有将赋值表明式写为x=x+壹,而是将表明式运算符放置在赋值运算符的左边,写成x+=壹。那种写法叫做增量赋值(augmented
assignment),对于*、/、%等专业运算符都适用.

语句块是在标准为真时执行也许执行数10次的1组语句。在代码前停放空格来缩进语句即可创立语句块。使用tab字符也可以缩进语句块。Python将2个tab字符解释为到下三个tab字符地方的移位,而叁个tab字符地方为几个空格,可是正式且推荐的格局是只用空格,尤其是在种种缩进须求多少个空格的时候。

>>> x=2

>>> x+=1

>>> x*=2

>>> x

6

  

伍.3语句块:缩排的童趣

5.四尺度和规格语句

语句块是在标准化为真(条件语句)时进行大概举办数十四次(循环语句)的1组语句。在代码前放置空格来缩进语句即可创设语句块。使用tab字符也足以缩进语句块。Python将2个tab字符解释为到下一个tab字符地点的运动,而一个tab字符地方为七个空格,不过正式且推荐的章程是只用空格,越发是在每一种缩进须求七个空格的时候。

5.肆.1那正是布尔变量的效果

伍.四尺度和条件语句

下边包车型地铁值在作为布尔表明式的时候,会被解释器看作假(false}:

5.四.1这便是布尔变量的成效

False None 0 ”” () [] {}

上面包车型地铁值在作为布尔表明式的时候,会被解释器看作假(false}:

换句话说,约等于正统值False和None、全体类其余数字0(蕴涵浮点型、长整型和其余体系)、空系列(比如空字符串、元组和列表)以及空的字典都为假。其余的1体都被解释为真,包蕴新鲜值True.

False None 0 ”” () [] {}

五.四.二 条件执行和if语句

换句话说,也正是规范值False和None、全部品类的数字0(包蕴浮点型、长整型和其余门类)、空体系(比如空字符串、元组和列表)以及空的字典都为假。别的的全套都被分解为真,包罗特种值True.

if语句,它能够兑现标准化执行。即假设基准
(在if和冒号之间的表明式)判定为真,那么后边的语句块就会被实践。即使基准为假,语句块就不会被执行.

伍.四.二 条件执行和if语句

name=raw_input('what is your name?:')if name.endswith:print 'hello, Mr.jack'

  

5.4.3 else子句

name=raw_input('what is your name?:')if name.endswith:print 'hello, Mr.jack'else:print 'hello, stranger'

  

if语句,它能够达成规范执行。即只要条件
(在if和冒号之间的表达式)判定为真,那么前面包车型大巴语句块就会被执行。假使条件为假,语句块就不会被执行.

5.4.4 elif子句

name=raw_input('what is your name?:')
if name.endswith('jack'):
print 'hello, Mr.jack'

  

5.4.3 else子句

name=raw_input('what is your name?:')
if name.endswith('jack'):
print 'hello, Mr.jack'
else:
print 'hello, stranger'

  

假定急需检查多少个规格,就能够运用elif,它是“else
if的简写,也是if和else子句的1道利用—-约等于颇具标准的else子句。

5.4.4 elif子句

num=input('enter a number:')if num>0:print 'the number is positive'elif num<0:print 'the number is negtive'else:print 'the number is zero'

  

一旦要求检讨多少个标准化,就能够接纳elif,它是“else
if的简写,也是if和else子句的1块使用—-也正是富有标准的else子句。

伍.4.伍更扑朔迷离的尺度

num=input('enter a number:')
if num>0:
print 'the number is positive'
elif num<0:
print 'the number is negtive'
else:
print 'the number is zero'

  

一.比较运算符

五.4.5更复杂的准绳

4858.com 1

一.相比运算符

二.相等运算符

4858.com 2

假如想要知道八个东西是否等于,应该使用分外运算符,即多少个等号==

2.相等运算符

  1. is:同1性运算符

要是想要知道七个东西是还是不是等于,应该使用格外运算符,即多少个等号==

>>> x=y=[1,2,3]>>> z=[1,2,3]>>> x==yTrue>>> x==zTrue>>> x is yTrue>>> x is zFalse

  

x和z相等却不一致等,为啥吧?因为is运算符是判定同1性而不是相等性的。变量x和y都被绑定到同3个列表上,而变量z被绑定在其余三个拥有同等数值和各样的列表上。它们的值恐怕也正是,可是却不是同三个对象。

  1. is:同1性运算符

4.in:成员身份运算符

>>> x=y=[1,2,3]

>>> z=[1,2,3]

>>> x==y

True

>>> x==z

True

>>> x is y

True

>>> x is z

False

  

x和z相等却差别,为何呢?因为is运算符是判定同1性而不是相等性的。变量x和y都被绑定到同一个列表上,而变量z被绑定在其它一个颇具同样数值和一一的列表上。它们的值恐怕相当于,不过却不是同三个指标。

五.字符串和连串相比

4.in:成员身价运算符

陆.布尔运算符

伍.字符串和体系相比

5.4.7断言

陆.布尔运算符

设若急需确定保证程序中的有些条件一定为真才能让程序不荒谬工作来说,assert语句就有用了,它能够在先后中置入检查点。

5.4.7断言

>>> age=10>>> assert 0<age<100>>> age=-1>>> assert 0<age<100Traceback (most recent call last):File "<input>", line 1, in <module>AssertionError

  

4858.com 3

假如急需确定保证程序中的有个别条件一定为真才能让程序符合规律办事来说,assert语句就有用了,它能够在程序中置入检查点。

>>> age=10

>>> assert 0<age<100

>>> age=-1

>>> assert 0<age<100

Traceback (most recent call last):

File "<input>", line 1, in <module>

AssertionError

  

4858.com 4

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 美高梅手机版4858 版权所有