Python版本:3.陆.2  操作系统:Windows
 小编:SmallWZQ

Python基础——条件推断,python基础决断

  Python版本:三.陆.2  操作系统:Windows  作者:SmallWZQ

  到如今截至,Python基础类别的稿子中的程序都以一条一条语句顺序实施的。在本章中,小编会重视介绍让程序选取是还是不是推行语句块的方式。

  Python程序为何能够兑现本人选用的职能吗?因为它能够依附条件进行推断是不是实践下边包车型大巴语句块。

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

伍.一 print和import的愈来愈多音讯

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

  到近年来截至,Python基础体系的小说中的程序都以一条一条语句顺序实施的。在本章中,小编会珍视介绍让程序选拔是不是实施语句块的不二法门。

规格决断

5.一.一接纳逗号输出

伍.1.壹运用逗号输出

  Python程序为啥能够兑现自己接纳的法力吗?因为它能够依据规则进行剖断是还是不是施行上边包车型大巴语句块。

 1.1 语句块

  什么是语句块吧?

  语句块是在原则为真(条件语句)时进行或许实践多次(循环语句)的一组语句。在代码前放置空格来缩进语句就可以创制语句块。

  关于缩进:

    使用tab键也得以缩进语句块。Python将七个tab字符解释为到下多少个tab字符地点的移动,而2个tab字符地点为七个空格,不过正式且推荐的主意是只用空格,特别是在种种缩进须求四个空格的时候。

  在Python中,英文版冒号(:)用来标记语句块的起来,块中的每八个讲话都是缩进的(缩进量同样)。当回退到和曾经已经关闭的块同样的缩进量时,就意味着如今块已经甘休了(这几个不用担忧,多数程序编辑器和集成开垦条件都知晓怎么缩进语句块,能够协助用户轻便把握缩进)!!!

 一.二 条件和标准语句

  传说中的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')

  四. 口径语句总计

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后')

  输入1993,结果报错:

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 #相等运算符==
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判别双方是不是一样(同2个对象)。

  三、in:成员身份运算符

标准化推断,条件语句。  四、布尔运算符:and、or和not

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

打字与印刷五个表达式也是实用的,只要将它们用逗号隔绝就好:

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

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

小结

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

  二. 口径推断能够让Computer自身做取舍,Python的if…elif…else很利索;

  3.
规则判别从上向下相称,当满意条件时执行相应的块内语句,后续的elif和else都不再进行。

Python版本:3.陆.二 操作系统:Windows 小编:SmallWZQ
到方今结束,Python基础连串的稿子中的程序都以一条…

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

  

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

  

规则推断

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

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

 1.1 语句块

  什么是语句块吧?

  语句块是在尺度为真(条件语句)时实行只怕举办数十次(循环语句)的一组语句。在代码前放置空格来缩进语句就能够创制语句块。

  关于缩进:

    使用tab键也得以缩进语句块。Python将3个tab字符解释为到下贰个tab字符地点的活动,而3个tab字符地方为八个空格,然则正式且推荐的措施是只用空格,特别是在各样缩进必要陆个空格的时候。

  在Python中,英文版冒号(:)用来标志语句块的上马,块中的每2个言语都以缩进的(缩进量同样)。当回退到和曾经已经关闭的块同样的缩进量时,就表示目前块已经终结了(那一个不用顾虑,好多先后编辑器和集成开拓情形都掌握怎么样缩进语句块,能够扶助用户轻便把握缩进)!!!

 1.二 条件和条件语句

  旧事中的if语句就要闪亮进场啦~~~

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

  1. if语句

  对于if语句,若条件决断为真,那么前面包车型客车语句块就会被奉行。若条件判别为假,语句块就会被跳过,不会实行。

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

金沙注册送58,  2. else语句

  else子句只是扩充1种选取(之所以称为子句是因为它不是独自的言语,而是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()运用

  最后看二个有毛病的尺度推断。繁多同桌会用input()读取用户的输入,那样能够友善输入,程序运营得更有趣,更有人性化。其实啊,Error往往现身在出人意料的地方。不信,来看段代码:

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

  输入一9九三,结果报错:

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后')

  因而,在编制程序中,条件判定是卓殊关键的。条件判断能够让Computer本人做选取,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:同壹性运算符

  其一概念很不协和,什么是同一性?首次接触真是云里雾里啊,真正精晓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判断双方是或不是一样(同二个目的)。

  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!

5.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*

能够在讲话末尾扩展一个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*

能够在言语末尾扩充四个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.二.一队列解包

伍.2.一体系解包

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

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

>>> 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'

  

 

它同意函数重回一个以上的值并且打包成元组,然后经过二个赋值语句很轻易进行访问。所解包的连串中的元素数量必须和停放在赋值符号=左侧的变量数量完全1致,不然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

  

它同意函数重临2个以上的值并且打包成元组,然后通过两个赋值语句很轻易开始展览走访。所解包的类别中的成分数量必须和停放在赋值符号=左侧的变量数量完全一致,否则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)是将同1个值赋给七个变量的近便的小路。

5.2.贰链式赋值

x=y=somefunction()

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

和底下语句的功能是同一的:

x=y=somefunction()

y=somefunction()

和底下语句的效劳是1律的:

x=y

y=somefunction()

在意上边的言辞和底下的语句不自然等价:

x=y

x=somefunction()

瞩目上边包车型大巴话语和底下的语句不自然等价:

y=somefunction()

x=somefunction()

五.②.三增量赋值

y=somefunction()

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

5.2.叁增量赋值

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

  

伍.叁语句块:缩排的乐趣

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

语句块是在基准为真时施行恐怕推行数十次的壹组语句。在代码前放置空格来缩进语句就能够创造语句块。使用tab字符也得以缩进语句块。Python将二个tab字符解释为到下2个tab字符地方的移动,而三个tab字符地点为八个空格,不过正式且推荐的措施是只用空格,尤其是在每一种缩进须求四个空格的时候。

>>> x=2

>>> x+=1

>>> x*=2

>>> x

6

  

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

伍.四标准和原则语句

语句块是在口径为真(条件语句)时施行可能实践多次(循环语句)的一组语句。在代码前停放空格来缩进语句就能够创设语句块。使用tab字符也可以缩进语句块。Python将八个tab字符解释为到下3个tab字符地点的活动,而二个tab字符地点为几个空格,不过正式且推荐的点子是只用空格,越发是在各类缩进需求三个空格的时候。

5.四.一那就是布尔变量的职能

5.四尺度和标准化语句

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

伍.四.一那便是布尔变量的效益

False None 0 ”” () [] {}

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

换句话说,相当于行业内部值False和None、全体品种的数字0(蕴涵浮点型、长整型和别的项目)、空系列(比方空字符串、元组和列表)以及空的字典都为假。其余的整套都被讲明为真,包含优异值True.

False None 0 ”” () [] {}

5.四.二 条件奉行和if语句

换句话说,也便是正规值False和None、全数体系的数字0(包蕴浮点型、长整型和别的种类)、空体系(例如空字符串、元组和列表)以及空的字典都为假。其余的全方位都被解说为真,包括新鲜值True.

if语句,它能够达成标准推行。即只要条件
(在if和冒号之间的说明式)判别为真,那么前面包车型地铁语句块就会被实践。假诺条件为假,语句块就不会被实践.

5.肆.贰 条件实行和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'

  

1旦急需检查七个尺码,就足以采用elif,它是“else
if的简写,也是if和else子句的三只利用—-也正是怀有规则的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子句的同台利用—-也正是具有标准的else子句。

5.4.5更复杂的准绳

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'

  

1.相比运算符

伍.四.5更复杂的原则

金沙注册送58 1

1.相比运算符

贰.相等运算符

金沙注册送58 2

假设想要知道三个东西是或不是等于,应该利用极度运算符,即两个等号==

二.相等运算符

  1. is:同一性运算符

借使想要知道多个东西是或不是等于,应该利用十分运算符,即多少个等号==

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

  

x和z相等却分化样,为何吗?因为is运算符是判断同壹性而不是相等性的。变量x和y都被绑定到同3个列表上,而变量z被绑定在此外一个颇具同样数值和顺序的列表上。它们的值大概相当,可是却不是同三个目的。

  1. is:同1性运算符

四.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运算符是推断同一性而不是相等性的。变量x和y都被绑定到同一个列表上,而变量z被绑定在其余一个有所同样数值和各样的列表上。它们的值或许约等于,然则却不是同一个对象。

5.字符串和连串比较

4.in:成员身价运算符

陆.布尔运算符

伍.字符串和系列比较

5.4.7断言

6.布尔运算符

比如必要保障程序中的有个别条件一定为真技艺让程序符合规律化办事来说,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

  

金沙注册送58 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

  

金沙注册送58 4

相关文章

网站地图xml地图