Python升级打怪(5)

链式调用:用一个函数的返回值作为另外一个函数参数

嵌套调用:一个函数在另一个函数定义里面,而调用该定义函数既可以使用在其里面的函数

在Pycharm中调试器的左下角能够看到函数之间的"调用栈"

调用栈里面描述了当前这个代码的函数之间,调用关系是什么.

每一层这个调用关系就称为"函数的栈帧",每个函数的局部变量就在栈帧里面体现的 

每一层栈帧选中之后,就能看到其中的局部变量,每一个函数的局部变量就是体现在相应的栈帧中

调用函数则生成相应的局部变量;函数结束则对应的栈帧消亡了。

变量本质就是一块内存空间,每个变量就是保存在相应的栈帧中,每个栈帧保存在内存上。

函数递归:函数自己调用自己。分析递归代码时,可用1.画图2.调试器来思考,缺点就是执行过程中非常繁琐,难以理解,递归代码容易出现"栈溢出"的情况。"栈溢出"指的是调用栈3.递归代码一般都是可以转化成等价的循环代码的,并且循环的版本通常运行速度要比递归的版本更有优势(因为递归的调用需要开销时间)递归优点是代码简洁!!

在Python当中可以支持默认参数值(即函数的形参列表可以上默认参数值,但不可以放在前面或者中间,只能放在后面)

关键字传参:按照形参的名字进行传参!非常明显的告诉程序员自己的值给哪个形参,另外可以无视形参和实参的顺序。

位置参数和关键词字参数还能混着用,只不过混着用的时候要求位置参数在前面,关键词参数在后面。

关键字参数,一般也是搭配默认参数来使用的。

一个函数可以提供很多的参数来实现对这个函数的内部功能做出一些调整设定。

列表和元组:可以用一个变量表示多个数据。

列表的数据可以变;元组的数据不能变。若强行改变元组的数据,只有舍弃原来的元组重新搞新的元组。[]表示一个空列表  list()也可以表示一个空列表.

len内联函数可以传字符串、列表、元组、字典、自定义的类,本质就是Python支持动态类型

切片操作:通过下标操作一次性取出里面的第1个元素,  而通过切片则是一次可以取出一组连续的元素,相当于得到一个子列表.

[   :  ]里面有两个数字,表示一段区间. 右边的数值表示开始区间的下标,左边的数值表示结束区间的下标,但记住是左闭右开.

在这里面可以省略边界,前边界和后边界也可以,两个边界同时省略.

省略前边界说明表示取到第1个元素到下标为最左边数字的元素,但取不到最左边的元素哦,因为左闭右开。

省略后边界说明从下标为右边数字为始的后面所有元素。

省略两个边界表示直接取整个列表。

注意[ :  ]这两个数字 不存在越界之说。例如最左边设100,但列表只有10个数据,则直接取到第10个元素,即结束了。

[  :  :  ]其实还有第3个参数表示步长,步长可以为负数表示从后往前取。[1:5:2]表示从下标为1的元素到下标为5的元素,以步长为2开始取.

切片操作是一个高效的操作方法,进行切片的时候只是取出了原有列表中的一个部分,不涉及"数据拷贝"

遍历: 把一个可迭代对象中(例如列表、元组、range)的所有对象都依次取出来,并进行某种操作.

一般使用for循环遍历也可以使用while循环通过下标遍历.4f6680cdfc3b4df99a6b8d1f7fce0f35.jpeg

 

 

 

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
以下是一个简单的主角打升级的代码示例,使用Python语言实现: ```python import random player_level = 1 player_exp = 0 player_max_exp = 10 player_hp = 100 player_max_hp = 100 player_attack = 10 monster_level = 1 monster_hp = 50 monster_max_hp = 50 monster_attack = 5 print("你遇到了一个等级为", monster_level, "的物,准备战斗!") while player_hp > 0 and monster_hp > 0: # 玩家击物 damage = random.randint(player_attack - 2, player_attack + 2) monster_hp -= damage print("你攻击了物,造成了", damage, "点伤害。物剩余血量:", monster_hp) # 物攻击玩家 damage = random.randint(monster_attack - 2, monster_attack + 2) player_hp -= damage print("物攻击了你,造成了", damage, "点伤害。你剩余血量:", player_hp) # 判断战斗结果 if player_hp <= 0: print("你被物击败了,游戏结束。") break if monster_hp <= 0: print("你击败了物,获得了", monster_level * 10, "点经验值。") player_exp += monster_level * 10 if player_exp >= player_max_exp: player_level += 1 player_max_exp *= 2 player_hp = player_max_hp player_attack += 5 print("恭喜你升级了!当前等级为", player_level, ",最大生命值增加到", player_max_hp, ",攻击力增加到", player_attack, "。") # 生成新的物 monster_level += 1 monster_max_hp *= 2 monster_hp = monster_max_hp monster_attack += 5 print("你遇到了一个等级为", monster_level, "的物,准备战斗!") ``` 在这个代码中,玩家和物都有等级、生命值、攻击力等属性。玩家和物每次攻击都会随机产生一定的伤害值,直到一方的生命值降为0为止。如果玩家胜利,就会获得一定的经验值,并有可能升级升级后,玩家的属性会得到提升,同时会生成一个等级更高的新物。如果玩家失败,则游戏结束。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值