Пользовательский ввод для вызова функции всегда заканчивается процессом 0 - PullRequest
0 голосов
/ 14 февраля 2020

Я пытаюсь создать программу, которая показывает функцию exp или log в зависимости от того, что пользователь хочет видеть. Поэтому, если пользователь хочет получить удовольствие от exp, он пишет: 1. Если веселье в журнале, то 2.

Проблема заключается в том, что после ввода программа всегда заканчивается «Процесс завершен с кодом выхода 0», и он показывает нет функций.

Какое может быть решение?

Код:

import matplotlib.pyplot as plt
import numpy as np


class the_process(object):
 def logfun(self):
    a = 2
    q = 0
    x = np.linspace(-2, 4, 100)
    y = np.log(a ** (np.add(x, q)))

    plt.figure()
    plt.plot(x, y)
    plt.ylabel('$\log(x)$')
    plt.grid(True)
    plt.show()

def expfun(self):
    a = 2
    q = 0
    x = np.linspace(-2, 4, 100)
    y = np.add(np.power(a, x), q)

    plt.figure()
    plt.plot(x, y)
    plt.ylabel('$\exp(x)$')
    plt.grid(True)
    plt.show()

def __init__(self):
    self.a = input(
        "Which function do you want to use? \n\n 1) The first one. \n\n 2) The second one. \n\n Please enter the corresponding number and hit enter >>>>> ")

    if self.a == 1:
        self.expfun()
    elif self.a == 2:
        self.logfun()


a = the_process();

1 Ответ

0 голосов
/ 14 февраля 2020

Отступ в вашем примере неверен. expfun() и __init__() не имеют отступов. Кроме того, input() возвращает строку , поэтому вы должны привести ее к int, чтобы сравнить ее с вашим if

import matplotlib.pyplot as plt
import numpy as np


class the_process(object):
    def logfun(self):
        a = 2
        q = 0
        x = np.linspace(-2, 4, 100)
        y = np.log(a ** (np.add(x, q)))

        plt.figure()
        plt.plot(x, y)
        plt.ylabel('$\log(x)$')
        plt.grid(True)
        plt.show()

    def expfun(self):
        a = 2
        q = 0
        x = np.linspace(-2, 4, 100)
        y = np.add(np.power(a, x), q)

        plt.figure()
        plt.plot(x, y)
        plt.ylabel('$\exp(x)$')
        plt.grid(True)
        plt.show()


    def __init__(self):
        self.a = int(input(
            "Which function do you want to use? \n\n 1) The first one. \n\n 2) The second one. \n\n Please enter the corresponding number and hit enter >>>>> "))

        if self.a == 1:
            self.expfun()
        elif self.a == 2:
            self.logfun()


a = the_process()

Наконец, на мой взгляд, ваша проблема не должна быть структурированным как класс, так что вы могли бы рассмотреть этот вместо:

import matplotlib.pyplot as plt
import numpy as np


class TheProcess(object):
    def log_fun(self):
        a = 2
        q = 0
        x = np.linspace(-2, 4, 100)
        y = np.log(a ** (np.add(x, q)))

        plt.figure()
        plt.plot(x, y)
        plt.ylabel("$\log(x)$")
        plt.grid(True)
        plt.show()

    def exp_fun(self):
        a = 2
        q = 0
        x = np.linspace(-2, 4, 100)
        y = np.add(np.power(a, x), q)

        plt.figure()
        plt.plot(x, y)
        plt.ylabel("$\exp(x)$")
        plt.grid(True)
        plt.show()


chosen_option = int(
    input(
        "Which function do you want to use? \n\n 1) The first one. \n\n 2) The second one. \n\n Please enter the corresponding number and hit enter >>>>> "
    )
)
my_process = TheProcess()
if chosen_option == 1:
    my_process.exp_fun()
elif chosen_option == 2:
    my_process.log_fun()
else:
    print("Exiting...")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...