鱼C论坛

 找回密码
 立即注册
查看: 2485|回复: 2

[已解决]37讲

[复制链接]
发表于 2018-12-19 19:40:03 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
课后题中:游戏编程:按以下要求定义一个乌龟类和鱼类并尝试编写游戏。(初学者不一定可以完整实现,但请务必先自己动手,你会从中学习到很多知识的^_^)qOUdQsH
O4wY6:=cn7AVNs_5kd?,o-
假设游戏场景为范围(x, y)为0<=x<=10,0<=y<=10
它们的移动方向均随机
乌龟的最大移动能力是2(Ta可以随机选择1还是2移动),鱼儿的最大移动能力是1
def move(self):
        # 随机计算方向并移动到新的位置(x, y)
        new_x = self.x + r.choice([1, 2, -1, -2])
        new_y = self.y + r.choice([1, 2, -1, -2])
        这是乌龟类中移动的方法的一部分,是不是每次移动,在x,y上都会发生移动
最佳答案
2018-12-20 08:26:22
1、乌龟的初始坐标是随机的,每次移动是在随机的choice上作加减。

2、假如你现在有个列表【1,2,3,4,5】5个数,你用for循环,循环一次减一个数。

for循环到第三次的时候,就只有两个数了,还怎么继续循环?

remove的原理是remove一个元素之后下一个元素自动补位,所以你五次循环只能循环三次。



而用切片复制的意义就在这。你可以for循环列表的复制体,然后去掉原始列表里面数据。

这样切片复制没动,而原始列表去除数据,for循环也可以继续下去。


你可以把下面代码拷贝进你IDLE试一下:

  1. list1 = [1,2,3,4,5]
  2. list2 = [6,7,8,9,10]


  3. for i in list1[:]:
  4.     list1.remove(i)
  5.     print("五次循环循环五次")


  6. for i in list2:
  7.     list2.remove(i)
  8.     print("五次循环只循环三次")
复制代码


小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-12-19 19:50:40 | 显示全部楼层
本帖最后由 ,逗号, 于 2018-12-19 19:54 编辑

for each_fish in fish[:]:
        if each_fish.move() == pos:
            # 鱼儿被吃掉了
            turtle.eat()
            fish.remove(each_fish)
            print("有一条鱼儿被吃掉了...")
还有这个,判断每条鱼,for each_fish in fish[:]如果改成for each_fish in fish,小甲鱼说迭代器中直接引用列表的数据会产生意想不到的问题,不太明白为什么会产生问题
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-20 08:26:22 | 显示全部楼层    本楼为最佳答案   
1、乌龟的初始坐标是随机的,每次移动是在随机的choice上作加减。

2、假如你现在有个列表【1,2,3,4,5】5个数,你用for循环,循环一次减一个数。

for循环到第三次的时候,就只有两个数了,还怎么继续循环?

remove的原理是remove一个元素之后下一个元素自动补位,所以你五次循环只能循环三次。



而用切片复制的意义就在这。你可以for循环列表的复制体,然后去掉原始列表里面数据。

这样切片复制没动,而原始列表去除数据,for循环也可以继续下去。


你可以把下面代码拷贝进你IDLE试一下:

  1. list1 = [1,2,3,4,5]
  2. list2 = [6,7,8,9,10]


  3. for i in list1[:]:
  4.     list1.remove(i)
  5.     print("五次循环循环五次")


  6. for i in list2:
  7.     list2.remove(i)
  8.     print("五次循环只循环三次")
复制代码


小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-23 07:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表