Прикреплённый файл «grap_4.py»
Загрузка 1 #!/usr/bin/env python
2 # -*- coding: UTF-8 -*-
3 '''
4 Проект "Построение графика", версия 4
5 Построение графика произвольной функции
6 в произвольно диапазоне на текстовом экране произвольных размеров
7 горизонтальная ориентация картинки
8 непрерывные отрезки между точками
9 '''
10
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 def round(x):
16 'Округлить x до ближайшего целого'
17 return int(floor(x+0.5))
18
19 def fun(x, eq):
20 'Вычисляет python-выражение eq с параметром x'
21 return eval(eq)
22
23 def grafun(X0, X1, count, formulae):
24 'Список длиной count вида [(x, formulae(x)),..], х из диапазона [X0, X1]'
25 ret=[]
26 for i in range(count):
27 x=scale(i, 0, count-1, X0, X1)
28 y=fun(x, formulae)
29 ret.append((x,y))
30 return ret
31
32 def dot(scr, x, y, char="*"):
33 'Поставить точку (по умолчанию "*") на виртуальный экран scr'
34 scr[round(y)][round(x)]=char
35
36 def vline(scr, x, y1, y2, char="*"):
37 'Нарисовать вертикальную линию (x,y1)--(x-y2) на экране scr'
38 if y1 > y2: y1, y2 = y2, y1
39 for i in range(round(y1),round(y2)+1):
40 scr[i][round(x)]=char
41
42 def printscreen(scr):
43 'Выводит виртуальный экран scr на текстовый экран'
44 print ""
45 for l in range(len(scr)-1,-1,-1):
46 print "".join(scr[l])
47
48 from math import *
49 fml=raw_input("Введите функцию в виде формулы от x (например, sin(x)*x ): ")
50 X0, X1, W, H = input("Введите начало диапазона, конец диапазона, ширину и высоту экрана: ")
51 X0, X1 = float(X0), float(X1)
52
53 gr=grafun(X0, X1, W, fml)
54 # Найдём минимум и максимум функции в этих точках
55 Y0, Y1 = min([e[1] for e in gr]), max([e[1] for e in gr])
56
57 screen=[[" "]*W for i in range(H)] # "виртуальный экран WxH"
58 # нарисуем график
59 for i in range(len(gr)-1):
60 vline(screen, scale(gr[i][0],X0, X1, 0, W-1),
61 scale(gr[i][1],Y0, Y1, 0, H-1),
62 scale(gr[i+1][1],Y0, Y1, 0, H-1))
63 dot(screen, scale(gr[-1][0],X0, X1, 0, W-1), scale(gr[-1][1],Y0, Y1, 0, H-1))
64 # выведем получившееся
65 printscreen(screen)
Прикреплённые файлы
Для ссылки на прикреплённый файл в тексте страницы напишите attachment:имяфайла, как показано ниже в списке файлов. Не используйте URL из ссылки «[получить]», так как он чисто внутренний и может измениться.- [получить | показать] (2011-09-26 11:35:27, 1.6 KB) [[attachment:Oval.seg]]
- [получить | показать] (2011-09-26 11:35:27, 2.4 KB) [[attachment:PyGameState_Editor.dia]]
- [получить | показать] (2011-09-26 11:35:27, 2.8 KB) [[attachment:PyGameState_Ellipse.dia]]
- [получить | показать] (2011-09-26 11:35:27, 2.8 KB) [[attachment:PyGameState_Figure.dia]]
- [получить | показать] (2011-09-26 11:35:27, 1.5 KB) [[attachment:PyGameState_Input.dia]]
- [получить | показать] (2011-09-26 11:35:27, 0.4 KB) [[attachment:grap_0.py]]
- [получить | показать] (2011-09-26 11:35:27, 1.4 KB) [[attachment:grap_1-1.py]]
- [получить | показать] (2011-09-26 11:35:27, 1.1 KB) [[attachment:grap_1.py]]
- [получить | показать] (2011-09-26 11:35:27, 1.8 KB) [[attachment:grap_2.py]]
- [получить | показать] (2011-09-26 11:35:27, 2.4 KB) [[attachment:grap_3.py]]
- [получить | показать] (2011-09-26 11:35:27, 2.6 KB) [[attachment:grap_4.py]]
- [получить | показать] (2011-09-26 11:35:27, 2.0 KB) [[attachment:grap_5-0.py]]
- [получить | показать] (2011-09-26 11:35:27, 4.8 KB) [[attachment:grap_5-1.py]]
- [получить | показать] (2011-09-26 11:35:27, 3.6 KB) [[attachment:grap_5.py]]
- [получить | показать] (2011-09-26 11:35:27, 3.5 KB) [[attachment:grap_6-0.py]]
- [получить | показать] (2011-09-26 11:35:27, 4.7 KB) [[attachment:grap_6.py]]
- [получить | показать] (2011-09-26 11:35:27, 9.7 KB) [[attachment:grap_7.py]]
- [получить | показать] (2011-09-26 11:35:27, 0.8 KB) [[attachment:pygame_0.py]]
- [получить | показать] (2011-09-26 11:35:27, 2.2 KB) [[attachment:pygame_1-1.py]]
- [получить | показать] (2011-09-26 11:35:27, 1.9 KB) [[attachment:pygame_1.py]]
- [получить | показать] (2011-09-26 11:35:27, 2.5 KB) [[attachment:pygame_2-0.py]]
- [получить | показать] (2011-09-26 11:35:27, 1.3 KB) [[attachment:pygame_2-1-0.py]]
- [получить | показать] (2011-09-26 11:35:27, 5.6 KB) [[attachment:pygame_2-1.py]]
Вам нельзя прикреплять файлы к этой странице.