渣渣熊 发表于 2021-2-6 10:50:35

关于课后作业运行代码无反应的问题

今天打了一遍甲鱼老师的代码 发现无反应 不知道为什么 请各位帮忙解答以下为什么?
这个是我的代码和截图
https://fishc.com.cn/forum.php?mod=image&aid=139613&size=300x300&key=59ab6a3a63a5d2fc&nocache=yes&type=fixnone
自己的代码.zip

这个是甲鱼老师的代码和截图https://fishc.com.cn/forum.php?mod=image&aid=139615&size=300x300&key=5378e0dab001f371&nocache=yes&type=fixnone



甲鱼老师的代码.zip

逃兵 发表于 2021-2-6 10:50:36

第82行往后,差了一个缩进
while True:
    if not len(fish):
      print("鱼儿都吃完了,游戏结束!")
      break
    if not turtle.power:
      print("乌龟体力耗尽,挂掉了!")
      break

      pos = turtle.move()
      #在迭代器中删除列表元素是非常危险的,经常会出现意想不到的问题,因为迭代器是直接引用列表的数据进行引用
      #在这里我们吧列表拷贝给迭代器,然后对愿列表进行删除操作就不会有问题了
      for each_fish in fish[:]:
            if each_fish.move() == pos:
                #鱼儿被吃掉了
                turtle.eat()
                fish.remmove(each_fish)
                print("有一条鱼被吃掉了...")

修改为

while True:
    if not len(fish):
      print("鱼儿都吃完了,游戏结束!")
      break
    if not turtle.power:
      print("乌龟体力耗尽,挂掉了!")
      break

    pos = turtle.move()
    # 在迭代器中删除列表元素是非常危险的,经常会出现意想不到的问题,因为迭代器是直接引用列表的数据进行引用
    # 这里我们把列表拷贝给迭代器,然后对原列表进行删除操作就不会有问题了^_^
    for each_fish in fish[:]:
      if each_fish.move() == pos:
            # 鱼儿被吃掉了
            turtle.eat()
            fish.remove(each_fish)
            print("有一条鱼儿被吃掉了...")

第33行
            self.powwer -= 1
改为
            self.power -= 1

渣渣熊 发表于 2021-2-6 10:53:49

不太会在论坛发帖子 不好意思

图片1.png是甲鱼老师的代码图片
图片2.png是我的的代码图片

我的代码和甲鱼老师的代码已加压缩文件

洋洋痒 发表于 2021-2-6 11:04:58

{:5_109:}对比一下哪里不一样不就知道了嘛

渣渣熊 发表于 2021-2-6 11:05:39

洋洋痒 发表于 2021-2-6 11:04
对比一下哪里不一样不就知道了嘛

我对比了好几遍   我真不知道啊{:10_266:}

洋洋痒 发表于 2021-2-6 11:08:45

1 self.power = (100) 把括号去掉
2self.powwer -= 1
            #返回移动后的新位置   powwer改成power
3 fish.remmove(each_fish)
                print("有一条鱼被吃掉了...")         remmove改成remove

4最大的一个错误就是最后一段话缩进错了
             pos = turtle.move()
      #在迭代器中删除列表元素是非常危险的,经常会出现意想不到的问题,因为迭代器是直接引用列表的数据进行引用
      #在这里我们吧列表拷贝给迭代器,然后对愿列表进行删除操作就不会有问题了
      for each_fish in fish[:]:
            if each_fish.move() == pos:
                #鱼儿被吃掉了
                turtle.eat()
                fish.remmove(each_fish)
                print("有一条鱼被吃掉了...")应该和上边的if语句对齐
你这样写永远不会执行
               

渣渣熊 发表于 2021-2-6 11:08:48

@不二如是 @hhjdsd

洋洋痒 发表于 2021-2-6 11:10:02

因为你这样写最后while循环里只有两个if语句,条件都不符合,所以陷入死循环

渣渣熊 发表于 2021-2-6 11:13:56

洋洋痒 发表于 2021-2-6 11:10
因为你这样写最后while循环里只有两个if语句,条件都不符合,所以陷入死循环

哇哦 我是刚学的语法错误了感谢感谢
页: [1]
查看完整版本: 关于课后作业运行代码无反应的问题