类型错误:/ 不支持的操作数类型:“float”和“list”,无法解析

bhj*_*hjh 0 python range

我正在尝试在 python 中生成一个图来确定行星的速度,V = sqrt(GM/r)。我的方法是这样的:

我可以为 'r' 生成几百个点:

r = range (57909227, 5906440628, 10000000)
Run Code Online (Sandbox Code Playgroud)

使用已经给出的“r”的最大和最小值。还给出了 G 和 M 的值。我的代码如下所示:

import sys
import os
import numpy
import matplotlib.pyplot as plt
from pylab import *

G=6.67*10**(-11)
M=2.0*10**30

radial_distance = range (57909227, 5906440629, 10000000)




for distance in radial_distance:
    plt.plot(radial_distance, ((G*M)/distance)**0.5, '*')
plt.show()
Run Code Online (Sandbox Code Playgroud)

这返回给我以下错误:

File "generate_list.py", line 20, in <module>
    plt.plot(radial_distance, ((G*M)/distance)**0.5, '*')
  File "/home/trina/anaconda2/lib/python2.7/site-packages/matplotlib/pyplot.py", line 3154, in plot
    ret = ax.plot(*args, **kwargs)
  File "/home/trina/anaconda2/lib/python2.7/site-packages/matplotlib/__init__.py", line 1812, in inner
    return func(ax, *args, **kwargs)
  File "/home/trina/anaconda2/lib/python2.7/site-packages/matplotlib/axes/_axes.py", line 1424, in plot
    for line in self._get_lines(*args, **kwargs):
  File "/home/trina/anaconda2/lib/python2.7/site-packages/matplotlib/axes/_base.py", line 386, in _grab_next_args
    for seg in self._plot_args(remaining, kwargs):
  File "/home/trina/anaconda2/lib/python2.7/site-packages/matplotlib/axes/_base.py", line 364, in _plot_args
    x, y = self._xy_from_xy(x, y)
  File "/home/trina/anaconda2/lib/python2.7/site-packages/matplotlib/axes/_base.py", line 223, in _xy_from_xy
    raise ValueError("x and y must have same first dimension")
ValueError: x and y must have same first dimension
Run Code Online (Sandbox Code Playgroud)

请帮我修复错误。

cod*_*.me 5

您需要的是在列表上按元素应用表达式,然后将结果列表传递给绘图。

y = [((G*M)/x)**0.5 for x in radial_distance]
plt.plot(radial_distance, y)
Run Code Online (Sandbox Code Playgroud)