缩进:
将条件分支前,应该先说说 缩进: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 方便一点。