Python学习第三天

今天先是做了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. + 属性名’
先这样了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值