今天先是做了PK小游戏的进阶版,实现了英雄选择先后以及随机生成自己可选择的英雄和敌方英雄,每回合需要根据自己和对方的攻击血量进行比较,得到最适合的出战顺序,相当于田忌赛马的道理(当然可能生成的数据怎么排都是输,或者怎么排都是赢……):
# *_*coding:utf-8 *_*
import random
import time
def swap(hero1,hero2):
hero3 = hero1
hero1 = hero2
hero2 = hero3
return
player_list = ['盲僧','德玛西亚之力','光辉女郎','蛮王','男刀','艾希']
for i in range(3):
players = random.sample(player_list, 3)
player_life = {}
player_attack = {}
for i in range(3):
player_life[players[i]] = random.randint(200, 300)
player_attack[players[i]] = random.randint(30, 50)
for i in range(3):
print('-------------------------------')
print('''Your name: %s
Life : %d
Attack : %d''' % (players[i], player_life[players[i]], player_attack[players[i]]))
# enemy
enemy = random.sample(player_list, 3)
enemy_life = {}
enemy_attack = {}
for i in range(3):
enemy_life[enemy[i]] = random.randint(200, 300)
enemy_attack[enemy[i]] = random.randint(30, 50)
real_player = []
for i in range(3):
print('-------------------------------')
print('''Enemy name: %s
Life : %d
Attack : %d''' % (enemy[i], enemy_life[enemy[i]], enemy_attack[enemy[i]]))
for i in range(3):
print('For the %dth fight,which one you choose to do :' % (i+1))
print('''a.%s
b.%s
c.%s''' % (players[0],players[1],players[2]))
choose = input('Your choose:')
if choose == 'a':
real_player.append(players[0])
elif choose == 'b':
real_player.append(players[1])
else:
real_player.append(players[2])
for j in range(3):
while player_life[real_player[j]] > 0 and enemy_life[enemy[j]] > 0:
print('Your Name: %s\tLife: %d\tAttack: %d' % (real_player[j],player_life[real_player[j]],player_attack[real_player[j]]))
print('Enemy Name: %s\tLife: %d\tAttack: %d' % (enemy[j],enemy_life[enemy[j]],enemy_attack[enemy[j]]))
player_life[real_player[j]] = player_life[real_player[j]] - enemy_attack[enemy[i]]
enemy_life[enemy[j]] = enemy_life[enemy[j]] - player_attack[real_player[j]]
if player_life[real_player[j]] < 0 and enemy_life[enemy[j]] > 0:
print('%s lose! Enemy Win!' % real_player[j])
elif player_life[real_player[j]] > 0 and enemy_life[enemy[j]] < 0:
print('%s lose! You Win!' % enemy[j])
else:
print('Draw!')
time.sleep(3)
接下来开始今天的学习,首先是对前面学习的补充,Python的高级特性
①切片
列表中使用:
#举例以列表List[1,2,3,4,5,6,7,8,9,10]为例子
[:] #代表全部,即[1,2,3,4,5,6,7,8,9,10]
[0:5] #代表Lise[0]~List[4],即[1,2,3,4,5]
[2:] #代表List[2]到最后一个,即[3,4,5,6,7,8,9,10]
[:5] #代表List[0]到List[4],即[1,2,3,4,5]
重点来了!颠覆我C/C++代码观的东西出现了!我得知了’[]'中的数据可以是负数!代表的意思是倒数,如:
List[-1] #在前面那个前提下所代表的意思是:List[9],即10
有关’ : '的还有一个操作是:隔几个取一次。如下:
List[0:9:2] #代表List[0],List[2],List[4],List[6],List[8],即[1,3,5,7,9]
’ : ’ 的使用不仅仅在列表中,在字符串、元组等都可以使用
需要注意一点:切片切完之后得到的返回值任然是切片,如:
NewList = List[0:3]
print('NewList') #此时的输出为:[1,2,3]
②迭代
即循环:for
for 的使用可以有多个参数,如:
for i,j in [(1,2),(2,4),(3,9)]
print(x,y) #输出将为:1 2 2 4 3 9
接着是关于类与对象。Python里的类居然在没有对象的时候也可以直接调用类函数!震撼我妈!不过仔细想想也是,这里并非像C/C++中有 ‘变量类型 变量名’的命名方式,因此直接使用使用类来调用倒也正常。
Python中的类似乎没有共有和私有的概念。在类的定义中,如果类想使用本类中的属性值,就必须加上@classmethon(类方法),只有加上这个才能在类函数中使用类属性。然后在使用类属性时需要在类函数的参数中加上cls(代表class),在函数调用类属性时需要’cls. + 属性名’
先这样了