@Zorgios

Почему криво отрисовывается график символами?

Цель - функция по отрисовке графика определенной функции.
Тестировал y=x*x (парабола) - работает на ура.
А вот на y=x и y=x*x*x и подобных работает криво. Где может быть загвостка?

Рабочий вариант с параболой
def func(x):
    return x * x

def draw(func, bottom, top, strings):
    # определяем шаг по оси X
    shag = round((top - bottom) / strings, 1)
    x = bottom
    while(x <= top):
        # получаем значение для y
        y = round(func(x))
        # готовим строку, добавляя туда пробелы и на конец - символ *
        resultString = ''
        for i in range(1, y + 1):
            resultString += ' '
        resultString += '*'
        print(resultString)
        print()
        x += shag
    print()

draw(func, -5, 5, 20)


Вот что должно быть при x=y
def func(x):
    return x

draw(func, -5, 5, 10)

*

 *

  *

   *

    *

     *

      *

       *

        *

         *

          *


Но выдаёт
*

*

*

*

*

*

 *

  *

   *

    *

     *


В случае с y=x*x*x
def func(x):
    return x * x * x

draw(func, -3.5, 3.5, 20)


Должно быть, исходя из логики
*

           *

                     *

                            *

                                 *

                                     *

                                        *

                                         *

                                          *

                                          *

                                          *

                                          *

                                          *

                                           *

                                            *

                                               *

                                                   *

                                                        *

                                                               *

                                                                         *

                                                                                    *


А получается
*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

 *

  *

    *

       *

           *

                *


Предполагаю, надо грешить на округление?
  • Вопрос задан
  • 73 просмотра
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
А ты присмотрись к графикам повнимательнее...

Неверно отображается та часть, где функция имеет отрицательное значение. x^2 всегда неотрицательна, и потому отображается корректно.

И да, незачем приклеивать по одному пробелу в цикле, просто сделай " " * N.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы