Python,len()用法报错

Python从入门到实践
项目1
判断aliens(编组)是否为0是报错

img

目前看是数据类型不对。你看看上面给你报错的这些行的代码有没有问题。然后再debug看一下,这些位置的数据类型,基本就可以了

img

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7765459
  • 这篇博客也不错, 你可以看下Python中len的使用方法
  • 除此之外, 这篇博客: 《python编程:从入门到实践》游戏一:外星人射击,代码详解及效果中的 alien.py 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:
    """外星人的相关数据"""
    import pygame
    from pygame.sprite import Sprite
    
    
    class Alien(Sprite):
        def __init__(self, ai_settings, screen):
            super(Alien, self).__init__()  # 继承pygame中的Sprite
            self.screen = screen
            self.ai_settings = ai_settings
    
            self.image = pygame.image.load('images/alien.png')  # 加载外星人的图像
            self.rect = self.image.get_rect()  # 获取该图像的rect对象
            # 设置图像的位置(即x,y值)
            self.rect.x = self.rect.width  # 设置图像的横坐标为图像的宽
            self.rect.y = self.rect.height  # 设置图像的纵坐标为图像的高(即将图像放在屏幕左上角(0,0)点)
            self.x = float(self.rect.x)  # rect对应值只能为整数,这里将其转为字符串
    
        def blitme(self):
            self.screen.blit(self.image, self.rect)  # 将该外星人图像移到屏幕中
    
        def update(self):
            # 外星人每一次移动都是在刷新屏幕
            self.x += (self.ai_settings.alien_speed_factor * self.ai_settings.fleet_direction)  # 图像的横坐标等于速度乘以方向,方向1为右,-1为左
            self.rect.x = self.x
    
        def check_edges(self):
            # 判断是否碰到屏幕边缘,碰到就改变方向
            screen_rect = self.screen.get_rect()  # 获取屏幕的rect对象
            if self.rect.right >= screen_rect.right:
                return True  # 图像的右边缘超出了屏幕右边缘返回True
            elif self.rect.left <= 0:
                return True  # 图像的左边缘小于0返回True,因为屏幕远点在左上角,左边缘为0
    
    
  • 您还可以看一下 李杰老师的PYTHON并发编程(三)课程中的 复习小节, 巩固相关知识点

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^