TGgan 发表于 2021-8-21 19:04:16

大佬们,可以请问一下这里print出的each为什么是以地址的形式吗55555谢谢了

本帖最后由 TGgan 于 2021-8-21 19:09 编辑

这个题是旧版教程37讲的课后题中的动动手,请大佬帮忙看看为什么会打印出each的地址出来,而不是在列表中的变量名?

suchocolate 发表于 2021-8-21 19:28:30

列表什么样?

TGgan 发表于 2021-8-21 19:35:26

suchocolate 发表于 2021-8-21 19:28
列表什么样?

TGgan 发表于 2021-8-21 19:36:00

suchocolate 发表于 2021-8-21 19:28
列表什么样?

大概就是这样{:5_96:}

大马强 发表于 2021-8-21 19:55:50

TGgan 发表于 2021-8-21 19:36
大概就是这样

发全吧,你这代码改的,我看原题都看不出来哪个变量是干嘛的

TGgan 发表于 2021-8-21 19:58:06

大马强 发表于 2021-8-21 19:55
发全吧,你这代码改的,我看原题都看不出来哪个变量是干嘛的

哈哈不好意思哥哥,我刚对答案,谢谢马上

TGgan 发表于 2021-8-21 19:59:16

import random as r

class Turtle:
    brawn = 100
    def __init__(self,x,y):
      self.x = x
      self.y = y

    def recover(self):
      self.brawn += 20
      
    def move(self,xrange,yrange):#需要传入两个列表
      '需要传入可移动的范围参数'
      direction = r.choice([-1,1,-2,2])# 1上,-1下,2左,-2右
      if direction == 1:
            d = r.choice()
            if self.y + d <= yrange:
                self.y += d
            else:
                self.y = yrange-(self.y+d-yrange)
      if direction == -1:
            d = r.choice()
            if self.y - d >= yrange:
                self.y -= d
            else:
                self.y = yrange+(d-self.y)
      if direction == -2:
            d = r.choice()
            if self.x + d <= xrange:
                self.x += d
            else:
                self.x = xrange-(self.x+d-xrange)
      if direction == 2:
            d = r.choice()
            if self.x - d >= xrange:
                self.x -= d
            else:
                self.x = xrange+(d-self.x)

      self.brawn -= 1

class Fish:
    def __init__(self,x,y):
      self.x = x
      self.y = y
    def move(self,xrange,yrange):#需要传入两个列表
      '需要传入可移动的范围参数'
      direction = r.choice([-1,1,-2,2])# 1上,-1下,2左,-2右
      if direction == 1:
            if self.y + 1 <= yrange:
                self.y += 1
            else:
                self.y = yrange-(self.y+1-yrange)
      if direction == -1:
            if self.y - 1 >= yrange:
                self.y -= 1
            else:
                self.y = yrange+(1-self.y)
      if direction == -2:
            if self.x + 1 <= xrange:
                self.x += 1
            else:
                self.x = xrange-(self.x+1-xrange)
      if direction == 2:
            if self.x - 1 >= xrange:
                self.x -= 1
            else:
                self.x = xrange+(1-self.x)

#乌龟的初始位置
turtle_x = r.randint(0,10)
turtle_y = r.randint(0,10)
turtle = Turtle(turtle_x,turtle_y)


t_fish =
for i in range(1,11):
    fish_x = r.randint(0,10)
    fish_y = r.randint(0,10)
    exec('fish{} = Fish(fish_x,fish_y)'.format(i))
    exec('t_fish.append(fish{})'.format(i))

#游戏开始
while 1:
    movegay = r.choice(t_fish)
    movegay.move(,)
    for each in t_fish:
      if (each.x,each.y) == (turtle.x,turtle.y):
            print("%s在(%d,%d)被吃掉啦!"%(each,each.x,each.y))
            t_fish.remove(each)
            turtle.recover()

    print("乌龟的体力还剩余%d"%(turtle.brawn))

    if turtle.brawn == 0 or len(t_fish) == 1:
      break

大马强 发表于 2021-8-21 22:34:07

本帖最后由 大马强 于 2021-8-21 22:37 编辑

你这列表里存放的是类,你打印的话就是就这样的结果,那你想要的是啥结果?
https://static01.imgkr.com/temp/c28d4560c56945c488e718cc15083d22.jpg

TGgan 发表于 2021-8-22 09:56:17

大马强 发表于 2021-8-21 22:34
你这列表里存放的是类,你打印的话就是就这样的结果,那你想要的是啥结果?

噢噢是这样啊,我还以为能打印出对象的名字{:5_108:}

大马强 发表于 2021-8-22 11:54:06

TGgan 发表于 2021-8-22 09:56
噢噢是这样啊,我还以为能打印出对象的名字

这个你要去手动设置了,小甲鱼也是手动设置的

TGgan 发表于 2021-8-22 11:57:21

大马强 发表于 2021-8-22 11:54
这个你要去手动设置了,小甲鱼也是手动设置的

好的谢谢大佬哥{:5_109:}
页: [1]
查看完整版本: 大佬们,可以请问一下这里print出的each为什么是以地址的形式吗55555谢谢了