Не могу зациклить цикл - PullRequest
0 голосов
/ 10 ноября 2018

Итак, я хочу сделать цикл while, чтобы просто вычислить интеграл некоторых случайных функций. Дело в том, что когда я передаю opción = 1, он делает первое, если (хорошо), но когда я передаю другое число, оно ломается. Очевидно, потому что True = 1 и False = 0. Так как я могу сделать это, чтобы сделать цикл while до (1,2,3), пока я не нажму 4 ... Заранее большое спасибо

while opcion == True:
        if opcion == 1:
            print('Vamos a calcular la siguiente integral:')
            f = a*x + b
            integral = sp.Integral(f, x)
            sp.pprint(integral)
            print()
            print('Que tiene como resultado:')
            sp.pprint(sp.integrate(f,x))
            print()
            print('Introducimos los límites y valores de las'
            ' constantes para caluclarla')
            lim_inf = int(input('Límite inferior = '))
            lim_sup = int(input('Límite superior = '))
            while (lim_inf == lim_sup):
                print('Los límites no pueden ser iguales !! '
             'Vuelve a introducir valores diferentes')
                lim_inf = int(input('Límite inferior = '))
                lim_sup = int(input('Límite superior = '))
            a = int(input('valor a = '))
            b = int(input('valor de b = '))
            res = integrate.quad(grad1, lim_inf, lim_sup, args=(a,b))
            print()
            print('Valor de la integral',res[0])

        elif opcion == 2:
            print('Vamos a calcular la siguiente integral:')
            f = a*x**2 + b*x + c
            integral = sp.Integral(f, x)
            sp.pprint(integral)
            print()
            print('Que tiene como resultado:')
            sp.pprint(sp.integrate(f,x))
            print()
            print('Introducimos los límites y valores de las'
            ' constantes para caluclarla')
            lim_inf = int(input('Límite inferior = '))
            lim_sup = int(input('Límite superior = '))
            while (lim_inf == lim_sup):
                print('Los límites no pueden ser iguales !! '
             'Vuelve a introducir valores diferentes')
                lim_inf = int(input('Límite inferior = '))
                lim_sup = int(input('Límite superior = '))
            a = int(input('valor a = '))
            b = int(input('valor de b = '))
            res = integrate.quad(grad2, lim_inf, lim_sup, args=(a,b))
            print()
            print('Valor de la integral',res[0])

        elif opcion == 3:
            print('Vamos a calcular la siguiente integral:')
            f = a*x**3 + b*x**2 + c*x**2 + d
            integral = sp.Integral(f, x)
            sp.pprint(integral)
            print()
            print('Que tiene como resultado:')
            sp.pprint(sp.integrate(f,x))
            print()
            print('Introducimos los límites y valores de las'
            ' constantes para caluclarla')
            lim_inf = int(input('Límite inferior = '))
            lim_sup = int(input('Límite superior = '))
            while (lim_inf == lim_sup):
                print('Los límites no pueden ser iguales !! '
             'Vuelve a introducir valores diferentes')
                lim_inf = int(input('Límite inferior = '))
                lim_sup = int(input('Límite superior = '))
            a = int(input('valor a = '))
            b = int(input('valor de b = '))
            res = integrate.quad(grad3, lim_inf, lim_sup, args=(a,b))
            print()
            print('Valor de la integral',res[0])

        elif opcion == 4:
            break

1 Ответ

0 голосов
/ 10 ноября 2018

Вы должны просто обернуть его во время true, затем вызвать разрыв, как и ожидалось, и не зависеть от опции. Используйте sys, чтобы просто передать opcion в качестве аргумента для сценария, так что 4 просто заставит его автоматически сломаться ... в противном случае, если он только что сгенерирован в сценарии ... вы можете иметь opcion для генерации 1 по умолчанию, чтобы начать работу .

import sys
...
opcion = sys.argv[1]
while True:
        if opcion == 1:
            print('Vamos a calcular la siguiente integral:')
            f = a*x + b
            integral = sp.Integral(f, x)
            sp.pprint(integral)
            print()
            print('Que tiene como resultado:')
            sp.pprint(sp.integrate(f,x))
            print()
            print('Introducimos los límites y valores de las'
            ' constantes para caluclarla')
            lim_inf = int(input('Límite inferior = '))
            lim_sup = int(input('Límite superior = '))
            while (lim_inf == lim_sup):
                print('Los límites no pueden ser iguales !! '
             'Vuelve a introducir valores diferentes')
                lim_inf = int(input('Límite inferior = '))
                lim_sup = int(input('Límite superior = '))
            a = int(input('valor a = '))
            b = int(input('valor de b = '))
            res = integrate.quad(grad1, lim_inf, lim_sup, args=(a,b))
            print()
            print('Valor de la integral',res[0])

        elif opcion == 2:
            print('Vamos a calcular la siguiente integral:')
            f = a*x**2 + b*x + c
            integral = sp.Integral(f, x)
            sp.pprint(integral)
            print()
            print('Que tiene como resultado:')
            sp.pprint(sp.integrate(f,x))
            print()
            print('Introducimos los límites y valores de las'
            ' constantes para caluclarla')
            lim_inf = int(input('Límite inferior = '))
            lim_sup = int(input('Límite superior = '))
            while (lim_inf == lim_sup):
                print('Los límites no pueden ser iguales !! '
             'Vuelve a introducir valores diferentes')
                lim_inf = int(input('Límite inferior = '))
                lim_sup = int(input('Límite superior = '))
            a = int(input('valor a = '))
            b = int(input('valor de b = '))
            res = integrate.quad(grad2, lim_inf, lim_sup, args=(a,b))
            print()
            print('Valor de la integral',res[0])

        elif opcion == 3:
            print('Vamos a calcular la siguiente integral:')
            f = a*x**3 + b*x**2 + c*x**2 + d
            integral = sp.Integral(f, x)
            sp.pprint(integral)
            print()
            print('Que tiene como resultado:')
            sp.pprint(sp.integrate(f,x))
            print()
            print('Introducimos los límites y valores de las'
            ' constantes para caluclarla')
            lim_inf = int(input('Límite inferior = '))
            lim_sup = int(input('Límite superior = '))
            while (lim_inf == lim_sup):
                print('Los límites no pueden ser iguales !! '
             'Vuelve a introducir valores diferentes')
                lim_inf = int(input('Límite inferior = '))
                lim_sup = int(input('Límite superior = '))
            a = int(input('valor a = '))
            b = int(input('valor de b = '))
            res = integrate.quad(grad3, lim_inf, lim_sup, args=(a,b))
            print()
            print('Valor de la integral',res[0])

        elif opcion == 4:
            break
...