Практикум по программированию для школьников

Материал из ALT Linux Wiki

Тот, кто виноват в создании этой страницы :) предполагает, что здесь, прежде всего, будут размещены примеры программ, написанных на языке Python учащимися или с их участием. Хорошо, если эти программы будут такими, чтобы их можно было использовать в учебном процессе (по разным предметам, не только по информатике). Можно, впрочем, и не на питоне, можно и одну задачу решить на разных языках. Можно и не про образовательный процесс.

Некоторые программы, здесь уже размещённые, могут быть катастрофически не дописаны. Это очень хорошо, ведь над такой программой ещё можно работать.

Для начала (некоторые примеры)

Тренажёр для изучения координат

Программа, интересная и как тренажёр для учебной работы с координатами (5-7 класс) и как пример несложной программы, которую может написать (или разобраться в её коде) начинающий программист (8-9 класс)

from tkinter import *
import random
okno = Tk()
okno.geometry('1500x700+0+0')
koordinatkax=random.randint(-15,15)
koordinatkay=random.randint(-6,6)
holst = Canvas(okno, width=1500, height = 600, bg = "white")
holst.create_line(0,300,1500,300,fill="black",width=3,arrow=LAST)
holst.create_line(750,600,750,0,fill="black",width=3,arrow=LAST)
metka = Label(okno,font=20,text="Привет! Найди точку с координатами x = " + str(koordinatkax) + ",  y = " + str(koordinatkay))
metka.place(x = 0,y = 620)
metkaX = Label(holst,font=20,text="X")
metkaX.place(x = 1475,y =310)
metkaY = Label(holst,font=20,text="Y")
metkaY.place(x =760,y = 10)
#положительные метки Y
metka1Y = Label(holst,font=20,text="1")
metka1Y.place(x =725,y = 240)
#метка 0
metka0 = Label(holst,font=20,text="0")
metka0.place(x =725,y = 305)
#положительные метки X
metka1X = Label(holst,font=20,text="1")
metka1X.place(x =792,y = 308)
#отрицательные метки Y
metka1Y = Label(holst,font=20,text="-1")
metka1Y.place(x =725,y = 340)
#отрицательные метки X
metka1X = Label(holst,font=20,text="-1")
metka1X.place(x =692,y = 308)
for i in range(14):
    holst.create_line(0,50*i,1500,50*i,fill="black",width=1)
    holst.create_line(745,50*i,755,50*i,fill="black",width=3)
for i in range(30):
    holst.create_line(50*i,0,50*i,600,fill="black",width=1)
    holst.create_line(50*i,295,50*i,305,fill="black",width=3)
holst.place(x=0,y=0)
knopka = Button(okno)
knopka.place(x = 50,y = 650)
def gdelevyklik(event):
    xo = koordinatkax*50+750
    yo = 300-koordinatkay*50
    if int(((event.x-xo)**2+(event.y-yo)**2)**0.5) < 5:
        okno.title("Молодец! Левая кнопка мыши нажата" + str(event.x) + " " + str(event.y))    
    else:
        okno.title("Не правильно! Левая кнопка мыши нажата" + str(event.x) + " " + str(event.y))    
holst.bind('<Button-1>', gdelevyklik)

Построение перпендикуляра

from tkinter import *
import random
okno = Tk()
okno.geometry('1500x800+10+10')
okno.resizable(False,False)
holst = Canvas(okno,width = 1500,height=700, bg = "white")
holst.pack(expand='true')
tochki = [] #Массив точек
chislo_tochek = 0
rejim = 0

def rejim_perp():
  global regim, chislo_tochek
  okno.title("Режим работы программы: ""Перпендикуляр"" ")
  rejim = 4
  chislo_tochek = 0
  tochki = []
  holst.bind('<Button-1>',perp)
def perp(event):
  global chislo_tochek
  global tochki
  tochki.append([event.x,event.y])
  chislo_tochek = chislo_tochek + 1
  holst.create_oval(event.x-3, event.y-3,event.x+3, event.y+3,fill="black")
  if (chislo_tochek == 2):
        holst.create_line(tochki[0][0],tochki[0][1],tochki[1][0],tochki[1][1])
  if (chislo_tochek == 3):        
    x = tochki[2][0]+50
    y = x*(tochki[0][0]-tochki[1][0])/(tochki[1][1]-tochki[0][1])-(tochki[2][0]*(tochki[0][0]-tochki[1][0])/(tochki[1][1]-tochki[0][1]))+tochki[2][1]
    holst.create_line(x,y,tochki[2][0],tochki[2][1])
    chislo_tochek = 0
    tochki = []
knopka_perp = Button(okno,width=12,height=1,bg="#a7f7c5",text="перпендикуляр",command=rejim_perp)
knopka_perp.pack(side = 'left')