Hola, estoy tratando de imprimir los elementos que se muestran a continuación. Solo quiero que se impriman una vez, pero como las declaraciones de impresión están dentro del ciclo for, se imprimen 100 veces. y no puedo sacar las declaraciones de impresión porque los valores en el interior dependen del ciclo for. ¿Alguna idea sobre cómo imprimir esos valores solo una vez?
def Input_Q_bounds (lower,upper):
delta_x = .1
#since there are 100 iterations
J=np.zeros(101)
for i in range(101) :
Q_i=(i*delta_x)+(delta_x/2)
if lower <=Q_i<= upper :
Q =1
else :
Q=0
#now fill the matrix
J[i]=(Q+(9.5*(J[i-1])))/10.5
J_analytical = Q*(np.exp(upper-10)+(np.exp(lower-10))
print(J_analytical)
print(J[100])
2 respuestas
Simplemente ponga un if i == 100:
en la línea sobre la impresión
Opción 1: puede usar una condición else como la siguiente.
def Input_Q_bounds(lower, upper):
delta_x = .1
# since there are 100 iterations
J = np.zeros(101)
for i in range(101):
Q_i = (i * delta_x) + (delta_x / 2)
if lower <= Q_i <= upper:
Q = 1
else:
Q = 0
# now fill the matrix
J[i] = (Q + (9.5 * (J[i - 1]))) / 10.5
J_analytical = Q * (np.exp(upper - 10) + (np.exp(lower - 10))
else:
print(J_analytical)
print(J[100])
if __name__ == "__main__":
Input_Q_bounds(lower, upper)
Opción 2: la solución a continuación es mediante el uso de variables globales
J_analytical = -1
J = []
def Input_Q_bounds(lower, upper):
global J
global J_analytical
delta_x = .1
# since there are 100 iterations
J = np.zeros(101)
for i in range(101):
Q_i = (i * delta_x) + (delta_x / 2)
if lower <= Q_i <= upper:
Q = 1
else:
Q = 0
# now fill the matrix
J[i] = (Q + (9.5 * (J[i - 1]))) / 10.5
J_analytical = Q * (np.exp(upper - 10) + (np.exp(lower - 10))
if __name__ == "__main__":
Input_Q_bounds(lower, upper)
print(J[100])
print(J_analytical)
Opción 3: Devuelve los valores de la función.
def Input_Q_bounds(lower, upper):
delta_x = .1
# since there are 100 iterations
J = np.zeros(101)
for i in range(101):
Q_i = (i * delta_x) + (delta_x / 2)
if lower <= Q_i <= upper:
Q = 1
else:
Q = 0
# now fill the matrix
J[i] = (Q + (9.5 * (J[i - 1]))) / 10.5
J_analytical = Q * (np.exp(upper - 10) + (np.exp(lower - 10))
return J[100], J_analytical
if __name__ == "__main__":
Input_Q_bounds(lower, upper)
Preguntas relacionadas
Nuevas preguntas
python
Python es un lenguaje de programación multipropósito, de tipificación dinámica y de múltiples paradigmas. Está diseñado para ser rápido de aprender, comprender y usar, y hacer cumplir una sintaxis limpia y uniforme. Tenga en cuenta que Python 2 está oficialmente fuera de soporte a partir del 01-01-2020. Aún así, para preguntas de Python específicas de la versión, agregue la etiqueta [python-2.7] o [python-3.x]. Cuando utilice una variante de Python (por ejemplo, Jython, PyPy) o una biblioteca (por ejemplo, Pandas y NumPy), inclúyala en las etiquetas.