Python 07
2017-12-13 本文已影响0人
Jack_Hsin
一. 课上代码
#打飞机框架
加载背景音乐
播放背景音乐(设置单曲循环)
我方飞机诞生
interval = 0
while True:
if 用户是否点击了关闭按钮:
退出程序
interval += 1
if interval == 50:
interval = 0
小飞机诞生
#执行50次循环诞生一个小飞机,不然没有间隔的话屏幕全部都是小飞机
小飞机移动一个位置
屏幕刷新
if 用户鼠标产生移动:
我方飞机中心位置 = 用户鼠标位置
屏幕刷新
if 我方飞机与小飞机发生肢体冲突:
我方挂,播放撞机音乐
修改我方飞机图案
打印"Game over."
停止背景音乐,最好淡出
课上练习题:按照100分制,90分以上成绩为A,80到90为B,60到80为C,60一下为D,
写一个程序,当用户输入分数,自动转换为ABCD的形式打印
#方案一
score = int(input("Please input a score:"))
if 100 >= score >= 90:
print('A')
if 90 > score >= 80:
print('B')
if 80 > score >= 60:
print('C')
if 60 > score >= 0:
print('D')
if score < 0 or score > 100:
print("Incorrect input!")
#方案二
score = int(input("Please input a score: "))
if 100 >= score >= 90:
print('A')
else:
if 90 > score >= 80:
print('B')
else:
if 80 > score >= 60:
print('C')
else:
if 60 > score >= 0:
print('D')
else:
print("Incorrect input!")
#方案三
score = int(input("Please input a score: "))
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("Incorrect input!")
#三元操作符
x, y = 4, 5
if x < y:
small = x
else:
small = y
#例子可以改进为
small = x if x < y else y
>>> assert 3 > 4
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
assert 3 > 4
AssertionError
>>> assert 4 > 3
#assert关键字称为“断言”,当这个关键字后边的条件为假的时候,
程序自动崩溃并抛出AssertionError的异常
#一般来说我们可以用它在程序中置入检查点,
当需要确保程序中的某个条件一定为真才能让程序正常工作的话,
assert关键字就非常有用了
>>> fovourite = 'FishC'
>>> for i in fovourite:
print(i, end = ' ')
F i s h C
>>> member = ['Jack', 'David', 'Chi', 'Hsin']
>>> for each in member:
print(each, len(member))
Jack 4
David 4
Chi 4
Hsin 4
>>> for each in member:
print(each, len(each))
Jack 4
David 5
Chi 3
Hsin 4
>>> range(5)
range(0, 5)
>>> list(range(5))
[0, 1, 2, 3, 4]
>>> for i in range(5):
print(i)
0
1
2
3
4
>>> for i in range(2, 9)
SyntaxError: invalid syntax
>>> for i in range(2, 9):
print(i)
2
3
4
5
6
7
8
>>> for i in range(1, 10, 2):
print(i)
1
3
5
7
9
#break的用法
bingo = 'Jack is a guy'
answer = input("Please input a statement: ")
while True:
if answer == bingo:
break
answer = input("Sorry, your input is increct, please try again: ")
print("Awesome!")
#continue的用法,此处务必反复琢磨,算出答案
for i in range(10):
if i % 2 != 0:
print(i)
continue
i += 2
print(i)
二. 测试题
- 假设有x = 1, y = 2, z = 3,请问如何快速将三个变量的值互相交换?
x, y, z = z, x, y
- 你听说过成员资格运算符吗?
#python有一个成员资格运算符,in,用于检查一个值是否在序列中,
如果在序列中返回True,否则返回False
>>> name = 'Jack'
>>> 'a' in name
True
>>> 'David' in name
False
- 什么情况下我们要使循环永远为真?
while True:
循环体
用于游戏实现,因为游戏只要运行着,就需要时刻接受用户输入,因此使用永远为真确保游戏在线。
操作系统也同样,时刻待命,永远为真的这个循环叫做消息循环
另外很多通讯服务器的客户端/服务器系统也是通过这样的原理来工作的
- 目测一下程序会打印什么?
while True:
while True:
break
print(1)
print(2)
break
print(3)
#会打印:
2
3
三. 动动手
- 课上代码打印成绩,根据一般的统计规律,一个班的成绩一般服从正态分布,也就是说平均成绩一般集中在70~80分之间,因此根据统计规律,我们还可以改进下程序以提高效率。
score = int(input("Please input a number: "))
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("Your input is incorrect!")
- 请将一下代码修改为三元操作符实现:
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)
- 如果一个3位数等于其各位数字的立方和,则称这个数为水仙花数。例如:153 = 1^3 + 5^3 + 3^3,因此153是一个水仙花数。编写一个程序,求100~999之间所有的水仙花数。
#个人代码
for num in range(100, 1000):
a = num // 100
b = num // 10 % 10
c = num % 10
if num == a ** 3 + b ** 3 + c ** 3:
print(num)
#精致代码
>>> a = [i ** 3 + j ** 3 + k ** 3 for i in range(1, 10) for j in range(0, 10) for k in range(0, 10) if i * 100 + j * 10 + k == i ** 3 + j ** 3 + k ** 3]
>>> print(a)
[153, 370, 371, 407]
>>>
- 有红、黄、蓝三种颜色的球,其中红球3个,黄球3个,绿球6个。先将这12个球混合放在一个盒子中,从中任意摸出8个球,编程计算摸出各种颜色搭配。
#个人代码
for i in range(2, 7):
for j in range(0, 4):
for k in range(0, 4):
if i + j + k == 8:
print('Green{} + yellow{} + red{} = eight balls'.format(i, j, k))
-
设计一个验证用户密码程序,用户只有三次机会输入错误,演示如下:
#个人代码
password = 'fish'
input_password = input("Please input a password: ")
times = 3
while '*' in input_password:
print("Your password should not contain '*', you have three choices!", end = ' ')
input_password = input("Please input a password: ")
while times > 0:
times = times - 1
if input_password == password:
print("Your password is correct, entering the program...")
break
else:
print('Your password is incorrect, you have {} times!'.format(times), end = ' ')
input_password = input("Please input a password: ")