TypeError:'int'类型的对象没有len() - Python/Pygame
我正在创建一个cookie clicker游戏,其中有一个表面显示我有多少个cookie。TypeError:'int'类型的对象没有len() - Python/Pygame
这是我的绘图文本代码。
def draw_text(self, text, font_name, size, color, x, y, align="nw"):
font = pg.font.Font(font_name, size)
text_surface = font.render(text, True, color)
text_rect = text_surface.get_rect()
self.screen.blit(text_surface, text_rect)
然后在我的游戏循环的新功能(一个新的游戏开始的时候),我创建了一个变量:
def new(self):
self.cookie_count = 0
然后终于,我有我的绘图功能。
def draw(self):
self.draw_text('Cookies: {}'.format(len(self.cookie_count)), self.cookie_font, 105, SKYBLUE, 325, HEIGHT * 3/4, align="nw")
pg.display.update()
然而,当我运行该程序,我得到:
TypeError: object of type 'int' has no len()
我是新来创建一个“比分反超”你可以称呼它。但为什么
self.draw_text('Cookies: {}'.format(len(self.cookie_count))
给我一个错误? self.cookie_count的长度如何不打印?
如果你只是想self.cookie_count
值,你可以只使用
self.draw_text('Cookies: {}'.format(self.cookie_count)
的len()
函数返回一个对象的项目数如数组和int
对象不起作用。
This是你在找什么。 len()
是一个容器功能,所以len(int)
提供了一个错误。使用len(str(self.cookie_count))
。希望有所帮助!
编辑:这将得到你的整数,包括一个负号数字的数量。对于浮点数,这也将计算小数点。对于小数字(小于10^16),使用起来更快
import math
digits = math.log10(n) + 1
但是这是不太可读的。大数字,舍入不精确给出了不正确的答案,并且字符串方法的简单性远远超过了它的速度不足。
如果您设置self.cookie_count = 0
,那么它的类型是整数。 len()
适用于列表,元组和字符串,但不适用于整数。
围绕内嵌代码片段使用反引号(')有助于使答案更清晰。 – robinCTS
您可以尝试删除len()
函数,因为您的self.cookie_count
已经是int类型。
所以你的答案应该是:
self.draw_text('Cookies: {}'.format(self.cookie_count))
恭喜你的第一个答案。给你一些好的提示:1)使用反引号(')引用函数,变量和其他代码片段内联。 2)在一行的开头使用四个空格来创建一个代码块。点击答案框右上角的帮助图标即可找到这些提示和其他有用的信息。 – robinCTS
我不太清楚你想用'len'做什么,但它不'int'工作。 'len'返回一个字符串的长度。 – TheDetective
'.format(self.cookie_count)' – Alexander