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

Python脚本运行无报错无法输出图像且plot无法识别max_range问题求助

问题修复方案

核心问题1:max_range无法识别警告

max_range是trajectory函数内部定义的局部变量,作用域仅局限于该函数内部,plot函数无权直接访问,因此VSCode会弹出无法解析的黄色提示。

核心问题2:无图像输出

主程序仅调用了trajectory函数计算轨迹数据,但既没有存储函数返回的坐标值,也没有调用plot函数触发绘图逻辑,因此不会生成图像。


完整修复代码

import argparse
import logging
import math
import os
import sys
import tkinter as tk
from tkinter import filedialog, PhotoImage

import matplotlib.pylab as plt
import numpy as np

def trajectory(x0: int, y0: int, v0: int, theta: int, g: float) -> tuple:
    launch_angle = (theta * (math.pi / 180)) # 将发射角转换为弧度
    max_range = int(((v0**2) / g) * (math.sin(2 * launch_angle))) # 计算x方向射程
    x_step = int(max_range / 100) # 取100个采样点计算步长
    x_values = []
    for value in range(x0, max_range, x_step):
        x_values.append(value)
    
    y_values = []
    for x in x_values:
        y_values.append(((x * math.tan(launch_angle)) - g / (2 * (v0**2) *
         (math.cos(launch_angle))**2) * x**2) + y0)
    # 新增返回max_range供绘图使用
    return (x_values, y_values, max_range)


def projectilemotion(x0: int, y0: int, v0: int, theta: int, g: float):
    """projectlemotion需要5个用户输入参数,如下所示:
    参数:
        x0: x方向初始位移,单位[m]
        y0: y方向初始位移,单位[m]
        v0: 抛射体初始速度,单位[m/s]
        theta: 抛射角,单位[度]
        g: 地球或月球的重力加速度,单位[m/s**2]
    返回:
        根据上述参数定义的条件绘制抛射体轨迹,计算以下输出:
        xPeak: 达到最大高度yPeak时的x值,单位[m]
        yPeak: y方向最大位移,单位[m]
        maxRange: x方向最大位移,单位[m]
    抛出:
        Error:
    """ 
    pass


# 新增max_range作为入参
def plot(x_values, y_values, max_range):
    plt.plot(x_values, y_values)
    plt.axis([0, max_range, 0, max(y_values)])
    plt.xlabel('射程 [m]')
    plt.ylabel('高度 [m]')
    plt.show()


if __name__ == '__main__':
    # 接收轨迹计算的返回值,调用绘图
    x_vals, y_vals, max_r = trajectory(0, 0, 940, 45, 9.81)
    plot(x_vals, y_vals, max_r)

补充说明

空的projectilemotion函数目前不影响运行,后续开发GUI功能时可以在该函数内补充参数接收、逻辑调用的相关代码即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 13:24:02