Python是面向对象的编程语言,是由C语言编写而来的
玩一个输出分数的小游戏(判断分数的等级)
有3种实现方法
这里的第三种方法是第二种方法的改进,因为第二种方法靠缩进来实现,但是如果条件语句过多,缩进非常不美观,第三种里的elif相当于C语言中的else if
Python可以有效避免“悬挂else”
什么叫“悬挂else”?
我们举个例子,初学C语言的朋友可能很容易被以下代码欺骗:
if ( hi > 2 )
if( hi > 7 )
printf(“好棒!好棒!”);
else
printf(“切~”);
C语言中,Else会和离它最近的if匹配,这里的else会和if( hi > 7 )匹配,但是python的缩进完全避免了这个问题
条件表达式(三元操作符)
有了这个三元操作符的条件表达式,你可以使用一条语句来完成以下的条件判断和赋值操作:
x, y = 4, 5
if x < y:
small = x
else:
small = y
例子可以改进为:
small = x if x < y else y
断言(assert)
assert这个关键字我们称之为“断言”,当这个关键字后边的条件为假的时候,程序自动崩溃并抛出AssertionError的异常。
举个例子:
>>> assert 3 > 4
以后的课程会讲到如何来接收AssertionError异常
这个就非常类似于C语言中GetLastError()获取错误参数的过程
一般来说我们可以用Ta在程序中置入检查点,当需要确保程序中的某个条件一定为真才能让程序正常工作的话,assert关键字就非常有用了。
Whlie 条件:
循环体
这里的while和C语言中的while是一样的,非常好理解
虽然说Python是由C语言编写而来的,但是Ta的for循环跟C语言的for循环不太一样,Python的for循环显得更为智能和强大!
语法:
for 目标 in 表达式:
循环体
举个例子
这里的len()就是一个求长度的BIF
这里的j会自动增加,不用手动控制(智能)
下面介绍经常和for一起配合使用的小伙伴range(),这个是一个BIF(内置函数)
range()
语法:range( [strat,] stop[, step=1] )
这个BIF有三个参数,其中用中括号括起来的两个表示这两个参数是可选的。
step=1表示第三个参数的值默认值是1。
range这个BIF的作用是生成一个从start参数的值开始到stop参数的值结束的数字序列。
看定义可能会迷茫,直接看图就懂了
range(5)会生成一个从0开始到5结束的数字序列(不包括5)
list(range(0, 10)) 转换成列表是:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],注意不包含 10 哦
range(2,9)会生成一个从2开始到9结束的数字序列(不包括9)
Range(1,10,2)会生成一个从1开始到10结束并且每格数字相差2的序列(有点类似于等差数列,2相当于公差d,1相当于首项,8相当于末项)
break和continue
不会C的朋友就只能百度啦,我这只针对有C基础的,简单说一下
break语句的作用是终止当前循环,跳出循环体。(退出本层循环)
continue语句的作用是终止本轮循环并开始下一轮循环(退出本次循环
)(这里要注意的是:在开始下一轮循环之前,会先测试循环条件)。
这个程序是这节课的重点,如果读懂了(答案和你预想的一样),就说明学会了这节课的内容,如果不一样,那还得加油哦~(认真读几遍都会有结果哒)
答案
测试题
- 假设有 x = 1,y = 2,z = 3,请问如何快速将三个变量的值互相交换?
x, y, z = z, y, x - if not (money < 100): 这行代码相当于?
if money >= 100: - 猜猜 (x < y and [x] or [y])[0] 实现什么样的功能?
这其实是 Python 的作者还没有为 Python 加入三元操作符之前,Python 社区的小伙伴们灵活的使用 and 和 or 搭配来实现三元操作符的功能,这里边有涉及到列表和切片的知识,这部分知识很快就会讲解,迫不及待的朋友可以先稍微预习下。 - 你听说过成员资格运算符吗?
Python 有一个成员资格运算符:in,用于检查一个值是否在序列中,如果在序列中返回 True,否则返回 False。
4.设计一个验证用户密码程序,用户只有三次机会输入错误,不过如果用户输入的内容中包含"*"则不计算在内。
- count = 3
- password = 'FishC.com'
- while count:
- passwd = input('请输入密码:')
- if passwd == password:
- print('密码正确,进入程序......')
- break
- elif '*' in passwd:
- print('密码中不能含有"*"号!您还有', count, '次机会!', end=' ')
- continue
- else:
- print('密码输入错误!您还有', count-1, '次机会!', end=' ')
- count -= 1
5.编写一个程序,求 100~999 之间的所有水仙花数。
如果一个 3 位数等于其各位数字的立方和,则称这个数为水仙花数。例如:153 = 1^3 + 5^3 + 3^3,因此 153 就是一个水仙花数
- for i in range(100, 1000):
- sum = 0
- temp = i
- while temp:
- sum = sum + (temp%10) ** 3
- temp //= 10 # 注意这里要使用地板除哦~
- if sum == i:
- print(i)