Прикреплённый файл «grap_2.py»

Загрузка

   1 #!/usr/bin/env python
   2 # -*- coding: UTF-8 -*-
   3 '''
   4 Проект "Построение графика", версия 2
   5 Построение графика произвольной функции
   6 в произвольно диапазоне на текстовом экране произвольных размеров
   7 '''
   8 #  name: scale
   9 #  @param x, X0, X1, Z0, Z1
  10 #  @return z
  11 def scale(x, X0, X1, Z0, Z1):
  12   'Преобразует координату x в диапазоне [X0, X1] в координату z в диапазоне [Z0, Z1]'
  13   return Z0+(Z1-Z0)*(x-X0)/float(X1-X0)
  14 
  15 #  name: round
  16 #  @param x
  17 #  @return x, округлённое до ближайшего целого
  18 def round(x):
  19   return int(floor(x+0.5))
  20 
  21 #  name: fun
  22 #  @param x -- параметр, eq -- строковая формула
  23 #  @return вычисленная формула от x
  24 def fun(x, eq):
  25   return eval(eq)
  26 
  27 #  name: grafun
  28 #  @param X0, X1, count, formulae
  29 #  @return список длиной count вида [(x, formulae(x)),..], х из диапазона [X0, X1]
  30 def grafun(X0, X1, count, formulae):
  31   ret=[]
  32   for i in range(count):
  33     x=scale(i, 0, count-1, X0, X1)
  34     y=fun(x, formulae)
  35     ret.append((x,y))
  36   return ret
  37 
  38 from math import *
  39 fml=raw_input("Введите функцию в виде формулы от x (например, sin(x)*x ): ")
  40 X0, X1, W, H = input("Введите начало диапазона, конец диапазона, ширину и высоту экрана: ")
  41 X0, X1 = float(X0), float(X1)
  42 
  43 gr=grafun(X0, X1, H, fml)
  44 # Найдём минимум и максимум функции в этих точках
  45 Y0, Y1 = min([e[1] for e in gr]), max([e[1] for e in gr])
  46 # нарисуем график
  47 for e in gr:
  48   print " "*round(scale(e[1],Y0, Y1, 0, W-2))+"*"

Прикреплённые файлы

Для ссылки на прикреплённый файл в тексте страницы напишите attachment:имяфайла, как показано ниже в списке файлов. Не используйте URL из ссылки «[получить]», так как он чисто внутренний и может измениться.
 Все файлы | Выбранные файлы: удалить переместить на страницу скопировать на страницу

Вам нельзя прикреплять файлы к этой странице.