python条件表达式语法_PYTHON 学习第七章 之 条件语句

缩进:

将条件分支前,应该先说说 缩进:python 给我的感觉和广告里说的那样,就是简洁。简洁的语法也是要有规矩的,不是怎么写都可以。

如何缩进?

通常大家 缩进都是一个 Tab键(Esc 键下面那个),一个 Tab 大概是四个空格。为了符合规范,我建议大家使用Tab键进行缩进。缩进距离是没有要求的,只要比语句块(所谓语句块就是 由冒号:结尾)不在同一条垂子线上就可以,但是语句体中缩进都必须在同一条垂直线上,除非存在另一语句块。

if 1<2:#这里的 print 和 if 2<3: 都是 if 1<2: 中的 子句, 所以 他们是平级

print('嘻嘻')if 2<3:#print("ok") 属于 if 2<3: 的 子句,所以要进行缩进

print("ok")#print("是我属于if 1<2: 的") 和 print('嘻嘻') 及 if 2<3: 都是 if 1<2: 子句, 所以他们是平级

print("是我属于if 1<2: 的")#print("--------这里只是让你知道是成功的--------") 和 if 1<2: 是平级

print("--------这里只是让你知道是成功的--------")#运行结果

嘻嘻

ok

是我属于if1<2: 的--------这里只是让你知道是成功的--------

然后不是所有的地方都能缩进 ,如下,出现缩进错误。简单点说 缩进只能用于语句块中。

print("--------这里只是让你知道是成功的--------")print("xxxx")#运行异常

print("xxxx")^IndentationError: unexpected indent

为什么要缩进?

知道如何缩进之后,就应该有疑问,为什么要缩进?python 和其他语言一样,属于模块化的,所谓的模块化就好比分块处理(而不是从头写到尾巴,都是在一条垂直线上)。好比古惑仔,若要在做我小弟,就必须加入我都阵营,语句块中的缩进,就是让他成为某个语句的“小弟”,大哥能做,小弟才能做(记住这句话,很抽象但是以后就明白了)。在java 中 语句块的表达方式为花括号({}),在python中是冒号:这是语法,没有为什么,若要问什么,去问你python开发者。

缩进只是收“小弟”,肯定不只是这样啊,那还的设计到作用域问题(这才是关键)。

算了,不乱扯皮了...

条件和条件语句:

这东西该怎么说呢?不说点什么直接上代码,显得枯燥(本来就是),这个问题随着时间的积累,我会越做越好的。最开始到现在我们的代码都是逐个解释和运行,但是现实中肯定不是这样的,编程就好比创造一个世界,你的世界怎么样,就得看你编程的功底了。我们就拿一个实际案例来说 所谓的条件是什么?初中的时候我喜欢跑网吧,但是我没有满18岁,网吧禁止我进入的,所以我去了黑网吧(这是后话)。这个案例是什么意思呢?就是说你要去网吧去上网,是有一个条件限制的,就是 你必须十八岁。如果不满足这个条件就无法进入网吧中。

案例一:这是简单的案例, 网管问我多少岁,我如实回答,我已经15岁了,然后对不起告诉我 禁止未成年人上网。

age =input('网管:请问你多少岁了?');if int(age)<18:print("禁止未成年人上网!")#运行结果

网管:请问你多少岁了?15禁止未成年人上网

这个案例中 明白了 python 的 条件语句

语法:if ...

if[条件表达式] :

[成立时执行语句块]

else 子句

案例二:我可是一个好孩子,好学生,这里不然我进去,我可以去别家啊

于是程序稍微改了一下

age =input('网管:请问你多少岁了?');if int(age)>=18:print("你已经成年,祝你上网愉快")else:print("于是我来到另一家黑网吧")print("【金色玫瑰网吧欢迎你】")#运行结果

网管:请问你多少岁了?15于是我来到另一家黑网吧

【金色玫瑰网吧欢迎你】

这里学习到了 第二个语法:

if ... else

if[条件表达式] :

[成立时执行语句块]else:

[条件不成立时执行语句块]

elif 子句 及多个 elif 子句

于是我很开心上起了网,不知不觉就已经很晚了,我有点饿,我想去买点东西吃,于是我来到网吧前台。上面有很多商品,于是把我兜里的 十元钱买了 薯片

print('网管:请问你想买什么?')print("泡面:5元,薯片:10元,矿泉水:3元")

price=input('网管:选好了请支付');if int(price)==5:print("这是你的泡面")elif int(price)==10:print("这是你的薯片")elif int(price)==3:print("这是你的矿泉水")else:print("没有此价位的商品")#运行结果

网管:请问你想买什么?

泡面:5元,薯片:10元,矿泉水:3元

网管:选好了请支付10

这是你的薯片

原来 if 条件语句 是支持多个条件判断的

语法: if...elif...else...

if[条件表达式]:

[成立时执行语句块]elif[条件表达式]:

[成立时执行语句块]elif:

[成立时执行语句块]

....[更多elif]else:

[所有都不成立时执行]

嵌套 if 子句

这时候父母给我打电话,问我什么时候回去...

print('父母:喂! 怎么这么晚还不会回家?是不是上网去了?')

a= input('我应不应该骗他们?')if str(a)=='骗':print("我:没有啊,我在同学家辅导作业呢")print("父母:那早点回来吃饭啊")print('由于我还在上网,又买了点吃的,回去的车费被我花完了')

b= input('是否找好朋友借钱?')if str(b)=='借':print('我:小强,能借点车费给我吗?明天就给你')

c= input("小强:借多少?")if int(c)<=2:print("坐公交回去咯!")elif 2

父母:喂! 怎么这么晚还不会回家?是不是上网去了?

我应不应该骗他们?骗

我:没有啊,我在同学家辅导作业呢

父母:那早点回来吃饭啊

由于我还在上网,又买了点吃的,回去的车费被我花完了

是否找好朋友借钱?借

我:小强,能借点车费给我吗?明天就给你

小强:借多少?12小强:你咋借这么多,不借了

走路.png...

曾经要是能努力,不沉迷于网络,也许明年就大学毕业了....

在 条件语句中 是可以支持多层条件语句的,但是实际开发中,并不会这么做,这样会代码层次变得复杂,不利于阅读和理解。

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 的成员

小知识:对不兼容的类型进行比较

从理论上说,可使用

将整数与字符串相加毫无意义,检查一个整数是否小于一个字符串也是一样。奇怪的是,在python3之前,竟然可以这么做。不过即便你使用的是旧的python版本,以应对这类比较进而远之,因为结果是不确定的,每次执行程序时都可能不同。在python3中,已经不允许这样的比较不兼容的类型了。

链式比较:

可以支持多个比较运算符:如:a

a=4b=23c=74

print(a

True

字符串和序列的比较

字符串是根据字符的字母排序顺序进行比较。

print('abc'

True

虽然居于的是字母的排序顺序,但字母都是Unicode字符,他们都是按照点排列的。

print(ord('a'))#运行结果

97

除了字符串 序列也可进行比较

a=[1,[2,3]]

b=[1,[2,4]]print(a

True

短路逻辑和条件表达式

实际开发中,我们可能会有多个条件进行判断,也就是一个if 可能存在多个条件语句,那么我们就要 and 和 or 关键字了

先说 and案例( x > y and y < z) 只有当 x > y 和 y < z 同时成立时 ,才能正常执行。

x=2y=3z=6

if x

条件成立

若我们 把 z =2 看看是否能成立呢?

x=2y=3z=2

if x

条件不成立

我们再说说 or 那上一个案例说事,当z=2 是,我觉得条件可以了,让我执行把。那好,那你就不要只用 and 了,换成 or 。

x=2y=3z=2

if x

条件成立

or 和 and 的区别就是 and 需要所有的添加 都成立,才能正常运行,而 or 只需要 其中一个 成立 即可, 只要一个成立之后,后台的条件运行就不会执行了。除非所有的条件都不成立

x=2y=3z=2

if x>y or y

条件不成立

并且两者是可以混合使用的。

x=2y=3z=2

if xz or x

条件成立

当 x

断言(assert):

if语句有个很有用的“亲戚”,断言。断言大家是怎么解释,assert 是一个检查机制。 在程序开发中,难免会出现异常,与其坐等异常产生,还不如当条件不满足时就产生一个异常。

使用 assert 当条件成立时(True) ,它会有任何操作,只有为假时才会执行。

正常运行:正常输出 打印语句

assert 1<2,'2居然小于1'

print("没事")#运行结果

没事

错误条件时

assert 2<1,'2居然小于1'

print("没事")#运行异常

Traceback (most recent call last):

File"D:/develTools/PycharmProjects/project1/venv/Include/test3.py", line 3, in

assert 2<1,'2居然小于1'AssertionError: 2居然小于1

关于断言知识远远不止这些,推荐一篇博客

pass 关键字

说到这里就应该提一下 pass 关键字了,不知道别人叫他什么,这里我叫它为 “占位”,之所以叫他为占位,是因为在 python 语言中,凡是定义了一个表达式(以冒号:结尾),都必须写内容,哪怕是打印一句话。如:

if 1<2:print('成立')#运行结果

成立

要是不给的话... 直接出现语法错误。

if 1<2:#运行结果

File "D:/develTools/PycharmProjects/project1/venv/Include/test3.py", line 5

^SyntaxError: unexpected EOFwhile parsing

但是在实际开发中,很多时候,我们并不是定义一个 函数,或者一个类 或者一个表达式,一上来就开始 劈里啪啦写代码,我们需要进行一下构思,想想该怎么做。这个时候我不知道写什么,为了满足语法,肯定会写一个 print('xxx')。语法满足了,但是觉得很不爽,这是我们就可以用 pass 进行占位。

if 1<2:pass

print("--------这里只是让你知道是成功的--------")#运行结果

--------这里只是让你知道是成功的--------

笔后语录:

这个效率还是挺慢的,两三个星期了,这个博客居然才写到分支,这也不能怪我,也是下班回家看看书,敲敲代码什么的。说到分支, python 似乎好像只有 if 语句? java 是还有  switch 语句(我用的比较少)除了工作场景不怎么用外,主要是觉得 if 方便一点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值