鱼C论坛

 找回密码
 立即注册
查看: 1236|回复: 10

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

[复制链接]
发表于 2021-8-21 19:04:16 | 显示全部楼层 |阅读模式

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

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

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

这个题是旧版教程37讲的课后题中的动动手,请大佬帮忙看看为什么会打印出each的地址出来,而不是在列表中的变量名?
1.png
最佳答案
2021-8-21 22:34:07
本帖最后由 大马强 于 2021-8-21 22:37 编辑

你这列表里存放的是类,你打印的话就是就这样的结果,那你想要的是啥结果?

                               
登录/注册后可看大图
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-8-21 19:28:30 | 显示全部楼层
列表什么样?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-21 19:35:26 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-21 19:36:00 | 显示全部楼层

大概就是这样
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-21 19:55:50 | 显示全部楼层

发全吧,你这代码改的,我看原题都看不出来哪个变量是干嘛的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

哈哈不好意思哥哥,我刚对答案,谢谢马上
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-21 19:59:16 | 显示全部楼层
  1. import random as r

  2. class Turtle:
  3.     brawn = 100
  4.     def __init__(self,x,y):
  5.         self.x = x
  6.         self.y = y

  7.     def recover(self):
  8.         self.brawn += 20
  9.         
  10.     def move(self,xrange,yrange):#需要传入两个列表
  11.         '需要传入可移动的范围参数'
  12.         direction = r.choice([-1,1,-2,2])# 1上,-1下,2左,-2右
  13.         if direction == 1:
  14.             d = r.choice([1,2])
  15.             if self.y + d <= yrange[1]:
  16.                 self.y += d
  17.             else:
  18.                 self.y = yrange[1]-(self.y+d-yrange[1])
  19.         if direction == -1:
  20.             d = r.choice([1,2])
  21.             if self.y - d >= yrange[0]:
  22.                 self.y -= d
  23.             else:
  24.                 self.y = yrange[0]+(d-self.y)
  25.         if direction == -2:
  26.             d = r.choice([1,2])
  27.             if self.x + d <= xrange[1]:
  28.                 self.x += d
  29.             else:
  30.                 self.x = xrange[1]-(self.x+d-xrange[1])
  31.         if direction == 2:
  32.             d = r.choice([1,2])
  33.             if self.x - d >= xrange[0]:
  34.                 self.x -= d
  35.             else:
  36.                 self.x = xrange[0]+(d-self.x)

  37.         self.brawn -= 1

  38. class Fish:
  39.     def __init__(self,x,y):
  40.         self.x = x
  41.         self.y = y
  42.     def move(self,xrange,yrange):#需要传入两个列表
  43.         '需要传入可移动的范围参数'
  44.         direction = r.choice([-1,1,-2,2])# 1上,-1下,2左,-2右
  45.         if direction == 1:
  46.             if self.y + 1 <= yrange[1]:
  47.                 self.y += 1
  48.             else:
  49.                 self.y = yrange[1]-(self.y+1-yrange[1])
  50.         if direction == -1:
  51.             if self.y - 1 >= yrange[0]:
  52.                 self.y -= 1
  53.             else:
  54.                 self.y = yrange[0]+(1-self.y)
  55.         if direction == -2:
  56.             if self.x + 1 <= xrange[1]:
  57.                 self.x += 1
  58.             else:
  59.                 self.x = xrange[1]-(self.x+1-xrange[1])
  60.         if direction == 2:
  61.             if self.x - 1 >= xrange[0]:
  62.                 self.x -= 1
  63.             else:
  64.                 self.x = xrange[0]+(1-self.x)

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


  69. t_fish = [turtle]
  70. for i in range(1,11):
  71.     fish_x = r.randint(0,10)
  72.     fish_y = r.randint(0,10)
  73.     exec('fish{} = Fish(fish_x,fish_y)'.format(i))
  74.     exec('t_fish.append(fish{})'.format(i))

  75. #游戏开始
  76. while 1:
  77.     movegay = r.choice(t_fish)
  78.     movegay.move([0,10],[0,10])
  79.     for each in t_fish[1:]:
  80.         if (each.x,each.y) == (turtle.x,turtle.y):
  81.             print("%s在(%d,%d)被吃掉啦!"%(each,each.x,each.y))
  82.             t_fish.remove(each)
  83.             turtle.recover()

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

  85.     if turtle.brawn == 0 or len(t_fish) == 1:
  86.         break
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-21 22:34:07 | 显示全部楼层    本楼为最佳答案   
本帖最后由 大马强 于 2021-8-21 22:37 编辑

你这列表里存放的是类,你打印的话就是就这样的结果,那你想要的是啥结果?

                               
登录/注册后可看大图

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
TGgan + 5 + 5 + 3 鱼C有你更精彩^_^

查看全部评分

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

使用道具 举报

 楼主| 发表于 2021-8-22 09:56:17 | 显示全部楼层
大马强 发表于 2021-8-21 22:34
你这列表里存放的是类,你打印的话就是就这样的结果,那你想要的是啥结果?

噢噢是这样啊,我还以为能打印出对象的名字
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-22 11:54:06 | 显示全部楼层
TGgan 发表于 2021-8-22 09:56
噢噢是这样啊,我还以为能打印出对象的名字

这个你要去手动设置了,小甲鱼也是手动设置的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-22 11:57:21 | 显示全部楼层
大马强 发表于 2021-8-22 11:54
这个你要去手动设置了,小甲鱼也是手动设置的

好的谢谢大佬哥
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-19 15:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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