You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python Crash Course练手报错:三类函数相关问题求助

《Python Crash Course》代码练习问题解决方案

问题1:TypeError: check_events() takes 0 positional arguments but 1 was given

报错根源是game_functions.py里的check_events函数定义未接收参数,但调用时传入了ship对象。

修复方法:
修改game_functions.py中的check_events函数,添加ship参数并补充事件处理逻辑:

def check_events(ship):
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()
        # 处理飞船移动的按键事件
        elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_RIGHT:
                ship.moving_right = True
        elif event.type == pygame.KEYUP:
            if event.key == pygame.K_RIGHT:
                ship.moving_right = False

问题2:Pylint提示Too many positional arguments for function call

该提示由两处问题引发:

  • 重复调用pygame.display.set_mode:代码中先通过ai_settings参数创建屏幕,随后又调用一次传入固定尺寸,属于冗余操作,会触发参数匹配提示。
  • update_screen函数参数不匹配:调用时传入了ai_settings、screen、ship三个参数,需确保game_functions.py中该函数的定义对应接收这三个参数。

修复步骤:

  1. 删除代码中多余的pygame.display.set_mode((1200, 800))行,保留基于ai_settings的屏幕初始化即可。
  2. 确保update_screen函数定义与调用参数一致:
def update_screen(ai_settings, screen, ship):
    screen.fill(ai_settings.bg_color)
    ship.blitme()
    pygame.display.flip()

问题3:函数run_game标注为NotReturn

原因是run_game函数的while True无限循环内,递归调用了run_game(),导致函数永远无法正常返回,同时会引发栈溢出风险,Pylint因此标注为NotReturn。

修复方法:
删除while True循环内的run_game()调用,主循环本身已实现无限执行,无需递归调用函数。

修正后的完整代码

import sys
import pygame
from settings import Settings
from ship import Ship
import game_functions as gf

def run_game():
    # 初始化游戏并创建屏幕对象
    ai_settings = Settings()
    screen = pygame.display.set_mode((ai_settings.screen_width, ai_settings.screen_height))
    pygame.display.set_caption("Alien Invasion")

    # 创建飞船
    ship = Ship(screen)

    # 开始游戏主循环
    while True:
        gf.check_events(ship)
        ship.update()
        gf.update_screen(ai_settings, screen, ship)

run_game()

内容的提问来源于stack exchange,提问作者Noof

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 02:01:29