show | version | enable_checker |
---|---|---|
step |
1.0 |
true |
- 这次了解了 elif
- elif 就是 else + if
- 可以构成多分支语句
- 不过在这个某些分支上
- 我想啥都不做
- 却出现了问题
- 能否做到啥都不做呢???🤔
num = -23
if num > 0:
print("more than 0")
elif num == 0:
else:
print("less than 0")
- 结果
- 出现了IndentationErro
- 缩进错误
- 问题就在于 num == 0 的时候
- 没有任何语句
- 我让他打印空字符串
- 并且最后也不要加换行
- 可以么?
- 可以倒是可以
- 但是其实我要的是啥都不干
- 但是他还是调用了 print 函数
- 能否完全啥也不干呢?
- 有这么一个关键字 pass
- 他的意思就是啥都不做
- 就像玩牌的时候
- 什么都不出
- 就是 pass 直接过
- 可以用么?
-
这样真的就可以啥都不用做
-
而且也通过
-
帮助手册里究竟是怎么说的呢?
- pass 是空运算
- 当被执行的时候
- 没有任何事情发生
- 他是有用的占位标志
- 当需要一个语句
- 但是并不做任何事的时候
- 就可以用 pass
- 甚至可以定义空的函数和类
- 但是就事论事
- 我们这个代码可以再随机一些吗?
from random import randint
num = randint(1,10) - 5
if num > 0:
print("more than 0")
elif num < 0:
print("less than 0")
- 这样,首先引入随机
- 确保条件判断有意义
- 然后处理了两个条件
- 最后等于 0 的时候
- 自然什么也不做
- 也就相当于 pass
- pass 更多用在哪里呢?
- 比如原始程序是这样的
from random import randint
num = randint(1,10) - 5
if num > 0:
print("more than 0")
- 这肯定没有任何问题
- 但是如果我想注释掉满足条件时所执行的语句
from random import randint
num = randint(1,10) - 5
if num > 0:
#print("more than 0")
- 但是这个程序运行会直接报错
- 这是一个经典的错误
- 其实我们只需啊要加上 pass
- 程序逻辑不变,条件分支保留
- 而且也能执行了
from random import randint
num = randint(1,10) - 5
if num > 0:
#print("more than 0")
pass
- 这样我这个功能就完成了
- 而且啥都不干的位置就是啥都不干
- 这次了解了空白占位符
- pass
- pass可以占位
- 让条件分支啥都不干
- 甚至可以制作
- 空函数
- 空类
- pass的本质就是None
- 干的是 啥也没干这件事
- 这个程序现在是单层的多分支
- 可以改成多层嵌套吗??🤔
- 下次再说 👋