Python 获取for循环中每个迭代的打印值的简单问题?
我的代码按我希望的那样工作,但有一个小问题:“print”行只显示第一次迭代(n=2)的Bn值,而不显示(n=5或20)的Bn值 在执行Python 获取for循环中每个迭代的打印值的简单问题?,python,loops,Python,Loops,我的代码按我希望的那样工作,但有一个小问题:“print”行只显示第一次迭代(n=2)的Bn值,而不显示(n=5或20)的Bn值 在执行plt.show()行之前,执行打印行print('coverties[V]:','Bn:',Bn,'An:',An,'A0:',A0),因此在n=2时打印字符串,然后打开一个窗口。问题是,当此plt.show()方法仍在运行时,您无法在for循环中继续循环。如果尝试关闭打开的窗口,您将看到打印n=5的消息 如果要打印数组的完整结果,可以考虑将它们存储在变量中,
plt.show()
行之前,执行打印行print('coverties[V]:','Bn:',Bn,'An:',An,'A0:',A0)
,因此在n=2
时打印字符串,然后打开一个窗口。问题是,当此plt.show()
方法仍在运行时,您无法在for
循环中继续循环。如果尝试关闭打开的窗口,您将看到打印n=5
的消息
如果要打印数组的完整结果,可以考虑将它们存储在变量中,并在循环结束后将其打印出来。或者你也可以找到另一种方法来实现
plt.show()
我复制了代码,它在jupyter中对我有效,正确打印每一行并绘制每一张图表
import numpy as np
from matplotlib import pyplot as plt
import scipy.integrate as integrate
from scipy.integrate import quad
#unique depending on the problem
y = lambda t: 3*t
T = 4 #period
w = 2*np.pi/T #angular frequency
print('Angular Frequency [rad]:',w)
n_list = np.array([2,5,20])
#for loop for multiple n values:
for n in n_list:
Bn = (2/T)*quad(lambda t: y(t)*np.sin(n*w*t), -T/2, T/2)[0] #for odd functions
An = (2/T)*quad(lambda t: y(t)*np.cos(n*w*t), -T/2, T/2)[0] #for even
A0 = (1/T)*quad(lambda t: y(t), -T/2, T/2)[0] #vertical shift
y = lambda t: A0+An*np.cos(n*w*t)+Bn*np.sin(n*w*t) #total equation
t = np.linspace(-6, 6)
plt.plot(t,y(t))
plt.title('n = %d'%n)
print('Coefficients [V]:', 'Bn:',Bn, 'An:', An,'A0:', A0)
plt.show()