8、条件判断
python里的判断语句,和js的逻辑是相同的,但语法差别很大。
主要表现在以下几点:
【1】python里,if条件成立后,判断执行哪些语句是依靠缩进的。而js是靠大括号。
所有需要执行的代码都要缩进,不执行的代码和if保持同级。
示例代码如下:
foo = 1
if foo == 1:
print('foo == 1')
else:
print('foo != 1')
print('end')
# foo == 1
# end
解释:
第二行代码判断结果为true后,执行了从下一行开始缩进的代码,并且执行到没有缩进的代码为止(即第三行)。
并且跳过了第四行代码之后,缩进了的代码(即第五行)。
遇见未缩进的代码(第六行)开始继续执行。
【2】python的判断语句里,没有括号,而是if后面,接一个空格,再接判断语句,再接冒号。
特殊点就是一没空格,二是结尾多一个冒号。
比如上面第二行代码的组合是if
+ 空格
+ foo == 1
+ :
【3】三个判断语句是:if
、elif
、else
。
第一个和第三个大家一般很熟悉,第二个其实就是else if
,只不过在python里写作elif
,使用思路和else if
是一致的。
如果不懂else if
是什么的话,这个我也很尴尬啊。
foo = 2
if foo == 1:
print('foo == 1')
elif foo == 2:
print('foo == 2')
else:
print('foo')
# foo == 2
【4】如果只有if没有else,可以直接if 变量
来进行判断。
这种写法相当于简写,根据变量是否是true来决定语句是否执行。
只要变量是非零数值、非空字符串、非空list等,就判断为True,否则为False。
如示例代码:
foo = []
if foo:
print('true')
else:
print('false')
注意:
js里空数组隐式转换结果是true,但是python里是False
9、for…in
基本可以理解为js里的for...in
。
可以遍历list、字符串等。
注意结尾也是有冒号的
如果不懂js里的for...in
,那我也很尴尬,看示例吧。
foo = 'abc'
for i in foo:
print(i)
bar = [1, 2, 3]
for i in bar:
print(i)
# a
# b
# c
# 1
# 2
# 3
10、while
用法还是跟js里的while是一样的,依然记得结尾加冒号
foo = 1
while foo < 3:
print(foo)
foo = foo + 1
print('end')
# 1
# 2
# end
11、break
就是直接结束循环,开始下面搞事咯。示例代码看完秒懂
print('before while')
while True:
print('before break')
break
print('after break')
print('after while')
# before while
# before break
# after while
假如不加这个break,那么由于while是判断条件是True,应该陷入死循环才对。
然而加了break之后,就直接跳槽while循环,没有执行while内部语句的print('after break')
(好在,虽然会死循环,但不像js那样直接卡死浏览器,停止运行即可)
12、continue
同样类似,表示跳过这次循环,开始下一次。
如代码:
foo = [1, 2, 3]
for i in foo:
if i != 3:
continue
print(i)
# 3
不是3的时候,开始下一次循环;是3的时候,打印i。于是打印结果是3