TypeError:切片索引必须是整数或None,或者具有__index__方法(图书示例不起作用)



最近我拿起了我的工作经验同事送给我的一本书,学习Pygame。问题是这本书是2007年的,书中使用了python 2.4和Pygame 1.7.1,所以我遇到了一些问题,我已经能够自己解决了,但由于我现在进入了Pygame的章节,这对我来说是一个全新的领域,python编码比我习惯的稍微复杂一些。我以前的经验是我在学校里做的,也是我和我的工作经验专家所做的,所以我对编程还是相当陌生的。

我遇到的错误是:

Traceback (most recent call last):
File "D:/python_repository/Pygame_projects_book/Message_Queue.py", line 17, in <module>
event_text = event_text[-SCREEN_SIZE[1] / font_height:]
TypeError: slice indices must be integers or None or have an __index__ method

这是造成问题的代码:

event = pygame.event.wait()
event_text.append(str(event))
event_text = event_text[-SCREEN_SIZE[1] / font_height:]

为了简单起见,下面是这本书的全部列表:

import pygame
from pygame.locals import *
from sys import exit
pygame.init()
SCREEN_SIZE = (640, 480)
screen = pygame.display.set_mode(SCREEN_SIZE, 0, 32)
font = pygame.font.SysFont("arial", 16);
font_height = font.get_linesize()
event_text = []
while True:
event = pygame.event.wait()
event_text.append(str(event))
event_text = event_text[-SCREEN_SIZE[1] / font_height:]
if event.type == QUIT:
exit()
screen.fill((255, 255, 255))
y = SCREEN_SIZE[1] - font_height
for text in reversed(event_text):
screen.blit(font.render(text, True, (0, 0, 0)), (0, y))
y -= font_height
pygame.display.update()

由于我还在学习,我不知道该如何处理这个错误。感谢您的帮助,并可能解释问题的原因,以便我从中吸取教训。谢谢。

替换行

event_text = event_text[-SCREEN_SIZE[1] / font_height:]

带有

event_text = event_text[-SCREEN_SIZE[1] // font_height:]

要使用floor除法,请确保除法返回整数而不是浮点值。

最新更新