您的位置:首页 > 编程语言 > Python开发

[小甲鱼PYTHON入门]00789 了不起的分支和循环

2019-03-07 14:51 148 查看

[小甲鱼PYTHON入门]2019.3.7

007了不起的分支和循环1

飞机大战的大概流程

加载背景图片
载入背景图片
加载背景音乐
播放背景音乐(单曲循环)
我方飞机诞生
interval=0
while true :
if 用户是否点击关闭按钮:
退出程序
interval+=1
if interval=50:
interval=0
小飞机诞生
小飞机移动一个位置
屏幕刷新
if 用户鼠标产生移动:
我方飞机中心位置=用户鼠标位置
屏幕刷新
if 我方飞机与小飞机发生碰撞:
我方爆炸,波放撞击音乐
修改我方飞机图案
打印"game over"
停止背景音乐,最好淡出

008 了不起的分支和循环2

elif=else if(体现简洁和可读性)

悬挂else

c语言中else与最近的if相配,容易被代码欺骗

三元操作符

断言(assert)

78课后习题及答案

  1. if not (money < 100): 这行代码相当于?

if money >= 100:

  1. assert 的作用是什么?

assert这个关键字我们称之为“断言”,当这个关键字后边的条件为假的时候,程序自动崩溃并抛出AssertionError的异常。
什么情况下我们会需要这样的代码呢?当我们在测试程序的时候就很好用,因为与其让错误的条件导致程序今后莫名其妙地崩溃,不如在错误条件出现的那一瞬间我们实现“自爆”。
一般来说我们可以用Ta再程序中置入检查点,当需要确保程序中的某个条件一定为真才能让程序正常工作的话,assert关键字就非常有用了。

  1. 假设有 x = 1,y = 2,z = 3,请问如何快速将三个变量的值互相交换?

x, y, z = z, y, x

  1. 猜猜 (x < y and [x] or [y])[0] 实现什么样的功能?

这其实是 Python 的作者还没有为 Python 加入三元操作符之前,Python 社区的小伙伴们灵活的使用 and 和 or 搭配来实现三元操作符的功能,这里边有涉及到列表和切片的知识,这部分知识很快就会讲解,迫不及待的朋友可以先稍微预习下。

  1. 你听说过成员资格运算符吗?

Python 有一个成员资格运算符:in,用于检查一个值是否在序列中,如果在序列中返回 True,否则返回 False。

name = ‘小甲鱼’
‘鱼’ in name
True
‘肥鱼’ in name
False

0 视频中小甲鱼使用 if elif else 在大多数情况下效率要比全部使用 if 要高,但根据一般的统计规律,一个班的成绩一般服从正态分布,也就是说平均成绩一般集中在 70~80 分之间,因此根据统计规律,我们还可以改进下程序以提高效率。
score = int(input(‘请输入一个分数:’))
if 80 > score >= 60:
print(‘C’)
elif 90 > score >= 80:
print(‘B’)
elif 60 > score >= 0:
print(‘D’)
elif 100 >= score >= 90:
print(‘A’)
else:
print(‘输入错误!’)

1请将以下代码修改为三元操作符实现:
x, y, z = 6, 5, 4
if x < y:
small = x
if z < small:
small = z
elif y < z:
small = y
else:
small = z
我的代码
x,y,z=6,5,4
small=x if (x<y and x<z ) else (y if y<z else z)

009了不起的分支和循环3

while 条件:

循环体

for 目标 in 表达式:

              循环体

例如

for i in love:
print(i,end=’ ')
c h i w e n q i a n g

range()

语法: range([start,] stop[,step=1]

表示生成一个从start参数的值开始一直到stop参数的值结束的序列(不包含stop)

step=1表示第三个参数默认值为1#####好像没啥用

例如:

list(range(3))
[0, 1, 2]

又例如:

for i in range(2,8):
print(i)
2
3
4
5
6
7

又例如:

for i in range(1,11,2):
print(i)
1
3
5
7
9

break

终止循环

continue

终止本轮循环并开始下一轮循环

9课后习题及答案

  1. 下面的循环会打印多少次"I Love FishC"?
    for i in range(0, 10, 2):
    print(‘I Love FishC’)
    5 次,因为从 0 开始,到 10 结束,步进为 2。
  1. 下面的循环会打印多少次"I Love FishC"?
    for i in 5:
    print(‘I Love FishC’)
    复制代码
    会报错,上节课的课后习题我们提到了 in 是“成员资格运算符”,而不是像 C 语言那样去使用 for 语法。Python 的 for 更像脚本语言的 foreach。
  1. 回顾一下 break 和 continue 在循环中起到的作用

break语句的作用是终止当前循环,跳出循环体。
continue语句的作用是终止本轮循环并开始下一轮循环(这里要注意的是:在开始下一轮循环之前,会先测试循环条件)。

  1. 请谈下你对列表的理解

嗯,有些知识点需要自己总结才能加固,下节课小甲鱼将跟大家畅谈一个打了激素的数组:列表,不容错过哦_

  1. 请问 range(10) 生成哪些数?

会生成 range(0, 10),list(range(0, 10)) 转换成列表是:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],注意不包含 10 哦。

  1. 目测以下程序会打印什么?
    while True:
    while True:
    break
    print(1)
    print(2)
    break
    print(3)
    复制代码
    会打印:
    2
    3

因为 break 只能跳出一层循环,记住咯!

  1. 什么情况下我们要使循环永远为真?

while Ture:
循环体

同样用于游戏实现,因为游戏只要运行着,就需要时刻接收用户输入,因此使用永远为真确保游戏“在线”。操作系统也是同样的道理,时刻待命,操作系统永远为真的这个循环叫做消息循环。另外,许多通讯服务器的客户端/服务器系统也是通过这样的原理来工作的。

所以永远为“真”虽然是“死循环”,但不一定是坏事,再说了,我们可以随时用 break 来跳出循环!

  1. 【学会提高代码的效率】你的觉得以下代码效率方面怎样?有没有办法可以大幅度改进(仍然使用while)?

i = 0
string = ‘ILoveFishC.com
length = len(string)
while i < length:
print(i)
i += 1

1设计一个验证用户密码程序,用户只有三次机会输入错误,不过如果用户输入的内容中包含"*"则不计算在内
我的代码:

temp=input(“请输入密码:”)
time=2
i=0
while time:
if temp==“cwq1995”:
print(“密码正确,进入程序。。。。”)
break
elif ‘’ in temp:
print("密码中不能含有’’,请重新输入,你还有",time+1,“次机会”)
temp=input()
continue
elif temp!=“cwq1995”:
time-=1
print(“密码输入错误,你还有”,time+1,“次机会”)
temp=input()
if time==0:
print(“三次机会已用完,拜拜”)
break

2编写一个程序,求 100~999 之间的所有水仙花数。
我的代码

i=0
for i in range(100,1000):
sum=0
temp=i
while temp:
sum=sum+(temp%10)**3
temp//=10
if sum==i:
print(i,“为水仙花数”,end=’ ')

3三色球问题:有红、黄、蓝三种颜色的球,其中红球 3 个,黄球 3 个,绿球 6 个。先将这 12 个球混合放在一个盒子中,从中任意摸出 8 个球,编程计算摸出球的各种颜色搭配。
我的代码:

print(“红”,“黄”,“绿”)
a=’’
i=0
for red in range(0,4):
for yel in range(0,4):
for gre in range(2,7):
if red + yel + gre ==8:
print(red,a, yel, a,gre)

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: