Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Простой Python просто с нуля
.pdf
ɦɨɦɟɧɬ ɢɡɜɟɫɬɧɵ ɫɥɟɞɭɸɳɢɟ ɩɪɨɫɬɵɟ ɱɢɫɥɚ Ɏɟɪɦɚ – 3, 5, 7, 257, 65537.
ɉɨɞɯɨɞɢɬ ɢ ɥɸɛɨɟ ɱɢɫɥɨ ɫɬɨɪɨɧ, ɤɨɬɨɪɨɟ ɹɜɥɹɟɬɫɹ ɩɪɨɢɡɜɟɞɟɧɢɟɦ ɷɬɢɯ
10
ɱɢɫɟɥ ɢ ɥɸɛɨɣ ɫɬɟɩɟɧɢ ɞɜɨɣɤɢ, ɧɚɩɪɢɦɟɪ
225773 uuu .
Ɉɞɢɧ ɫɥɢɲɤɨɦ ɧɚɜɹɡɱɢɜɵɣ ɚɫɩɢɪɚɧɬ ɞɨɜɺɥ ɫɜɨɟɝɨ ɧɚɭɱɧɨɝɨ ɪɭɤɨɜɨɞɢɬɟɥɹ
ɞɨ ɬɨɝɨ, ɱɬɨ ɬɨɬ ɫɤɚɡɚɥ ɟɦɭ: «ɂɞɢɬɟ ɢ ɪɚɡɪɚɛɨɬɚɣɬɟ ɩɨɫɬɪɨɟɧɢɟ
ɩɪɚɜɢɥɶɧɨɝɨ ɦɧɨɝɨɭɝɨɥɶɧɢɤɚ ɫ 65537 ɫɬɨɪɨɧɚɦɢ». Ⱥɫɩɢɪɚɧɬ ɭɞɚɥɢɥɫɹ,
ɱɬɨɛɵ ɜɟɪɧɭɬɶɫɹ ɱɟɪɟɡ 20 ɥɟɬ ɫ ɫɨɨɬɜɟɬɫɬɜɭɸɳɢɦ ɩɨɫɬɪɨɟɧɢɟɦ
(ɤɨɬɨɪɨɟ ɯɪɚɧɢɬɫɹ ɜ ɚɪɯɢɜɚɯ ɜ Ƚɟɬɬɢɧɝɟɧɟ).
© Ʌɢɬɥɜɭɞ, Ɇɚɬɟɦɚɬɢɱɟɫɤɚɹ ɫɦɟɫɶ.
ɗɬɨ ɩɨɬɨɦɭ, ɱɬɨ ɭ ɧɢɯ ɤɨɦɩɶɸɬɟɪɚ ɧɟ ɛɵɥɨ.
# ɤɨɧɟɰ Ȼɟɫɩɨɥɟɡɧɨɣ ɢɧɮɨɪɦɚɰɢɢ
ɇɚ ɜɯɨɞ ɮɭɧɤɰɢɢ ɛɭɞɭɬ ɩɨɫɬɭɩɚɬɶ ɨɱɟɜɢɞɧɵɟ ɩɚɪɚɦɟɬɪɵ – ɤɨɥɢɱɟɫɬɜɨ
ɜɟɪɲɢɧ, ɞɥɢɧɚ ɫɬɨɪɨɧɵ ɢ ɩɨɡɢɰɢɹ, ɨɬ ɤɨɬɨɪɨɣ ɧɚɱɢɧɚɬɶ ɨɬɪɢɫɨɜɤɭ. ɂ ɟɳɺ
ɨɞɢɧ ɧɟɨɱɟɜɢɞɧɵɣ, ɞɥɹ ɤɨɧɬɪɨɥɹ ɩɪɨɢɫɯɨɞɹɳɟɝɨ, ɩɚɪɚɦɟɬɪ. Ⱥ ɢɦɟɧɧɨ,
ɪɢɫɨɜɚɬɶ ɥɢ ɪɚɞɢɭɫɵ, ɢɥɢ ɤɚɤ ɷɬɨ ɭ ɦɧɨɝɨɭɝɨɥɶɧɢɤɚ ɧɚɡɵɜɚɟɬɫɹ, ɬɨ ɟɫɬɶ –
ɥɢɧɢɢ, ɫɨɟɞɢɧɹɸɳɢɟ ɰɟɧɬɪ ɦɧɨɝɨɭɝɨɥɶɧɢɤɚ ɫ ɟɝɨ ɜɟɪɲɢɧɚɦɢ.
def DrawRegPolygon( x0,y0,
numOfV, R,
drawRs = False):
alfa=(math.pi*2)/numOfV
if drawRs:
for i in xrange(1,numOfV+1):
x = round(R*math.cos(alfa*(i-1)));
y = round(R*math.sin(alfa*(i-1)));
c.create_line( x0,y0, x0+x,y0-y, dash = (1,1))
L = [(x0+R),y0]
for i in xrange(1,numOfV+1):
x = round(R*math.cos(alfa*i));
y = round(R*math.sin(alfa*i));
L.append( (x0+x,y0-y) )
c.create_line( L, width = 3 )
Ɏɨɪɦɭɥɵ ɩɪɨɫɬɟɣɲɢɟ, ɫɚɦɨɟ ɧɚɱɚɥɨ ɬɪɢɝɨɧɨɦɟɬɪɢɢ. ȼɟɪɲɢɧɵ
ɦɧɨɝɨɭɝɨɥɶɧɢɤɚ ɩɨɦɟɳɚɟɦ ɜ ɫɩɢɫɨɤ ɢ ɪɢɫɭɟɦ ɪɚɞɨɫɬɧɨ ɜɫɺ ɫɪɚɡɭ. Ⱦɥɹ
ɧɚɱɚɥɚ ɩɪɚɜɢɥɶɧɵɣ ɨɞɢɧɧɚɞɰɚɬɢɭɝɨɥɶɧɢɤ (ɨɱɟɧɶ ɫɥɨɠɧɨɟ ɫ ɬɨɱɤɢ
ɩɪɚɜɨɩɢɫɚɧɢɹ ɫɥɨɜɨ) ɢ ɫ ɪɚɞɢɭɫɚɦɢ, ɩɨɠɚɥɭɣɫɬɚ.
DrawRegPolygon( x0,y0, 11, 170, True);
211

Ɋɢɫɨɜɚɧɢɟ ɦɧɨɝɨɭɝɨɥɶɧɢɤɚ ɧɚɱɢɧɚɟɬɫɹ ɫ ɤɪɚɣɧɟɣ ɩɪɚɜɨɣ ɬɨɱɤɢ, ɬɨɣ, ɱɬɨ
ɥɟɠɢɬ ɧɚ ɩɨɥɨɠɢɬɟɥɶɧɨɣ ɱɚɫɬɢ ɨɫɢ ɚɛɫɰɢɫɫ – ɟɫɥɢ ɜɵ ɩɨɧɢɦɚɟɬɟ, ɨ ɱɺɦ ɹ
ɝɨɜɨɪɸ. ȼɟɪɲɢɧɵ ɦɵ ɪɢɫɭɟɦ ɜ ɩɨɪɹɞɤɟ, ɩɪɨɬɢɜɨɩɨɥɨɠɧɨɦ ɞɜɢɠɟɧɢɸ
ɱɚɫɨɜɨɣ ɫɬɪɟɥɤɢ. Counter-clockwise – ɷɬɨ ɟɫɥɢ ɜɵ ɯɨɬɢɬɟ ɩɨɤɚɡɚɬɶɫɹ
ɢɡɛɵɬɨɱɧɨ ɭɦɧɵɦ.
Ⱦɨɥɠɟɧ ɩɪɢɜɥɟɱɶ ɜɚɲɟ ɜɧɢɦɚɧɢɟ ɤ ɜɨɬ ɬɚɤɨɦɭ ɜɵɪɚɠɟɧɢɸ:
dash = (1,1).
ɋɧɚɱɚɥɚ ɨɧɨ ɦɟɧɹ ɜ ɩɥɨɯɨɦ ɫɦɵɫɥɟ ɭɞɢɜɢɥɨ, ɚ ɩɨɬɨɦ ɨɱɟɧɶ ɞɚɠɟ
ɩɨɧɪɚɜɢɥɨɫɶ. ɉɨɧɹɬɧɨ, ɱɬɨ ɷɬɨ ɩɚɪɚɦɟɬɪ, ɩɟɪɟɞɚɧɧɵɣ ɩɨ ɢɦɟɧɢ.
ɇɟɩɨɧɹɬɧɨ, ɱɬɨ ɜ ɫɤɨɛɤɚɯ. Ⱥ ɜ ɫɤɨɛɤɚɯ ɨɩɢɫɚɧɢɟ ɥɢɧɢɢ, ɤɨɬɨɪɭɸ ɦɵ
ɪɢɫɭɟɦ. ɇɚɩɢɫɚɧɧɨɟ ɜ ɫɤɨɛɤɚɯ (1,1) ɨɡɧɚɱɚɟɬ ɨɱɟɧɶ ɩɪɨɫɬɭɸ ɜɟɳɶ – ɤɨɝɞɚ
ɦɵ ɪɢɫɭɟɦ ɥɢɧɢɸ, ɬɨ ɦɵ ɨɞɧɭ ɬɨɱɤɭ ɪɢɫɭɟɦ, ɚ ɨɞɧɭ ɩɪɨɩɭɫɤɚɟɦ.
ɇɟɩɨɧɹɬɧɨ? ȿɫɥɢ ɬɚɤ: (5,1) – ɬɨ ɪɢɫɭɟɦ ɬɢɪɟ. ɑɬɨ ɢɧɬɟɪɟɫɧɟɟ, ɨɩɢɫɚɧɢɟ
ɥɢɧɢɢ ɦɨɠɟɬ ɛɵɬɶ ɫɤɨɥɶ ɭɝɨɞɧɨ ɛɨɥɟɟ ɡɚɤɨɜɵɪɢɫɬɵɦ. ȼɨɬ ɤɨɞ, ɚ ɜɨɬ
ɪɟɡɭɥɶɬɚɬ:
c.create_line( x0,y0, x0+x,y0-y, dash = (1,1, 5,1))
212

ȼɨɡɜɪɚɳɚɟɦɫɹ ɤ ɝɟɨɦɟɬɪɢɢ. Ɋɚɞɢɭɫɨɜ ɛɨɥɶɲɟ ɧɟ ɧɚɞɨ, ɩɪɨɫɬɨ ɧɚɪɢɫɭɟɦ
ɜɫɟɝɨ ɢ ɦɧɨɝɨ:
DrawRegPolygon( x0,y0, 3, 170);
DrawRegPolygon( x0,y0, 4, 170);
DrawRegPolygon( x0,y0, 5, 170);
DrawRegPolygon( x0,y0, 6, 170);
ɇɚ ɷɬɨɣ ɦɢɥɨɣ ɤɚɪɬɢɧɤɟ ɦɵ ɜɢɞɢɦ ɩɪɚɜɢɥɶɧɵɟ ɦɧɨɝɨɭɝɨɥɶɧɢɤɢ, ɨɬ ɬɪɺɯ ɞɨ
ɲɟɫɬɢ ɭɝɥɨɜ. ȼɨɡɦɨɠɧɨ, ɜɚɦ ɩɨɤɚɡɚɥɨɫɶ, ɱɬɨ ɜɫɺ ɷɬɨ ɧɟɦɧɨɝɨ
213

ɧɟɪɚɡɛɨɪɱɢɜɨ. Ɇɨɠɧɨ ɩɨɩɪɚɜɢɬɶ. Ⱦɨɛɚɜɢɦ ɜ ɡɚɝɨɥɨɜɨɤ ɮɭɧɤɰɢɢ ɩɚɪɚɦɟɬɪ
ɫɨ ɡɧɚɱɟɧɢɟɦ ɩɨ ɭɦɨɥɱɚɧɢɸ.
def DrawRegPolygon( x0,y0,
numOfV, R,
w = 1, # width
drawRs = False):
Ɋɟɚɥɢɡɚɰɢɸ ɨɫɭɳɟɫɬɜɢɬɟ ɫɚɦɢ. ɉɨɞɭɦɚɣɬɟ, ɩɨɱɟɦɭ ɹ ɞɚɥ ɟɦɭ ɢɦɹ
width. ȼɨɬ ɜɵɡɨɜ:
w, ɚ ɧɟ
DrawRegPolygon( x0,y0, 3, 170, 1);
DrawRegPolygon( x0,y0, 4, 170, 2);
DrawRegPolygon( x0,y0, 5, 170, 3);
DrawRegPolygon( x0,y0, 6, 170, 4);
ȼɨɬ ɪɟɡɭɥɶɬɚɬ.
Ƚɨɪɚɡɞɨ ɥɭɱɲɟ, ɩɪɚɜɞɚ?
ȿɠɟɥɢ ɨɞɢɧ ɱɟɥɨɜɟɤ ɩɨɫɬɪɨɢɥ, ɞɪɭɝɨɣ ɡɚɜɫɟɝɞɚ ɪɚɡɨɛɪɚɬɶ ɦɨɠɟɬ
© ɤ/ɮ «Ɏɨɪɦɭɥɚ ɥɸɛɜɢ»
214

ȿɫɥɢ ɤɬɨ-ɬɨ ɥɢɧɢɢ ɪɢɫɭɟɬ, ɡɧɚɱɢɬ, ɤɬɨ-ɬɨ ɢɯ ɢ ɫɬɢɪɚɟɬ? ɋɩɟɰɢɚɥɶɧɨɝɨ
ɦɟɬɨɞɚ ɞɥɹ ɫɬɢɪɚɧɢɹ ɥɢɧɢɣ, ɭɜɵ, ɧɟɬ. ɇɨ ɭɠɟ ɧɚɪɢɫɨɜɚɧɧɭɸ ɥɢɧɢɸ ɦɨɠɧɨ
ɡɚɧɨɜɨ ɧɚɪɢɫɨɜɚɬɶ ɛɟɥɵɦ ɰɜɟɬɨɦ, ɬɨɱɧɟɟ ɰɜɟɬɨɦ ɮɨɧɚ. ȿɫɥɢ ɬɨɱɧɟɟ, ɥɢɧɢɸ
ɦɨɠɧɨ ɧɚɪɢɫɨɜɚɬɶ ɥɸɛɵɦ ɰɜɟɬɨɦ. Ʉɧɢɝɚ ɧɟ ɰɜɟɬɧɚɹ, ɩɨɷɬɨɦɭ ɤɚɪɬɢɧɤɢ ɧɟ
ɛɭɞɟɬ, ɚ ɩɪɢɦɟɪ ɤɨɞɚ ɛɭɞɟɬ.
c.create_line( x0,y0, x0+s/3,y0-s/3, fill = 'green')
Ɉɛɪɚɬɢɬɟ ɜɧɢɦɚɧɢɟ, ɱɬɨ ɰɜɟɬ ɡɚɞɚɺɬɫɹ ɜ ɤɚɜɵɱɤɚɯ. Ɍɚɤ ɤɚɤ ɠɟ ɫɬɟɪɟɬɶ
ɥɢɧɢɸ ɢ ɡɚɱɟɦ ɷɬɨ ɧɭɠɧɨ? Ɉɱɟɜɢɞɧɨ, ɟɫɥɢ ɦɵ ɱɬɨ-ɬɨ ɧɚɪɢɫɨɜɚɥɢ ɱɺɪɧɵɦ,
ɜɨɬ ɬɚɤ ɢɥɢ ɜɨɬ ɬɚɤ
c.create_line( x0,y0, x0+s/3,y0-s/3)
c.create_line( x0,y0, x0+s/3,y0-s/3, fill = 'black')
ɬɨ ɫɬɢɪɚɬɶ ɛɭɞɟɦ ɬɚɤ:
c.create_line( x0,y0, x0+s/3,y0-s/3, fill = 'white')
Ⱥ ɧɭɠɧɨ ɷɬɨ ɛɵɜɚɟɬ ɞɥɹ ɚɧɢɦɚɰɢɢ, ɬɨ ɟɫɬɶ ɞɥɹ ɪɟɚɥɢɡɚɰɢɢ ɞɜɢɠɟɧɢɹ
ɨɛɴɟɤɬɚ ɧɚ ɷɤɪɚɧɟ. Ⱥɧɢɦɚɰɢɹ – ɷɬɨ ɧɟ ɨɛɹɡɚɬɟɥɶɧɨ ɢɝɪɵ ɢɥɢ ɦɭɥɶɬɮɢɥɶɦɵ,
ɚɧɢɦɚɰɢɹ ɩɪɢɦɟɧɹɟɬɫɹ ɢ ɜ ɨɱɟɧɶ ɫɟɪɶɺɡɧɵɯ ɢ ɫɤɭɱɧɵɯ ɩɪɨɝɪɚɦɦɚɯ.
Ʉɪɭɝɢ ɢ ɩɪɨɱɢɟ ɷɥɥɢɩɫɵ
ɋ ɩɪɹɦɵɦɢ ɭ ɧɚɫ ɭɠɟ ɜɫɺ ɨɱɟɧɶ ɯɨɪɨɲɨ, ɹ ɧɚɞɟɸɫɶ. Ɍɟɩɟɪɶ ɤɪɢɜɵɟ. ɋɚɦɚɹ
ɫɨɜɟɪɲɟɧɧɚɹ ɢɡ ɤɪɢɜɵɯ – ɤɪɭɝ. ɂ ɟɝɨ ɥɭɱɲɢɣ ɞɪɭɝ ɷɥɥɢɩɫ, ɪɚɡɭɦɟɟɬɫɹ.
Ƚɞɟ-ɬɨ ɞɚɥɟɤɨ ɜɜɟɪɯɭ ɦɵ ɭɠɟ ɧɚɪɢɫɨɜɚɥɢ ɨɫɢ ɤɨɨɪɞɢɧɚɬ ɢ ɬɪɟɭɝɨɥɶɧɢɤ ɧɚ
ɢɯ ɮɨɧɟ. Ɍɪɟɭɝɨɥɶɧɢɤ ɭɛɟɪɺɦ ɢ ɧɚɪɢɫɭɟɦ ɤɪɭɝ, ɫ ɰɟɧɬɪɨɦ ɜ ɧɚɱɚɥɟ
ɤɨɨɪɞɢɧɚɬ ɢ ɪɚɞɢɭɫɨɦ ɫɬɨ. ɗɬɨ ɫɚɦɨɟ ɩɪɨɫɬɨɟ, ɱɬɨ ɬɨɥɶɤɨ ɦɨɠɟɬ ɛɵɬɶ ɫ
ɧɚɪɢɫɨɜɚɧɧɵɦ ɤɪɭɝɨɦ. ȼɨɬ ɩɪɨɝɪɚɦɦɧɵɣ ɤɨɞ, ɛɚɡɢɪɭɸɳɢɣɫɹ ɧɚ ɪɚɧɟɟ
ɧɚɩɢɫɚɧɧɨɦ:
from Tkinter import *
c = Canvas( width = 400, height = 400, bg = 'white')
c.pack(expand = YES, fill = BOTH)
x0 = 200
y0 = 200
s = 400
R = 100
c.create_line( 0,y0, s,y0, width = 1)
215

c.create_line( x0,0, x0,s, width = 1)
c.create_oval( x0-R,y0-R, x0+R,y0+R, width = 2)
mainloop()
ȼɨɬ ɪɟɡɭɥɶɬɚɬ ɟɝɨ ɜɵɩɨɥɧɟɧɢɹ:
Ɍɟɩɟɪɶ ɤɨɦɦɟɧɬɚɪɢɢ. Ʉɪɭɝ ɪɢɫɭɟɬ ɦɟɬɨɞ
create_oval. ɍ ɦɟɬɨɞɚ ɱɟɬɵɪɟ
ɩɚɪɚɦɟɬɪɚ. ɉɚɪɚɦɟɬɪɵ ɷɬɢ ɡɚɞɚɸɬ ɩɪɹɦɨɭɝɨɥɶɧɢɤ, ɜ ɤɨɬɨɪɵɣ ɜɩɢɫɚɧ
ɷɥɥɢɩɫ. ɉɟɪɜɵɟ ɞɜɚ – ɤɨɨɪɞɢɧɚɬɵ ɥɟɜɨɝɨ ɜɟɪɯɧɟɝɨ ɭɝɥɚ, ɫɥɟɞɭɸɳɢɟ ɞɜɚ –
ɤɨɨɪɞɢɧɚɬɵ ɥɟɜɨɝɨ ɧɢɠɧɟɝɨ ɭɝɥɚ. ȿɫɥɢ ɧɚɲ ɰɟɧɬɪ ɤɨɨɪɞɢɧɚɬ ɧɚɯɨɞɢɬɫɹ ɜ
ɬɨɱɤɟ (200,200) ɬɨ ɞɥɹ ɤɪɭɝɚ ɫ ɪɚɞɢɭɫɨɦ 100 ɧɚɞɨ ɡɚɞɚɬɶ (200-100,200-100,
200+100,200+100) = (100,100, 300,300).
ɇɟɩɨɧɹɬɧɨ? ȼɨɬ ɢɥɥɸɫɬɪɚɰɢɹ:
ȼɨɬ ɷɬɢ ɠɢɪɧɵɟ ɬɨɱɤɢ ɦɵ ɢ ɞɨɥɠɧɵ ɡɚɞɚɬɶ ɦɟɬɨɞɭ
create_oval, ɱɬɨɛɵ
ɧɚɪɢɫɨɜɚɬɶ ɬɨɬ ɷɥɥɢɩɫ, ɤɨɬɨɪɵɣ ɜɧɭɬɪɢ ɩɪɹɦɨɭɝɨɥɶɧɢɤɚ. ɉɪɢɦɟɱɚɧɢɟ –
ɩɪɹɦɨɭɝɨɥɶɧɢɤ ɩɪɢ ɷɬɨɦ ɧɟ ɧɚɪɢɫɭɟɬɫɹ, ɨɧ ɡɞɟɫɶ ɬɨɥɶɤɨ ɞɥɹ ɧɚɝɥɹɞɧɨɫɬɢ.
Ɉɛɪɚɬɢɬɟ ɜɧɢɦɚɧɢɟ, ɷɥɥɢɩɫ ɱɭɬɶ ɪɚɧɶɲɟ ɦɵ ɪɢɫɨɜɚɥɢ ɜɨɬ ɬɚɤ:
c.create_oval( x0-R,y0-R, x0+R,y0+R, width = 2)
216

ɉɨɫɥɟɞɧɢɣ ɩɚɪɚɦɟɬɪ, ɤɚɤ ɧɟɫɥɨɠɧɨ ɞɨɝɚɞɚɬɶɫɹ, ɷɬɨ ɬɨɥɳɢɧɚ ɥɢɧɢɢ,
ɤɨɬɨɪɨɣ ɧɚɪɢɫɨɜɚɧ ɷɥɥɢɩɫ. ɀɢɪɧɵɟ ɬɨɱɤɢ ɩɨ ɭɝɥɚɦ – ɬɨɠɟ ɷɥɥɢɩɫɵ,
ɬɨɥɶɤɨ ɦɚɥɟɧɶɤɢɟ, ɢ ɪɢɫɭɸɬɫɹ ɨɧɢ ɬɚɤ:
c.create_oval( x0-120-4,y0-70-4, x0-120+4,y0-70+4, fill = 'black')
c.create_oval( x0+120-4,y0+70-4, x0+120+4,y0+70+4, fill = 'black')
ȼɟɥɢɱɢɧɵ 120 ɢ 70 – ɪɚɞɢɭɫɵ ɧɚɲɟɝɨ ɨɫɧɨɜɧɨɝɨ, ɛɨɥɶɲɨɝɨ ɷɥɥɢɩɫɚ. ȼ
ɩɪɚɜɢɥɶɧɨɣ ɩɪɨɝɪɚɦɦɟ ɜɦɟɫɬɨ ɤɨɧɤɪɟɬɧɵɯ ɱɢɫɟɥ ɞɨɥɠɧɵ ɫɬɨɹɬɶ
ɩɟɪɟɦɟɧɧɵɟ. 4 – ɪɚɞɢɭɫ ɠɢɪɧɨɣ ɬɨɱɤɢ. Ⱥ ɩɨɫɥɟɞɧɢɣ ɩɚɪɚɦɟɬɪ ɞɟɥɚɟɬ
ɠɢɪɧɭɸ ɬɨɱɤɭ ɞɟɣɫɬɜɢɬɟɥɶɧɨ ɠɢɪɧɨɣ – ɨɧ ɡɚɤɪɚɲɢɜɚɟɬ ɜɟɫɶ ɦɚɥɟɧɶɤɢɣ
ɷɥɥɢɩɫ ɱɺɪɧɵɦ ɰɜɟɬɨɦ.
Ⱥ ɬɟɩɟɪɶ ɡɚɞɚɱɚ ɱɭɬɶ ɛɨɥɟɟ ɦɚɬɟɦɚɬɢɱɟɫɤɚɹ. ɇɚɪɢɫɭɟɦ ɪɚɜɧɨɫɬɨɪɨɧɧɢɣ
ɬɪɟɭɝɨɥɶɧɢɤ ɢ ɨɩɢɫɚɧɧɭɸ ɜɨɤɪɭɝ ɧɟɝɨ ɨɤɪɭɠɧɨɫɬɶ. Ɋɚɜɧɨɫɬɨɪɨɧɧɢɣ
ɬɪɟɭɝɨɥɶɧɢɤ ɷɬɨ ɬɚɤɨɣ, ɭ ɤɨɬɨɪɨɝɨ ɪɚɜɧɵ ɜɫɟ ɬɪɢ ɫɬɨɪɨɧɵ ɢ ɜɫɟ ɬɪɢ ɭɝɥɚ.
Ʉɫɬɚɬɢ, ɢɡ ɩɟɪɜɨɝɨ ɪɚɜɟɧɫɬɜɚ ɫɥɟɞɭɟɬ ɜɬɨɪɨɟ ɢ ɧɚɨɛɨɪɨɬ. Ʌɟɜɵɣ ɧɢɠɧɢɣ
ɭɝɨɥ ɬɪɟɭɝɨɥɶɧɢɤɚ ɩɭɫɬɶ ɫɨɜɩɚɞɚɟɬ ɫ ɧɚɱɚɥɨɦ ɤɨɨɪɞɢɧɚɬ.
ɇɚɩɨɦɧɸ, ɯɨɬɹ ɜɵ ɧɚɜɟɪɧɹɤɚ ɡɧɚɟɬɟ, ɱɬɨ ɰɟɧɬɪ ɨɩɢɫɚɧɧɨɣ ɜɨɤɪɭɝ
ha
)3,2(
ɪɚɜɧɨɫɬɨɪɨɧɧɟɝɨ ɬɪɟɭɝɨɥɶɧɢɤɚ ɨɤɪɭɠɧɨɫɬɢ ɥɟɠɢɬ ɜ ɬɨɱɤɟ
a
ɟɺ ɪɚɜɟɧ
R
3
, ɝɞɟ a – ɫɬɨɪɨɧɚ ɬɪɟɭɝɨɥɶɧɢɤɚ, ɚ h, ɜ ɫɜɨɸ ɨɱɟɪɟɞɶ,
, ɚ ɪɚɞɢɭɫ
3
a
ɜɵɫɨɬɚ ɬɪɟɭɝɨɥɶɧɢɤɚ, ɪɚɜɧɚɹ
h
3
.ȼɫɺ ɞɥɹ ɜɚɫ ɞɨɥɠɧɨ ɛɵɬɶ ɭɠɟ ɩɪɨɫɬɨ
2
ɢ ɨɱɟɜɢɞɧɨ.
from Tkinter import *
x0 = 200
y0 = 200
a = 150
h = (3**0.5)*a/2
R = (3**0.5)*a/3
c = Canvas( width = 400, height = 400, bg = 'white')
c.pack(expand = YES, fill = BOTH)
c.create_line( 0,y0, 400,y0)
c.create_line( x0,0, x0,400)
c.create_line(x0,y0, x0+a,y0, width=3)
217

c.create_line(x0,y0, x0+a/2,y0-h, width=3)
c.create_line(x0+a,y0, x0+a/2,y0-h, width=3)
c.create_oval( x0+a/2+R,y0-h/3+R, x0+a/2-R,y0-h/3-R)
mainloop()
Ⱦɨɜɨɥɶɧɨ ɫɢɦɩɚɬɢɱɧɵɣ ɪɟɡɭɥɶɬɚɬ.
ȼ ɝɟɨɦɟɬɪɢɢ ɩɪɢɧɹɬɨ ɨɛɨɡɧɚɱɚɬɶ ɜɟɪɲɢɧɵ, ɭɝɥɵ ɢ ɜɨɨɛɳɟ ɜɫɺ, ɱɬɨ ɬɨɥɶɤɨ
ɜɨɡɦɨɠɧɨ, ɛɭɤɜɚɦɢ. Ȼɭɤɜɚɦɢ ɦɵ ɡɚɣɦɺɦɫɹ ɜ ɫɥɟɞɭɸɳɟɦ ɪɚɡɞɟɥɟ, ɚ ɩɨɤɚ
ɡɚɜɟɪɲɢɦ ɬɟɦɭ ɫ ɤɪɭɝɚɦɢ ɢ ɷɥɥɢɩɫɚɦɢ. Ɇɟɬɨɞɨɜ ɭ ɯɨɥɫɬɚ ɧɟ ɬɚɤ ɢ ɦɧɨɝɨ,
ɬɚɤ ɱɬɨ ɦɨɠɧɨ ɪɚɫɫɦɨɬɪɟɬɶ ɜɨɨɛɳɟ ɜɫɟ. ɋɥɟɞɭɸɳɢɣ ɦɟɬɨɞ ɧɚɡɵɜɚɟɬɫɹ
create_arc().Ɉɧ ɬɨɠɟ ɪɢɫɭɟɬ ɷɥɥɢɩɫ, ɧɨ ɧɟ ɜɟɫɶ, ɚ ɬɨɥɶɤɨ ɱɚɫɬɶ ɨɬ ɧɟɝɨ. ȼ
ɝɟɨɦɟɬɪɢɢ ɷɬɨ ɧɚɡɵɜɚɟɬɫɹ
ɞɭɝɚ.
Ⱦɥɹ ɧɚɱɚɥɶɧɨɝɨ ɩɨɫɬɢɠɟɧɢɹ ɞɨɫɬɚɬɨɱɧɨ ɫɥɟɞɭɸɳɟɝɨ ɤɨɞɚ, ɟɫɥɢ ɩɨɫɥɟ ɧɟɝɨ
ɩɨɫɦɨɬɪɟɬɶ ɧɚ ɤɚɪɬɢɧɤɭ. ɇɚ ɤɚɪɬɢɧɤɟ, ɜ ɨɛɹɡɚɬɟɥɶɧɨɦ ɩɨɪɹɞɤɟ, ɨɫɢ
ɤɨɨɪɞɢɧɚɬ ɢ
ɰɟɥɶɧɵɣ ɷɥɥɢɩɫ, ɱɚɫɬɶ ɨɬ ɤɨɬɨɪɨɝɨ ɦɵ ɪɢɫɭɟɦ.
x0 = 100
y0 = 200
c.create_line( 0,y0, 400,y0)
c.create_line( x0,0, x0,400)
c.create_arc( x0-50,y0-100, x0+50,y0+100, width = 3)
c.create_oval( x0-50,y0-100, x0+50,y0+100, width = 1)
ə ɧɟ ɩɢɲɭ ɡɞɟɫɶ ɫɨɜɟɪɲɟɧɧɨ ɨɛɹɡɚɬɟɥɶɧɵɟ ɫɬɪɨɤɢ ɩɪɨ
mainloop ɢ ɩɪɨɱɟɟ – ɜɵ ɜɫɺ ɷɬɨ ɭɠɟ ɩɪɟɤɪɚɫɧɨ ɨɫɜɨɢɥɢ. ȼɨɬ ɪɟɡɭɥɶɬɚɬ:
import, pack,
218

Ɍɨ, ɱɬɨ ɤɚɪɬɢɧɤɚ ɤɚɤ ɛɵ ɜɵɬɹɧɭɬɚ ɩɨ ɜɟɪɬɢɤɚɥɢ, ɬɚɤ ɷɬɨ ɬɚɤ ɢ ɡɚɞɭɦɚɧɨ.
Ɍɨɧɤɨɣ ɥɢɧɢɟɣ ɧɚɪɢɫɨɜɚɧɵ ɤɨɨɪɞɢɧɚɬɵ ɢ ɬɨɬ ɷɥɥɢɩɫ, ɨɬ ɤɨɬɨɪɨɝɨ ɦɵ
ɨɬɤɭɫɢɥɢ ɤɭɫɨɤ. ɋɚɦɚ ɞɭɝɚ ɬɨɥɫɬɚɹ ɢ ɠɢɪɧɚɹ. ɑɬɨ ɢɧɬɟɪɟɫɧɨ? Ⱦɥɹ
ɪɢɫɨɜɚɧɢɹ ɷɥɥɢɩɫɚ ɢ ɞɭɝɢ ɢɫɩɨɥɶɡɨɜɚɧɵ ɨɞɧɢ ɢ ɬɟ ɠɟ ɤɨɨɪɞɢɧɚɬɵ, ɚ
ɪɟɡɭɥɶɬɚɬ ɩɪɢɧɰɢɩɢɚɥɶɧɨ ɪɚɡɧɵɣ. Ȼɭɞɟɦ ɪɚɡɛɢɪɚɬɶɫɹ. ɉɨ ɭɦɨɥɱɚɧɢɸ, ɞɭɝɚ
ɢɦɟɟɬ ɪɚɡɦɟɪ ɪɨɜɧɨ ɜ 90
q. ȼ ɷɬɨɦ ɨɬɧɨɲɟɧɢɢ ɉɢɬɨɧ ɜɟɞɺɬ ɫɟɛɹ ɨɱɟɧɶ
ɞɪɭɠɟɫɬɜɟɧɧɨ ɤ ɩɪɨɝɪɚɦɦɢɫɬɭ, ɜ ɞɪɭɝɢɯ ɹɡɵɤɚɯ ɢɫɩɨɥɶɡɭɸɬ ɜɦɟɫɬɨ
ɝɪɚɞɭɫɨɜ ɪɚɞɢɚɧɵ. Ⱦɭɝɚ ɢɞɺɬ ɨɬ ɝɨɪɢɡɨɧɬɚɥɢ – ɬɨ ɟɫɬɶ ɨɬ ɥɢɧɢɢ, ɢɞɭɳɟɣ
ɦɟɠɞɭ ɧɚɱɚɥɨɦ ɤɨɨɪɞɢɧɚɬ ɢ ɤɪɚɣɧɟɣ ɩɪɚɜɨɣ ɬɨɱɤɨɣ ɧɚɲɟɝɨ ɷɥɥɢɩɫɚ.
Ɂɚɞɚɧɧɵɟ 90
q ɨɬɫɱɢɬɵɜɚɸɬɫɹ ɩɪɨɬɢɜ ɱɚɫɨɜɨɣ ɫɬɪɟɥɤɢ. ȿɫɥɢ ɜɫɺ ɷɬɨ
ɤɚɠɟɬɫɹ ɜɚɦ ɩɨɤɚ ɧɟ ɨɱɟɧɶ ɩɨɧɹɬɧɵɦ, ɬɨ ɹ ɫ ɜɚɦɢ ɫɨɝɥɚɫɟɧ. ɉɨɫɬɢɝɚɬɶ
ɪɢɫɨɜɚɧɢɟ ɞɭɝ ɛɭɞɟɦ ɧɚ ɨɩɵɬɚɯ.
Ⱦɥɹ ɧɚɱɚɥɚ ɡɚɞɚɞɢɦ ɞɭɝɭ ɩɨɦɟɧɶɲɟ, ɜ 45
q.
c.create_arc( x0-50,y0-100, x0+50,y0+100, width = 3, extent = 45)
219

ɂɬɚɤ, ɩɚɪɚɦɟɬɪ
extent ɨɬɜɟɱɚɟɬ ɡɚ ɪɚɡɦɟɪ ɞɭɝɢ ɜ ɝɪɚɞɭɫɚɯ. Ɍɟɩɟɪɶ ɜɢɞɧɨ,
ɩɨɱɟɦɭ ɨɝɨɜɨɪɟɧɨ ɪɢɫɨɜɚɧɢɟ ɢɦɟɧɧɨ ɩɪɨɬɢɜ ɱɚɫɨɜɨɣ ɫɬɪɟɥɤɢ. ɂɞɺɦ
ɞɚɥɶɲɟ. ɋɟɣɱɚɫ ɦɵ ɧɚɪɢɫɨɜɚɥɢ ɞɭɝɭ ɦɟɠɞɭ ɬɪɟɦɹ ɢ ɲɟɫɬɶɸ ɱɚɫɚɦɢ, ɟɫɥɢ
ɜɟɪɧɭɬɶɫɹ ɤ ɩɨɧɹɬɢɹɦ ɱɚɫɨɜɨɝɨ ɰɢɮɟɪɛɥɚɬɚ. Ⱥ ɟɫɥɢ ɧɚɞɨ ɦɟɠɞɭ
ɩɨɥɭɞɧɟɦ – ɞɜɟɧɚɞɰɚɬɶɸ – ɢ ɬɪɟɦɹ? ɍɱɢɦ ɧɨɜɨɟ ɫɥɨɜɨ.
c.create_arc( x0-50,y0-100, x0+50,y0+100, width = 3,
extent = 45, start = 45)
Ɋɚɡɭɦɟɟɬɫɹ, ɬɨ, ɱɬɨ ɞɜɚ ɪɚɡɚ ɜɫɬɪɟɬɢɥɨɫɶ ɱɢɫɥɨ 45 – ɷɬɨ ɱɢɫɬɨ ɫɥɭɱɚɣɧɨ ɢ
ɫɨɜɩɚɞɚɬɶ ɨɧɢ ɧɟ ɨɛɹɡɚɧɵ. Ɍɪɟɬɢɣ ɩɚɪɚɦɟɬɪ, ɩɪɟɞɫɬɚɜɥɹɸɳɢɣ ɢɧɬɟɪɟɫ ɢ
ɭɧɢɤɚɥɶɧɵɣ ɢɦɟɧɧɨ ɞɥɹ ɞɭɝɢ, ɧɚɡɵɜɚɟɬɫɹ ɧɟ ɨɱɟɧɶ ɨɪɢɝɢɧɚɥɶɧɨ –
style.
ɑɟɦ ɪɚɫɫɤɚɡɵɜɚɬɶ ɫɥɨɜɚɦɢ, ɩɪɨɳɟ ɩɨɤɚɡɚɬɶ.
x0 = 100
y0 = 200
r = 70
c.create_arc( x0-r,y0-r, x0+r,y0+r, width = 3, style = ARC)
c.create_oval( x0-r,y0-r, x0+r,y0+r)
x0 = x0 + 3*r
c.create_arc( x0-r,y0-r, x0+r,y0+r, width = 3, style = CHORD)
c.create_oval( x0-r,y0-r, x0+r,y0+r)
x0 = x0 + 3*r
c.create_arc( x0-r,y0-r, x0+r,y0+r, width = 3, style = PIESLICE)
c.create_oval( x0-r,y0-r, x0+r,y0+r)
220
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
