Python 3.x 如何解决这个python图问题?

Python 3.x 如何解决这个python图问题?,python-3.x,graph,Python 3.x,Graph,这是我的代码: import matplotlib.pyplot as plt import random import numpy as np length = int(input("Length: ")) input_axis_x = int(input("Axis x: ")) axis_x = [input_axis_x] axis_y = [] y_num = 0 while len(axis_x) != length: axis_x.append(axis_x[-1]/2

这是我的代码:

import matplotlib.pyplot as plt
import random
import numpy as np

length = int(input("Length: "))
input_axis_x = int(input("Axis x: "))

axis_x = [input_axis_x]
axis_y = []
y_num = 0
while len(axis_x) != length:
    axis_x.append(axis_x[-1]/2)
    y_num += 1
    axis_y.append(y_num)

print("X:",axis_x)
print("Y:",axis_y)

x = np.array(axis_x)
y = np.array(axis_y)

plt.plot(x, y)

plt.grid(True)
plt.show()
这给了我一个错误:

**ValueError: x and y must have same first dimension, but have shapes (10,) and (9,)**

很多人说我需要使用numpy数组,我这样做了,但仍然不起作用

你的问题是你的列表长度不一样。你可以列出一个代表x,一个代表y。然后在xlist中输入一个值。所以xlist的len是1,ylist的长度是0

然后迭代n次,向xlist和ylist添加n项。现在,ylist的长度是n,但是xlist是n+1,因为在循环之前向列表中添加了1

相反,您可以基于长度输入生成ylist,然后使用它填充xlist

导入matplotlib.pyplot作为plt
长度=整数(输入(“长度:”)
输入轴x=int(输入(“轴x:”)
轴_x=[]
轴y=范围(长度)
对于y轴中的u:
轴x.附加(输入轴x)
输入轴x/=2
打印(“X:,X轴)
打印(“Y:,Y轴)
平面图(x轴、y轴)
plt.grid(真)
plt.show()
输出

Length: 10
Axis x: 10
X: [10, 5.0, 2.5, 1.25, 0.625, 0.3125, 0.15625, 0.078125, 0.0390625, 0.01953125]
Y: range(0, 10)

轴的长度不相同。将输入轴添加到循环之前的轴x,然后将加载项元素循环到y和x。由于您在循环之前将元素添加到x_轴,因此它将比y轴多1个元素,只需在
y_-y.append(y_-num)
下面添加
y_-num=0
。正如@ChrisDoyle提到的,您的数组不匹配。