show | version | enable_checker |
---|---|---|
step |
1.0 |
true |
- 这次研究了移位运算符
<<
左移 相当于 ✖️2>>
右移 相当于 ➗️2
- 我们从逻辑运算到位运算再到移位运算
- 走了好远
- 最后我们总结一下条件分支流程吧?🤔
- 满足某个条件的时候
- 执行某些代码
- 这就是单分支 if
- 如果不满足条件呢?
- 满足条件 if
- 如何处理
- 不满足条件 else
- 又如何处理
- 有多种分支的可能性
- 需要用 elif 来分析出各种分支
- 当然分支里面还有分支
- 分情况讨论之后
- 再分情况讨论
- 不断细分下去
- 这些情况是如何得到的呢?
- 比较运算符
- 成员测试运算符 in
- id 测试运算符 is
- 这些运算符运算的结果是 bool 型的变量,就两种
- True
- False
- 布尔型的变量可以做什么 bool 型的运算符么?
- 布尔运算包括
- 逻辑非
- 逻辑与
- 逻辑或
- 除了布尔运算还有什么运算?
- 位元运算
- 按位与
- 按位异或
- 按位或
- 移位运算
- 左移
- 右移
- 我们回到最初
- 为什么要有条件语句呢?
- 分类讨论
- 用不同的逻辑处理不同的问题
- 如果小于等于 0 了
- 那么就需要提示出错了
- 太小了行
- 太大了也不行
- 存钱罐就爆掉了
- 而且精度也是问题
- 精度小于 0.01 不行
- 没有一厘钱的物理实体
- 没法存
- 需要报错
- 这就是防御型编程
- 用户是不知道怎么回事的
- 一定要处理异常的情况
- 给用户能够理解的信息
- 不要让用户看到下面这些
- 用户是看不懂的!
- 增强系统的健壮性
- 这就是防御型编程
- Defensive programming
- 主动判断
- 容错
- 健壮性
- 而且要处理输入钱数的时候可能出现"oeasy"
- 但是 int("oeasy")会直接报 error 的情况
- 这就不只需要 if
- 而且需要 try 了
moneystr= input("how much you want to save:")
try:
f_money = float(moneystr)
except:
print(moneystr,"is not a float number.")
else:
if (f_money<=0):
print("money should be more than 0")
elif (f_money>=100):
print("money should be less than 100")
elif (f_money*100 - int(f_money*100) > 0):
print("money with a precision of cent")
else:
print("you money",f_money,"is saved!")
- 这样就可以保证用户无论输入什么
- 程序都能跑
- 而且都有合适的提示信息
- 以上各种错误情况已经处理
- 如果有颜色提示就更好了
- 这次研究了条件分支相关的
- 有各种分支情况
- 比较运算符
- 逻辑运算符
- 位运算符
- 最后还做了一个主动防御
- 现在我们了解了两种程序结构
- 顺序结构
- 从上到下依次执行
- 一条笔直的大马路
- 一路畅行无阻
- 分支结构是指当程序执行到某步时
- 需根据实际情况选择性的执行某部分代码
- 就如同生活中的十字路口
- 不可能同时走多条路
- 顺序结构
- 还有什么结构呢?🤔
- 下次再说 👋