python学习之路

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)

二. 测试题

  1. 假设有x = 1, y = 2, z = 3,请问如何快速将三个变量的值互相交换?
x, y, z = z, x, y
  1. 你听说过成员资格运算符吗?
#python有一个成员资格运算符,in,用于检查一个值是否在序列中,
如果在序列中返回True,否则返回False
>>> name = 'Jack'
>>> 'a' in name
True
>>> 'David' in name
False
  1. 什么情况下我们要使循环永远为真?
while True:
    循环体
用于游戏实现,因为游戏只要运行着,就需要时刻接受用户输入,因此使用永远为真确保游戏在线。
操作系统也同样,时刻待命,永远为真的这个循环叫做消息循环
另外很多通讯服务器的客户端/服务器系统也是通过这样的原理来工作的
  1. 目测一下程序会打印什么?
while True:
    while True:
        break 
        print(1)
    print(2)
    break
print(3)
#会打印:
2
3

三. 动动手

  1. 课上代码打印成绩,根据一般的统计规律,一个班的成绩一般服从正态分布,也就是说平均成绩一般集中在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!")
  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
#三元符
small = x if(x < y and x < z) else (y if y < z else z)
  1. 如果一个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]
>>> 
  1. 有红、黄、蓝三种颜色的球,其中红球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))
  1. 设计一个验证用户密码程序,用户只有三次机会输入错误,演示如下:


#个人代码
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: ")
上一篇 下一篇

猜你喜欢

热点阅读