鱼C论坛

 找回密码
 立即注册
查看: 2865|回复: 4

[已解决]AttributeError: 'str' object has no attribute 'buttonbox'

[复制链接]
发表于 2017-7-18 13:33:58 | 显示全部楼层 |阅读模式
5鱼币
问题是这样的:
        看了小甲鱼老师第37讲的课后作业(乌龟吃鱼),我想自己修改一下。
        修改后如下:
  1. import random as r
  2. import easygui as g

  3. legal_x = [0,10]
  4. legal_y = [0,10]

  5. class Turtle:

  6.     def __init__(self):
  7.         
  8.         self.power = 100
  9.         self.x = r.randint(legal_x[0],legal_x[1])
  10.         self.y = r.randint(legal_y[0],legal_y[1])

  11.     def move(self,direction):

  12.         if direction == '向前':
  13.             new_y = self.y + 1
  14.             if new_y > legal_y[1]:
  15.                 self.y = legal_y[1] - (new_y - legal_y[1])
  16.             else:
  17.                 self.y = new_y
  18.                
  19.         if direction == '向后':
  20.             new_y = self.y - 1
  21.             if new_y < legal_y[0]:
  22.                 self.y = legal_y[0] - (new_y - legal_y[0])
  23.             else:
  24.                 self.y = new_y
  25.                
  26.         if direction == '向左':
  27.             new_x = self.x + 1
  28.             if new_x > legal_x[1]:
  29.                 self.x = legal_x[1] - (new_x - legal_x[1])
  30.             else:
  31.                 self.x = new_x
  32.                
  33.         if direction == '向右':
  34.             new_x = self.x - 1
  35.             if new_x < legal_x[0]:
  36.                 self.x = legal_x[0] - (new_x - legal_x[0])
  37.             else:
  38.                 self.x = new_x

  39.         self.power -= 1

  40.         return (self.x,self.y)

  41.     def eat(self):

  42.         self.power += 20

  43.         if self.power > 100:
  44.             self.power = 100

  45. class Fish:

  46.     def __init__(self):
  47.         
  48.         self.x = r.randint(legal_x[0],legal_x[1])
  49.         self.y = r.randint(legal_y[0],legal_y[1])

  50.     def move(self):

  51.         new_x = self.x + r.choice([-1,0,1])
  52.         new_y = self.y + r.choice([-1,0,1])

  53.         if new_x < legal_x[0]:
  54.             self.x = legal_x[0] - (new_x - legal_x[0])
  55.         elif new_x > legal_x[1]:
  56.             self.x = legal_x[1] - (new_x - legal_x[1])
  57.         else:
  58.             self.x = new_x

  59.         if new_y < legal_y[0]:
  60.             self.y = legal_y[0] - (new_y - legal_y[0])
  61.         elif new_y > legal_y[1]:
  62.             self.y = legal_y[1] - (new_y - legal_y[1])
  63.         else:
  64.             self.y = new_y

  65.         return (self.x,self.y)


  66. turtle = Turtle()
  67. fish = []
  68. for i in range(10):
  69.     newfish = Fish()
  70.     fish.append(newfish)

  71. a = '嗯~哼~哼哼哼~~~'
  72. b = '小乌龟,爬呀爬~~~'
  73. c = '小鱼小鱼快出来~~~'
  74. d = '好无聊啊~~~'
  75. e = '妈妈在哪里呢~~~'
  76. f = '龟生的意义是什么。。。'
  77. g = '有点饿~~~'
  78. h = '谁来陪我玩。。。'

  79. say = r.choice([a,b,c,d,e,f,g,h])

  80. while True:

  81.    
  82.     if not len(fish):
  83.         g.msgbox('鱼儿被吃完了,游戏结束。')
  84.         break
  85.     if not turtle.power:
  86.         g.msgbox('乌龟体力耗尽,游戏结束。')
  87.         break
  88.    
  89.     direction = g.buttonbox(say+'乌龟还有%d点体力\n\n要怎么游呢?'%turtle.power,choices = ('向前','向后','向左','向右','不玩了'))

  90.     if direction == '不玩了':
  91.         break
  92.    
  93.     pos = turtle.move(direction)
  94.    
  95.     for each_fish in fish[:]:
  96.         if each_fish.move() == pos:
  97.             fish.remove(each_fish)
  98.             turtle.eat()
  99.             g.msgbox('乌龟发现了一条鱼儿\n乌龟吃掉了鱼儿\n还有%d条鱼'%(len(fish)))

复制代码


运行以后出现这个问题:(不会插入图片)
Traceback (most recent call last):
  File "C:\Users\Administrator\Desktop\测试.py", line 112, in <module>
    direction = g.buttonbox(say+'乌龟还有%d点体力\n\n要怎么游呢?'%turtle.power,choices = ('向前','向后','向左','向右','不玩了'))
AttributeError: 'str' object has no attribute 'buttonbox'

请问改怎样解决?
最佳答案
2017-7-18 13:33:59
python提示字符串没有buttonbox方法

是这样的,你向import easygui as g
但是又g = '有点饿~~~'覆盖了g
是变量名相同引起的~

捕获.PNG
TIM截图20170718132956.jpg

最佳答案

查看完整内容

python提示字符串没有buttonbox方法 是这样的,你向import easygui as g 但是又g = '有点饿~~~'覆盖了g 是变量名相同引起的~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-7-18 13:33:59 | 显示全部楼层    本楼为最佳答案   
python提示字符串没有buttonbox方法

是这样的,你向import easygui as g
但是又g = '有点饿~~~'覆盖了g
是变量名相同引起的~

捕获.PNG
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-7-18 13:53:19 | 显示全部楼层
MSK 发表于 2017-7-18 13:46
python提示字符串没有buttonbox方法

是这样的,你向import easygui as g

老哥。。。
我tm好感动,终于解决了,我想了三个小时了,头都要炸了。。。
都不知道怎么感谢你。
真的谢谢,谢谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-7-18 13:55:03 | 显示全部楼层
秦无念 发表于 2017-7-18 13:53
老哥。。。
我tm好感动,终于解决了,我想了三个小时了,头都要炸了。。。
都不知道怎么感谢你。

不谢不谢,you are welcome~
以后起变量名的时候注意啦~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-7-18 13:57:15 | 显示全部楼层
MSK 发表于 2017-7-18 13:55
不谢不谢,you are welcome~
以后起变量名的时候注意啦~

吃这一记锤,怎么着都记着了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-24 13:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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