„miniLOGIA grafika w Logo” to konkurs informatyczny dla uczniów szkół podstawowych województwa mazowieckiego organizowany przez Ośrodek Edukacji Informatycznej i Zastosowań Komputerów (OEIiZK) na zlecenie Mazowieckiego Kuratora Oświaty. Konkurs składa się z trzech etapów, podczas których uczniowie samodzielnie rozwiązują zadania graficzne w językach Logo lub Python (z zainstalowanym modułem turtle).
W serii artykułów przedstawię rozwiązania zadań w języku Python, opracowane przeze mnie na potrzeby tej strony. Jako środowisko, w którym opracowałem rozwiązania zadań wykorzystałem zalecane przez organizatora oprogramowanie Python 3.5.*.
Zadanie 1
Napisz bezparametrową procedurę/funkcję panda, po wywołaniu której powstanie rysunek głowy pandy, taki jak poniżej. Długość boku największego wielokąta wynosi 80, boki wielokątów tworzących oko i ucho pandy są tej samej długości. Pozostałe długości odcinków i proporcje odczytaj z rysunków pomocniczych.
Rozwiązanie:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 |
from turtle import * a=10 def szescian(bok): begin_fill() for i in range(6): fd(bok) rt(60) end_fill() def oko(): pu() rt(60) fd(8*a) lt(60) fd(a) for i in range(2): rt(60) fd(a*2) rt(60) bk(a) pd() fillcolor('black') szescian(a*4) fd(a) fillcolor('white') szescian(a*2) fd(a/2) fillcolor('black') szescian(a) pu() bk(a/2) rt(120) for i in range(2): fd(a*2) lt(60) fd(a) rt(60) fd(a*8) rt(120) pd() def ucho(): fd(a*2) begin_fill() for i in range(8): fd(a*4) lt(45) end_fill() fd(a*6) def oko_i_ucho(): oko() ucho() rt(30) def nos_i_usta(): pu() rt(60) fd(8*a) lt(30) szescian(a*2) lt(90) pd() for i in range(4): fd(2*a) rt(45) for i in range(4): lt(45) bk(2*a) lt(60) for i in range(4): fd(2*a) lt(45) for i in range(4): rt(45) bk(2*a) def glowa(): for i in range(4): fd(a*8) rt(30) oko_i_ucho() for i in range(3): fd(a*8) rt(30) oko_i_ucho() for i in range(3): fd(a*8) rt(30) nos_i_usta() def panda(): reset() pu() lt(90) bk(200) lt(90) bk(40) pd() glowa() |
Wynik działania programu:
panda()