前言

上节课小甲鱼教大家如何正确的打飞机,其要点是判断和循环,判断就是该不该做某事,循环就是持续做某事

知识点

写一个程序

按照100分制,90分以上成绩为A,80到90为B,60到80为C,60以下为D,写一个程序,当用户输入分数,自动转换为ABCD的形式打印。

temp = input('请输入成绩:')
a = int(float(temp))
if 90< a <= 100:
print('A')
else:
if 80< a <=90:
print('B')
else:
if 60 < a <=80:
print('C')
else:
if 0<= a <=60:
print('D')
else:
print('输入错误')

利用elif对上述代码进行改进. elif相当于C语言中的else if

temp = input('请输入成绩:')
a = int(float(temp))
if 90< a <= 100:
print('A')
elif 80< a <=90:
print('B')
elif 60 < a <=80:
print('C')
elif 0<= a <=60:
print('D')
else:
print('输入错误')

Python 可以有效避免“悬挂else”

什么叫悬挂else

举个例子,初学C语言的朋友可能很容易被一下代码欺骗:

if ( hi > 2 )
if ( hi > 7 )
printf( "好棒!好棒!" );
else
printf( "切~" );

在这个例子中,else是想和外层的if相匹配,但事实上按照C语言就近原则,else是与第二个if相匹配。由于初学者的一个不小心,就导致一个bug的出现。这就是著名的悬挂else事件。

而在Python中,Python的缩进使用了强制的规定,使得代码必须正确的对齐,否则程序无法运行。所以Python是让程序员来决定else是属于哪一个if,通过限制你的选择,从而减少了不确定性。

条件表达式(三元操作符)

例子:

x, y = 4, 5
if x < y:
small = x
else:
small = y

我们说多少元操作符的意思是指这个操作符有多少个操作数。

例如说 赋值操作,small = x,它有两个操作数,分别是左边的small右边的x,我们就叫它二元操作符或者说是二目操作符

当我们的减号- 当作负号-来使用时,就代表一元操作符.

三元操作符,也就是说也有三个操作数

利用三元操作符进行改进:

small = x if x < y else y

语法: x if 条件 else y

当 if条件问True时,把x值给small。当if条件为False时,把y值给small

断言(assert)

assert关键字我们称之为“断言”,当这个关键字后边的条件为假时,程序自动崩溃并抛出AssertionError的异常。

举个例子:

>>> assert 3 > 4
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
assert 3 > 4
AssertionError >>> assert 4 > 3
>>>

那在什么情况下我们需要使用到assert呢?

当我们在测试程序时候,因为与其让错误的条件导致程序后面出现莫名其妙的bug或者崩溃的话,不如在错误条件出现的那一瞬间我们实现自爆。这就是我们assert存在的理由。

一般来说 我们可以用它在程序中置入检查点,当需要确保程序中的某个条件一定为真才能让程序正常工作的话,assert关键字就非常有用了。

课后习题

请将以下代码 以三元操作符形式进行修改:

x,y,z = 6,5,4
if x < y:
small = x
if z < small:
small = z
elif y < z:
small = y
else:
small = z

small = x if (x < y and x < z) else (y if y < z else z)

最新文章

  1. clientX、pageX、scrollLeft、offsetLeft、clientWidth、screen.width的用法和区别
  2. 转载:完全卸载oracle11g步骤
  3. UVa 1152 (中途相遇法) 4 Values whose Sum is 0
  4. phpmailer 发送邮件
  5. [转] Linux TCP/IP网络小课堂:net-tools与iproute2大比较
  6. tcp 状态示码 及 三次握手
  7. Inno Setup 安装inf文件的一个例子
  8. 模拟post请求(PHP)
  9. iOS开发系列-UI基础-KVC
  10. 学生管理系统开发代码分析笔记:jsp+java bean+servlet技术
  11. 移动端Web界面滚动touch事件
  12. zoj 2724 Windows Message Queue(使用priority_queue容器模拟消息队列)
  13. 《数据挖掘:R语言实战》
  14. 第三百八十四节,Django+Xadmin打造上线标准的在线教育平台—路由映射与静态文件配置以及会员注册
  15. PHP程序后台自动运行
  16. 查看Linux下系统资源占用常用命令
  17. html5 如何实现客户端验证上传文件的大小
  18. juqery学习3之juqery对象条件筛选
  19. JS cookie 设置 查看 删除
  20. POJ3660 传递闭包———floyd算法

热门文章

  1. SOLID总结(未完待续)
  2. 线程Coroutines 和 Yield(转)
  3. 【插件开发】—— 6 SWT 复杂控件使用以及布局
  4. match email address
  5. CMake学习笔记三:cmake 常用指令
  6. [POI2007]大都市meg
  7. ORA-01144_表空间数据文件超出最大限制
  8. [C#基础知识系列]专题十:全面解析可空类型[转]
  9. ural1437
  10. 学习笔记 第十四章 使用CSS3动画