小飞机游戏框架
加载背景音乐
播放背景音乐(设置单曲循环)
诞生我方飞机
interval = 0 #时间间隔,给时间产生小飞机,不会占满整个屏幕
while true:
if 用户点击窗口关闭按钮:
退出程序
break
interval += 1
if interval == 50:
interval = 0
小飞机诞生
小飞机移动一个位置
屏幕刷新
if 用户鼠标产生移动:
我方飞机中心位置 = 用户鼠标位置
屏幕刷新
if 我方飞机与小飞机发生撞击:
我方挂,播放撞击音乐
修改我方飞机图案
打印“Game over”
停止背景音乐,最好淡出
按照100分制度,打A(90-100)、B(80-90)、C(60-80)、D(0-60)等级
注意:elif相当于else if
score = int( input ('请输入一个分数') )
if 100 >= score >=90:
print ( 'A' )
elif 90 >= score >=80:
print ( 'B' )
elif 80 >= score >=60:
print ( 'C' )
elif 60 >= score >=0:
print ( 'D' )
else:
print (' 输入错误! ')
if语句
Python中if语句的一般形式如下所示:
if condition_1:
statement_block_1
elif condition_2:
statement_block_2
else:
statement_block_3
如果 “condition_1” 为 True 将执行 “statement_block_1” 块语句
如果 “condition_1” 为False,将判断 “condition_2”
如果"condition_2" 为 True 将执行 “statement_block_2” 块语句
如果 “condition_2” 为False,将执行"statement_block_3"块语句
Python 中用 elif 代替了 else if,所以if语句的关键字为:if – elif – else。
注意:
1、每个条件后面要使用冒号 :,表示接下来是满足条件后要执行的语句块。
2、使用缩进来划分语句块,相同缩进数的语句在一起组成一个语句块。
3、在Python中没有switch – case语句。
例如在C语言中,以下代码会产生else悬挂
if ( hi > 2)
if ( hi < 7 )
printf ( "好棒!好棒!");
else
printf ( "切~" );
在C语言中,else会与最近的 if 匹配,而在python中不会出现else悬挂问题,因为在python的缩进即代表层次
x, y = 4, 5
if x < y:
small = x
else:
small = y
可以改进为:
small = x if x < y else y
语法:
x if 条件 else y
解读:当 if 后的条件为真时,返回 x,为假时,返回 y.
assert 3 > 4 #会抛出异常,告诉用户
assert 4 > 3 #会自动略过
当我们在测试程序时,assert关键字很有用,来实现自爆,置入检查点
循环
(1)while 循环
语法:
while 条件:
循环体
(2)for 循环
python 中的 for 循环和 C 语言中的 for 循环还是不一样的。
语法:
for 目标 in 表达式:
循环体
#其中的表达式可以是一个列表
例如:
favourite = 'FishC' #例一
for i in favourite:
print (i, end = ' ')
print('\n')
member = ['小甲鱼', '黑夜', '迷途', '超级布丁' ] #例二
for each in member:
print (each ,len(each))
(3)range()
语法:
range ( strat, stop[, step ])
参数说明:
#这个BIF有三个参数,其中用括号括起来的两个表示这两个参数是可选的
#step = 1表示第三个参数的值默认值是1
#range 的作用是生成一个从 start 参数的值开始到stop参数的值结束的数字序列
start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)
range(5)
list (range(5))
for i in range(5):
print (i)
for i in range(2,9):
print (i)
for i in range(1,10,2):
print (i)
(4)两个关键词:break 和 continue
break:
bingo = '小甲鱼'
answer = input('请输入小甲鱼最想听的一句话:')
while True:
#第一次打成小写true,系统总是报错,一定要True才是正确的,注意了
if answer == bingo;
break
answer = input ('抱歉,错误,请重新输入(答案正确才能退出游戏):')
print('哎呦,恭喜你猜对了!')
continue:终止本轮循环,开始下一轮循环(开始前,会判断条件是否成立)
for i in range (10):
if i % 2 != 0:
print(i)
continue
i += 2
print(i)
课后练习
#请将以下代码修改为三元操作符实现:
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 #小甲鱼程序,比较x,y,z中的最小值
small = x if (x < y and x < z) else (y if y < z else z)
print(small)
#使用一条语句来完成以下的条件判断和赋值操作:
x, y = 4, 5
if x < y:
small = x
else:
small = y
#我的程序
x, y = 4, 5
small = x if(x < y) else y
#会打印五次,从 0 开始,到 10 结束,步进为 2。
for i in range(0, 10, 2):
print('I love FishC')
#下面这个for循环会报错,因为 in 是“成员资格运算符”,而不是像 C 语言那样去使用 for 语法。Python 的 for 更像脚本语言的 foreach。
for i in 5:
print('I love FishC')
i = 0
string = 'ILoveFishC.com'
while i < len(string):
print(i)
i += 1
#因为每次循环都需要调用一次 len() 函数,所以上述代码效率比较低
#提升效率,改进上述代码段
i = 0
string = 'ILoveFishC.com'
lenth = len(string)
while i < lenth :
print(i)
i += 1
动手练习:
#我的代码
secret = (input('请输入密码:'))
answer = '西瓜'
count = 3
for i in range(3):
#count作为计数,用来提醒用户,i用来控制循环,一定要注意边界,for i in range(3)的范围是i是从0到2
if secret == answer :
count -= 1 #如果不加这条语句,当第三次输入正确答案时,count的值为1,它会打印while循环外的'3次输入结束,拒绝输入'这句话
print('密码正确')
break
if count == 1 and secret != answer:
print('3次输入结束,拒绝输入')
break
else:
count -= 1
s = '密码错误,你还有' + str(count) + '次机会'
print(s)
secret = (input('请重新输入密码:'))
心得体会:
测试了好久,主要是i控制的循环,还有count控制的提示语句总是不对,最后的这个版本才对,但对于——用户输入的内容中包含"*"则不计算在内,这个条件并没有满足
#小甲鱼的代码
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
#我的代码(修改版本),注意elif的用法
secret = (input('请输入密码:'))
answer = '西瓜'
count = 3
while count:
if secret == answer :
print('密码正确')
break
elif '*' in secret:
print('密码中不能含有"*"号!您还有', count, '次机会!', end=' ')
continue
elif count-1 == 0:
print('3次输入结束,拒绝输入')
break
else:
s = '密码错误,你还有' + str(count-1) + '次机会'
print(s)
secret = (input('请重新输入密码:'))
count -= 1
心得体会:
(1)之前用的是for控制循环,现在用的是while控制循环,
(2)之前count仅作为提示使用,根据小甲鱼版本进行改进,将count作为控制条件
(3)print语句进行了改进,之前输出用了两条语句:
s = '密码错误,你还有' + str(count-1) + '次机会'
print(s)
现在只用了一条语句
#我的代码
t = 101
while(t<=999 and t>100):
i = t // 100 #百位数
j = (t // 10) % 10 #十位数
k = t % 10 #个位数
if t == i ** 3 + j ** 3 +k ** 3:
print (t)
t += 1
#小甲鱼代码
for i in range(100,1000):
sum = 0
temp = i
while temp:
sum = sum + (temp % 10) ** 3
temp //= 10
if sum == i:
print(i)
3. 三色球问题
有红、黄、蓝三种颜色的球,其中红球 3 个,黄球 3 个,绿球 6 个。先将这 12 个球混合放在一个盒子中,从中任意摸出 8 个球,编程计算摸出球的各种颜色搭配。
#小甲鱼代码(自己没想出来,有想到用range函数,但是不会用)
print('red\tyellow\tgreen')
for red in range(0,4):
for yellow in range(0,4):
for green in range (0,7):
if red + yellow + green == 8 :
print(red,'\t',yellow,'\t',green)