pythonday06
## 总结课上做的一些小例题和一些好玩的作业题小实例
第一题:加载进度条的程序代码。
#一行加载,开始1%到结束100%:
import time
class tbl():
def __init__(self):
self.count = 1
def jindu(self):
for i in range(1,101):
res = '#'*i
time.sleep(0.5)
print('\r%s %d%%' %(res,i),end="",flush=True)
if __name__ == "__main__":
tbl = tbl()
tbl.jindu()
第二题:计算学费问题。
def tbl():
money = 10000
sum = 0
for i in range(14):
money = money + money * 0.05
if i == 10:
print('十年后的学费为: %.2f' %money)
if i > 10:
sum += money
print('大学四年的总学费为: %.2f' %sum)
tbl()
第三题:编写程序找出在100和1000之间所有被5和6同时整除的数,每行显示十个数。这些数被一个空格隔开。
def tbl():
sum = 0
for i in range(100,1001):
if i % (5 * 6) == 0:
print(i,end=' ')
sum += 1
if sum % 10 == 0:
print()
tbl()
第四题:数列求和问题。
sum = 0
for i in range(3,100,2):
sum += (i-2)/i
print('数列之和为:',sum)
第五题:组合数问题。
def tbl():
a = 0
for i in range(1,8):
for j in range(1,8):
if i != j:
a += 1
print(i,j,end=' ')
print()
print('组合数有: %d' %a)
tbl()
第六题:网易云音乐软件自动播放音乐实例。
#首先要在控制台(cmd)用pip下载一个pygame:
import time
import pygame
file = r'E:/CloudMusic/薛之谦 - 这么久没见.flac'
pygame.mixer.init()
print("播放音乐")
track = pygame.mixer.music.load(file)
pygame.mixer.music.play()
time.sleep(5000)
pygame.mixer.music.stop()
#用python代码实现音乐软件来自动播放已下载的音乐(这里用的是网易云音乐)
第七题:小游戏。
1.案例的目的:
(1)理解面像对像的基本概念。
(2)掌握类和对象的定义和使用。
(3)掌握方法的使用 案例需求: 在全世界风靡的反恐精英是一个以团队合作为主的第一人称射击游戏,简称cs。根据面像对象的编程思想,模拟实现一个战士开枪射击敌人的场景。 在上述的场景中,有战士(玩家),敌人,枪共三个对象,其中枪又包括弹夹,子弹两个对象。
2.场景中这几个对象间的关系如下:
(1)战士和敌人属于人类,他们默认的血量有100. (2)战士射击时必须保障所持抢中的弹夹有子弹,并且每发射一次,弹夹中的子弹的数量就会减一;
(3)战士射出的子弹击中了敌人,敌人由于子弹的杀伤力二出现掉血的现象,即每击中一次,敌人的血量就会减少5. 流程图如下: 创建战士对象——>创建弹夹对象———>创建子弹对象——>弹夹上子弹——>创建枪的对象——>枪安装弹夹——>出现敌人——>士兵拿枪——>士兵开枪——>士兵再次开枪 案例分析 面像对象是最重要的是类的设计,所以对案例分析的时候,首先根据“名词提炼法”,分析业务流程中需要设计的类,然后分析所拥有的属性与方法。
3.根据这个模拟的场景,我们可以分析出来的类具体如下。
(1)士兵和敌人类 属性:姓名(name),血量(blood),枪(gun)。
(2)子弹类 属性:杀伤力。 方法:伤害敌人(让敌人掉血)
(3)弹夹类 属性:容量(子弹储存的在最大值),当前保存的子弹。 方法:保存子弹(安装子弹),弹出子弹(开枪的时候)。
(4)枪类 属性:弹夹(默认没有弹夹,需要安装)。 方法:连接弹夹,射子弹。
class Person:
def __init__(self,name):
#姓名
self.name = name
#血量
self.blood = 100
#给弹夹安装子弹
def installBullet(self,clip,bullet):
#弹夹放置子弹
clip.saveBullet(bullet)
#安装弹夹
def installClip(self,gun,clip):
#给枪安装弹夹
gun.mountingClip(clip)
#拿枪
def takeGun(self,gun):
self.gun = gun
#开火
def fire(self,enemy):
self.gun.shoot(enemy)
#显示person
def __str__(self):
return self.name + "剩余血量:" + str(self.blood)
#掉血
def loseBlood(self,damage):
self.blood -= damage
class Clip:
def __init__(self,capacity):
self.capacity = capacity
self.currentList = []
#安装子弹
def saveBullet(self,bullet):
#判断子弹是否装满
if len(self.currentList) < self.capacity:
self.currentList.append(bullet)
#显示弹夹信息
def __str__(self):
return "弹夹当前的数量为:" + str(len(self.currentList))+"/"+str(self.capacity)
#射出子弹
def shotBullet(self):
#判断是否有子弹
if len(self.currentList) > 0:
#子弹减1
self.currentList.pop()
return bullet
else:
return None
class Bullet:
def __init__(self,damage):
self.damage = damage
#子弹伤害方法
def hurt(self,enemy):
enemy.loseBlood(self.damage)
pass
class Gun:
def __init__(self):
self.clip = None
def __str__(self):
if self.clip:
return "枪有弹夹"
else:
return "枪没有弹夹"
#子弹连接弹夹
def mountingClip(self,clip):
if not self.clip:
self.clip = clip
#射击
def shoot(self,enemy):
bullet = self.clip.shotBullet()
if bullet:
bullet.hurt(enemy)
else:
print("没有子弹了,放了空枪。。。")
soldier = Person("老王")
clip = Clip(20)
print(clip)
i = 0
#装子弹
while i<5:
bullet = Bullet(5)
soldier.installBullet(clip,bullet)
i += 1
print(clip)
gun = Gun()
print(gun)
soldier.installClip(gun,clip)
print(gun)
enemy = Person("敌人")
print(enemy)
soldier.takeGun(gun)
soldier.fire(enemy)
print(clip)
print(enemy)
soldier.fire(enemy)
print(clip)
print(enemy)