График функции y=ax+b

Katya

Новичок
Пользователь
Янв 3, 2021
16
0
1
Здравствуйте. Не могу дописать код. Нужно, чтобы выводило прямую, а выводит какую-то фигню. Помогите пожалуйста понять, как правильно писать координаты, чтобы выводило прямую по уравнению.
Уравнение: y=a*x+b, а ≠0
Мой код:
Код:
from tkinter import *
root = Tk()
root.title ("y = ax + b , a != 0")
root.geometry ("700x500+100+250" )
canv = Canvas (root, width = 520, height = 420, bg = '#9df') # bg - color

x = 0
while x <= 8:
  k = 50 * x
  x += 1
  canv.create_line(10, 10+k, 510, 10+k, width='1',fill='grey')



y = 0
while y <= 10:
  k = 50 * y
  y += 1
  canv.create_line(10+k, 410, 10+k, 10, width='1',fill='grey')
# X та Y:
canv.create_line(10, 210, 510, 210, width='2', arrow='last', fill='#000000')
canv.create_line(260, 10, 260, 410, width='2', arrow='first', fill='#000000')

i = 0
j = 220
while i <= 200:
  canv.create_text(290,j,text=str(i),fill="red")
  j-=50
  i+=50
#подпись осей
canv.create_text(500,200,text='X',fill="blue")
canv.create_text(230,20,text='Y',fill="blue")

# x*a +b
a = 5
b = 30
x1 = 0
y1 = 0
x = 6
while (y <= 200 and a>0 or y >= -200 and a<0):
  y = x*a +b
  if x != 0:
    canv.create_line(260+x1, 210-y1,260+x,210-y, width='2', fill='green')

x1 = x
y1 = y
x+=1
canv.pack(side = 'right')
root.mainloop()
 
Последнее редактирование:

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 589
459
83
код вставляйте с помощью тегов code, где пишите сообщение чуть выше в панели инструментов есть три точки далее выбираете код далее Python и туда уже вставляете свой код...
без отступов разобраться трудно в вашем коде...
 

Katya

Новичок
Пользователь
Янв 3, 2021
16
0
1
код вставляйте с помощью тегов code, где пишите сообщение чуть выше в панели инструментов есть три точки далее выбираете код далее Python и туда уже вставляете свой код...
без отступов разобраться трудно в вашем коде...
Все, сделала) спасибо)) а можете пожалуйста помочь как-то с вопросом?)
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 589
459
83
Все, сделала) спасибо)) а можете пожалуйста помочь как-то с вопросом?)
отступов так и нет...
например после циклов while должен быть отступ на следующей строке обязательно, у вас его нет, скопируйте код не из темы поста, а из программы где вы его пишите, я копирую ваш код и он у меня не работает... мне нужно отступы выставлять в ручную, угадывать их... мне оно надо?
 

Katya

Новичок
Пользователь
Янв 3, 2021
16
0
1
отступов так и нет...
например после циклов while должен быть отступ на следующей строке обязательно, у вас его нет, скопируйте код не из темы поста, а из программы где вы его пишите, я копирую ваш код и он у меня не работает... мне нужно отступы выставлять в ручную, угадывать их... мне оно надо?
Отступы сделала
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 589
459
83
Отступы сделала
ваш код не работает...
проблема вот в этом цикле while (y <= 200 and a > 0 or y >= -200 and a < 0):, у него условие всегда истинно, соответвено он там залипает...
а вам принципиально нужно через ткинтер?
пример через матплотлиб, проще и быстрее
Python:
import numpy as np
import matplotlib.pyplot as plt

a = 10
b = 20
x = np.arange(-10, 10, 1)
y = a * x + b
plt.plot(x, y)
plt.show()
 

Katya

Новичок
Пользователь
Янв 3, 2021
16
0
1
ваш код не работает...
проблема вот в этом цикле while (y <= 200 and a > 0 or y >= -200 and a < 0):, у него условие всегда истинно, соответвено он там залипает...
а вам принципиально нужно через ткинтер?
пример через матплотлиб, проще и быстрее
Python:
import numpy as np
import matplotlib.pyplot as plt

a = 10
b = 20
x = np.arange(-10, 10, 1)
y = a * x + b
plt.plot(x, y)
plt.show()
В том и загвоздка, что именно через tkinter
 

Kyurem_BoG

Новичок
Пользователь
Янв 10, 2021
5
0
1
Попробуйте вот так. Но понадобятся еще numpy и matplotlib
Python:
import numpy as np
import matplotlib.pyplot as plt #импорт библиотек
from tkinter import*
def cmp(x): #фунция потроения графиков фунций
    x=np.arange(-10,10.01,0.01) #массиф значение аргумента
    plt.ylim(-10,10)#ограничение оси Y
    plt.plot(x,eval(ent.get())) #построение графика
    plt.xlabel(r'$x$') #метка по оси Х
    plt.ylabel(r'$f(x)$') #метка по оси Y
    plt.title("f(x)="+str(ent.get())) #заголовок
    plt.grid(True) #сетка
    plt.show() #показать график

root=Tk() #создам главное окно

but=Button(root, #создание кнопки с определеными параметрами
text='Построить',

bg='red')

ent = Entry(root,width=20,bd=3) #создание окна ввода данных

ent.pack()#расположить окно ввода данных в гл окне
but.pack()#расположить кнопку гл окне
but.bind("<Button-1>",cmp)# при нажати лкм запускается функция cmp
root.mainloop()
Скриншот 10-01-2021 212407.jpg
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 589
459
83
В том и загвоздка, что именно через tkinter
если никто не ответит до меня, я вам завтра отвечу в обед с работы, сейчас мне лень разбираться как в ткинтере графики строятся...
 

Katya

Новичок
Пользователь
Янв 3, 2021
16
0
1
если никто не ответит до меня, я вам завтра отвечу в обед с работы, сейчас мне лень разбираться как в ткинтере графики строятся...
Спасибо большое) буду ждать Вашего ответа)
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 589
459
83
нашел пример тут ссылка, там в принципе целая "рисовалка" графиков, только координаты у него не верные, пишешь уравнение параболы, он гиперболу рисует, как поправить я не знаю, почитал потратил час, там адская извращенность, я не знаю зачем это нужно...
для зачета вам я думаю хватит...
 
  • Мне нравится
Реакции: Katya

Katya

Новичок
Пользователь
Янв 3, 2021
16
0
1
нашел пример тут ссылка, там в принципе целая "рисовалка" графиков, только координаты у него не верные, пишешь уравнение параболы, он гиперболу рисует, как поправить я не знаю, почитал потратил час, там адская извращенность, я не знаю зачем это нужно...
для зачета вам я думаю хватит...
Спасибо ?
 

Форум IT Специалистов