【发布时间】:2021-09-03 11:36:25
【问题描述】:
python 新手,想尝试编写 x3+1 函数(如果一个数是奇数,则乘以 3,然后我们加 1,如果是偶数,则该数除以 2。继续最多 1,因为在那之后它只是在自身上循环)。我设法编写了代码,但我真的想在图表中实现它?
import matplotlib.pyplot as plt
def x3Graph(b):
inc = 1
plt.plot((inc*4), b, 'ko', ms=1)
switch = 1
while(switch == 1):
if((b % 2) == 0):
b = b/2
inc = inc + 1
plt.plot((inc*4), b, 'ko', ms=1)
elif(b != 1):
b = 3*b+1
inc = inc + 1
plt.plot((inc*4), b, 'ko', ms=1)
else:
inc = inc + 1
switch = 2
ax = plt.subplot(111)
ax.plot((inc*4), b, 'ko', ms=1)
ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)
ax.tick_params(labelbottom=False)
plt.show()
我将每个数字设置为 4 的差异,所以真正使用的唯一轴是左侧轴,底部轴仅用于将每个点彼此分开。问题是我不能使用 x=[a,b] 方法来画线,所以我不知道该怎么做。请记住,我是 python 的极端初学者。有什么办法可以实现我的想法吗? (每个点之间的线)
【问题讨论】:
-
您需要创建两个列表,一个用于
inc值,另一个用于b值。并在每个步骤中附加值。您无需在每一步都绘制,而是在最后绘制一次列表 (plt.plot(inc_list, b_list, '-ko'))。顺便说一句,没有充分的理由使用inc * 4而不仅仅是inc。
标签: python matplotlib