Стратегия решения олимпиадных задач — КиберПедия 

История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...

Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...

Стратегия решения олимпиадных задач

2019-05-27 174
Стратегия решения олимпиадных задач 0.00 из 5.00 0 оценок
Заказать работу

Решение можно проверят двумя способами:

1. проверка программ по завершению тура;

2. проверка программ в он-лайн режиме.

Беренчесендә казыйларга мәсьәләләрне әзерләү җиңелрәк. Ләкин тикшерү вакыты артыграк була. Аннары дөрес бәяләүе буенчә чиге ачыкланып бетми. Икенчесендә тикшерү эше күз алдында барганда эшне бәяләү буенча тыуп барган күп кенә сораулар тешеп кала.

Шулай ук мәсьәләләрне ике төрле бәяләргә була:

1. Чишелгән мәсьәләләрне исәптә тотып, аларны чишү вакыты белән кабат чишелешне тапшыру нәтиҗәсендә урыннар билгеләү;

2. Узган тестлар белән тапшыру вакытын истә тотып урыннар билгеләү;

Беренче ысул белән мәсьәләне бәяләгәндә. Иң элек таныш һәм җиңел чишелә торган мәсьәләләрне карап чишергә кирәк. Аннары чишелеше таныш булган авыррак мәсьәләләрне. Шуннан җиңел мәсьәләләрне чишергә. Соңыннан гына таныш булмаган авыр дип исәпләнгән иәсьәләләрне өйрәнеп чишергә кирәк. Чөнки алдан чишелгән мәсьәләләрнең чишү вакыты калганнарына кушылып бара. Нихәтле шул вакыт кимрәк булса шул вакытка штраф баллар кимрәк була. Шуннан чыгып алда тизрәк чишелә торган мәсьәләләрне чишергә кирәк. Мәсьәләләрне тикшерүгә җибәргәнче мөмкин булганча укучыга тулысынча алдан тикшереп чыгырга кирәк.

Икенче ысул белән мәсьәләләрне бәяләгәндә беренчедән таныш булган җиңелләрен чишергә кирәк. Икенчедән таныш булган авырларына күчергә кирәк. Ә инде вакыт кысырынкы булганда мәсьәләларнең аңлаган элешен чишеп чыгып тапшырып куерга кирәк.


Литература и электронные ресурсы

1. Н.Прохоренко,В.Дронов. Python 3 и PyQt5/ Разработка приложений. Изд-во «БХВ Петербург». С.-Петербург. 2016.

2. Эрик Мэтиз. Изучаем PYTHON. Программирование игр, визуализация данных, ВЕБ-приложенние. – СПб.: Питер. 2017.

3. http://younglinux.info/book/export/html/48

4. http://younglinux.info/tkinter/canvas.php

5. http://pythonworld.ru/samouchitel-python

6. https://habrahabr.ru/post/29778/7.

7. https://www.jetbrains.com/help/pycharm/2016.2/ctrl-shift.html

8. http://pythontutor.ru/lessons/lists/

9. http://pythontutor.ru/lessons/int_and_float/

10. https://www.youtube.com/watch?v=7rNvoPy1fb4

11. https://www.youtube.com/watch?v=wDgZdYRQ4gU

12. http://pythonworld.ru/samouchitel-python

13. https://habrahabr.ru/post/29778/

14. «Изучаем Python», 4-е издание. Марк Лутц.

15. «Основы программирования на Python. Вводный курс». С. Шапошникова.

16. «OpenGL. Программирование компьютерной графики» (Computer Grafics Using OpenGL. Second Edition). Френсис Хилл.

17. https://ru.wikipedia.org

18. «Основы OpenGL». И. Тарасов.

19. http://steps3d.narod.ru

20. «Think Python: How to Think Like a Computer Scientist», Allen B. Downey.

21. https://pythonworld.ru


Приложения

Задачи ЕГЭ

Задача C4-0-1.

Решение на языке Python 3.

Автор: Константин Поляков, 2013

E-mail: [email protected]

Web: kpolyakov.spb.ru

В первой строке сообщается количество учащихся N, каждая из следующих N строк имеет формат:

<Фамилия> <Инициалы> <номер школы>

где <Фамилия> – строка, состоящая не более чем из 20 символов,

<Инициалы> – строка, состоящая из 4-х символов (буква, точка, буква,

точка), <номер школы> – не более чем двузначный номер. <Фамилия> и

<Инициалы>, а также <Инициалы> и <номер школы> разделены одним пробелом. Пример входной строки:

Иванов П.С. 57

Требуется написать как можно более эффективную программу, которая будет выводить на экран информацию, из какой школы было меньше всего участников (таких школ может быть несколько). При этом необходимо вывести информацию только по школам, пославшим хотя бы одного участника. Следует учитывать, что N>=1000.

import sys

save_stdin = sys.stdin

sys.stdin = open("in/0-1.in")

N = int(input())

schCount = {}

for i in range(N):

fam, io, school = input().split()

schCount[school] = schCount.get(school, 0) + 1

minCount = min(schCount.values())

schMin = [x[0] for x in list(schCount.items()) if x[1] == minCount]

for x in sorted(schMin):

print(x)

sys.stdin = save_stdin


 

Особенности

· «del» очи щает переменны е или элемент ы массива.

· Python имеет большие возможности для работы со списками. Можно использовать операторы объявлении структуры списка. Оператор for может задавать элементы списка в определенной последовательности, а if – может выбирать элементы по условию.

lst1 = [1, 2, 3]

lst2 = [3, 4, 5]

print [x * y for x in lst1 for y in lst2] # [3, 4, 5, 6, 8, 10, 9, 12, 15]

print [x for x in lst1 if 4 > x > 1] # [2, 3]

# Оператор «any» возвращает true, если хотя бы одно из условий, входящих

# в него, выполняется.

any (i % 3 for i in [3, 3, 4, 4, 3])

True

# Следующая процедура подсчитывает количество подходящих элементов

# в списке

sum(1 for i in [3, 3, 4, 4, 3] if i == 3) # 3

del lst1[0]

print lst1 # [2, 3]

del lst1

Сумма цифр числа

N = int(input()) sum = 0 while N > 0: d = N%10 sum += d  N = N // 10 print(sum) N = int(input()) sum = 0 while N > 0: sum += N%10  N = N // 10 print(sum)

Число разрядов числа в двоичной записи числа

x = int(input())

cnt = 0

while x > 0:

cnt += 1

x //= 10

print(cnt)

Число единиц в двоичной записи числа

x = int(input())

cnt = 0

while x > 0:

cnt += x % 2

x //= 2

print(cnt)

Максимальная цифра числа

N = int(input()) maxD = N % 10 while N > 0: d = N % 10 if d > maxD:     maxD = d N //= 10 print(maxD) s= input() S=list(s) print(max(S)) print(max(list(input())))

 

Сумма всех отрицательных чисел последовательности и максимальное число в последовательности

mx = s = 0

for i in range(1, 5):

x = int(input())

if x < 0: s += x

if x > mx: mx = x

print(s, mx)

1. Задан текст, завершающийся точкой. Написать программу вывода самого большого числа из цифр, использованных в тексте.

x=input() A=[0,0,0,0,0,0,0,0,0,0] i=0 while(x[i]!='.'): if x[i]>='0' and x[i]<='9': A[int(x[i])]+=1: i+=1 for z in range(9,-1,-1): print(z*A[z],end='') var a:array['0'..'9'] of integer; i,j,k:integer; c:char; begin for c:='0' to '9' do a[c]:=0; repeat read(c): if c in ['0'..'9'] then a[c]:=a[c]+1  // if (c>='0') and (c<='9') then a[c]:=a[c]+1 until c='.'; for c:='9' downto '0' do for i:=1 to a[c] do    write(c) end.

2. Задано число N и последовательность N натуральных чисел. В конце данных задается контрольное значение. Контрольное значение – максимальное произведение двух чисел из этой последовательности кратных 21.

N = int(input())

M3 = M7 = M21 = M = 0

for i in range(N):

x = int(input())

if x % 21!= 0:

     if x % 3 == 0: M3 = max(M3, x)

   if x % 7 == 0: M7 = max(M7, x)

if x % 21 == 0 and x > M21:

   M = max(M21, M)

   M21 = x

else:

   M = max(M, x)

R = max(M3* M7, M21* M)

print("Контрольное значение - ", R)

R0 = int(input())

if R == R0: # if int(input()) == R0:

print("Контроль пройден")

else:

print("Контроль не пройден")

       3. №11. Ниже записаны две рекурсивные процедуры: F и G:

def F(n):

if n > 0:

G(n - 1)

def G(n):

print('*')

if n > 1:

F(n - 2)

Сколько символов «звёздочка» будет напечатано на экране при выполнении вызова F(11)?

    4. №20

x = int(input())

L = x-45

M = x+45

while L!= M:

if L > M: L –= M

else: M –= L

print(M)


Функции PyCharm

Комбинация Фукция

Клавиш

Backspace     удаление символа.

Ctrl + X           вырезать линию или выделение.

Shift + Down перемещение текущей строки вниз.

Shift + End     выделение текста от курсора до конца строки.

Shift+Enter   Start a new line after the current one, positioning the caret in accordance with the current indentation level (equal to sequential pressing End, Enter).

Shift + Escape Скрытие инструментов активного окна

Shift + Home выделение текста от курсора до начала строки.

Ctrl + V           вставка из буфера обмена.

Shift + Left     перемещение влево с выделением текста.

Shift + Page Down     перемещение на одну страницу вниз с выделением текста.

Shift + Page Up перемещение на одну страницу вверх с выделением текста.

Shift + Right   перемещение вправо с выделением текста.

Shift + Tab     снять отступ, переместив блок на прежний уровень отступа

Shift + F 1        внешнее описание

Shift + F 2        одно из следующих действий: «Перейти к предыдущей выделенной ошибке» или «Остановка Программы»

F 3/ Shift + F 3   переход к следующему/предыдущему вхождению выделенного слова в редакторе

Shift + F 4      

Shift + F 5      

Shift + F 6        переименование и исправление ссылки. (Рефакторинг)

Shift + F 7        построчное исполнение

Shift + F 8        шаг к первой выполняемой строке после возвращения из текущего метода.

Shift + F 9        построчное исполнение основного модуля

Shift + F 10      исполнение программы

Shift + F 11      управление существующими закладками и перемещение между ними

Shift + F 12      установка схемы PyCharm по умолчанию (инструмент позиции окна, расположение кнопок и заказ). Чтобы восстановить схему по умолчанию, установите флажок сохранить текущий макет по умолчанию в меню "окно".


Рисунки

Рисунок с использованием библиотеки Turtle

#16 в ширину 23 в длину
import turtle
s = ['#726d45', '#706f41', '#736c3e', '#7a7442', '#86804e', '#87824a', '#888552',

 '#8a8959', '#919062', '#959466', '#a19861', '#a7a16d', '#afa66f', '#aa9e6c',

 '#b2a76f', '#b0a669',

 '#827c4a', '#7d7648', '#7e7846', '#84794c', '#8f8351', '#8f8955', '#959162',

 '#9c9869', '#a39f72', '#a29b6d', '#aa9e6c', '#b1aa7c', '#b6ac7b', '#b0a56f',

 '#b2a676', '#b9a975',

 '#86804e', '#8b8551', '#918851', '#96874c', '#998e56', '#9e955c', '#81744a',

 '#65553c', '#685a40', '#7d6f4c', '#a89c6c', '#b7ad70', '#b7ac74', '#baa971',

 '#b9a874', '#bdb27c',

 '#938956', '#9d945d', '#9c9255', '#a59655', '#aa9a66', '#51472c', '#492f14',

 '#291a13', '#170f0d', '#1a0f0d', '#302418', '#a0905c', '#bdb47d', '#b8ad75',

 '#c1b784', '#c4bf87',

 '#9d925a', '#a29960', '#aa9b60', '#aca16b', '#796b48', '#987a44', '#d2b16a',

 '#c49954', '#6b4b24', '#19110f', '#120c09', '#2a2319', '#bdb47b', '#c4be8c',

 '#c7bd8a', '#d0c689',

 '#a69c5e', '#a89d65', '#ada46b', '#abaa7c', '#604822', '#dcb670', '#e1c178',

 '#e5bd66', '#bb8932', '#513917', '#170f0d', '#0d0b0c', '#7a724d', '#c2b781',

 '#c9c183', '#cfcb8c',

 '#aea467', '#ada773', '#b8b072', '#7d6c41', '#684e2d', '#daaf6a', '#e2bd6c',

 '#d4a555', '#cf9e51', '#996d2e', '#18100d', '#0d0b0c', '#3d3824', '#8b864e',

'#9f9f69', '#adbb7d',

'#686834', '#a19f66', '#b0ae73', '#56482b', '#432e19', '#89602c', '#bb8a3d',

 '#926629', '#6d4b1d', '#7f5c22', '#22150d', '#0d0b0c', '#252116', '#5e633a',

   '#768357', '#7c8a57',

 '#424623', '#5f5b2e', '#5d5b34', '#3b301e', '#6e502a', '#d2a355', '#c9994f',

 '#cb9c4e', '#d6ab5c', '#ac7a31', '#18100d', '#0c0a0d', '#181712', '#66673f',

 '#707b50', '#6b7d4d',

 '#2b331b', '#30341d', '#27271b', '#1a0e0e', '#4c3219', '#d2a057', '#ac8446',

 '#b88b48', '#ca994c', '#6a4b1c', '#100b08', '#0c0a0b', '#0f0d0e', '#3a3e27',

 '#57613f', '#5f6f48',

 '#2a2d1c', '#29301e', '#1e2418', '#100a0c', '#1e130d', '#b38138', '#a17335',

 '#986c2f', '#b18137', '#543c16', '#0c0a0b', '#070508', '#0a0a0c', '#393d26',

 '#4e5939', '#475733',

 '#212719', '#2a321a', '#3a3f21', '#171611', '#09070a', '#523e1d', '#c19244',

 '#a47934', '#705220', '#2b200e', '#0a0809', '#080607', '#0d0c08', '#414021',

 '#5b6037', '#5a6231',

 '#2a2d1c', '#373a27', '#565536', '#241d15', '#09070a', '#030305', '#2e2311',

 '#332313', '#1b140c', '#211610', '#1b1310', '#0a080b', '#0a080b', '#2b2b1f',

 '#4b5439', '#57623a'

 '#42462f', '#4c5039', '#595635', '#2d2a1b', '#0a080b', '#060608', '#13120e',

 '#876a32', '#534520', '#735d23', '#563e18', '#15100d', '#181310', '#1c1c12',

 '#4d4c2e', '#5c5a33',

'#242515', '#212318', '#212318', '#0d0e09', '#060608', '#15100d', '#6e5829',

 '#be9448', '#bd9442', '#c89a45', '#a3772e', '#332313', '#382916', '#0f0d10',

 '#26261a', '#484522',

 '#232011', '#11120d', '#10110c', '#030305', '#120d0a',  '#a07934', '#d3ae5d'

 '#ddb55e', '#dfb55f', '#d8b059', '#b58731', '#4a3017',    '#332816', '#1b1311',

 '#1d1513', '#3d3c1e',

 '#302e19', '#282919', '#100f0b', '#090909', '#61431f', '#d5ad56', '#e1bc6b',

 '#dfbb63', '#e2be66', '#dcb65b', '#aa7b2d', '#4e3419', '#352a16', '#544120',

 '#4a3a21', '#181713',

 '#50491b', '#1b1b11', '#010506', '#2d2210', '#c59b49', '#e4c167', '#e0bc64',

 '#e6c774', '#e4c670', '#dcb65f', '#a67729', '#6a4e1c', '#876827', '#695226'

, '#362e1b', '#0f0f0f', '#3c3616', '#030708', '#030708', '#282516', '#876a32',

 '#bc9d4d', '#dfc16b',

'#d9c679', '#dec872', '#cdaf59', '#735e25', '#342c19', '#13120e', '#0e0e10',

 '#09080e', '#03060b', '#05090a', '#030708', '#0e0e0e', '#252616', '#282917',

'#413a20', '#554724',

 '#67542a', '#6a592b', '#3e3b1a', '#181a0f', '#060a0b', '#181913', '#181913',

 '#090d0e', '#060a0b', '#03060b', '#02050a', '#0a0e0f', '#090d0e', '#0b0f10',

 '#272a17', '#2a2b1b',

 '#1c1c12', '#181d16', '#080c0d', '#030708', '#090d0e', '#121711', '#25251b'

 , '#3b3622', '#222218', '#03060d', '#03060d', '#03060b', '#030708', '#05090a',

 '#070b0c', '#090d0e',

 '#0f140e', '#060a0b', '#05090a', '#05080d', '#050b0b', '#111610', '#35301c',

 '#2e2818', '#0a0e0f',

 '#05080f', '#03060d', '#03060b', '#02050a', '#03060b', '#05090a', '#080c0d',

 '#070d0d', '#05080d', '#030708', '#03060b', '#060a0b', '#151a14', '#151611',

 '#080b10', '#06090e']

turtle.width(1)
turtle.tracer(0)
turtle.penup()
k = 539
turtle.goto(-959,k)
for i in range(23):
for j in range(16):
   turtle.begin_fill()
   turtle.color(s.pop(0))
   turtle.pendown()
   for n in range(4):
       turtle.forward(40)
       turtle.right(90)
   turtle.end_fill()
   turtle.forward(40)
turtle.penup()
k -= 40
turtle.goto(-959,k)
turtle.done()

Рисунок с использованием библиотеки Canvas

from tkinter import *
root = Tk()

h, a, d = 100, 120, 300
count = 50
house_h = 150
wigth = a+d+80
height = wigth
x1, x2, x3 = 40, 40 + a/2, 40 + a
x4 = x2 + d
x5 = x3 + d
y1 = (wigth - h)/2
y2 = y1 + h
y_x1 = y2-10
r = d/count
n = int((h//r)+1)
stepx, stepy = a/2/n, h/n
x = list(map(lambda i: x2+stepx*i, range(n)))
y = list(map(lambda i: y1+stepy*i, range(n)))
# ДОМ
с = Canvas(root, width = wigth, height = height, bg = "lightblue")
с.create_polygon(0, height, 0, height-house_h//2-80, wigth, height-house_h//2-80, wigth, height, fill= "green")
с.create_polygon(x1, y_x1, x2, y1, x3, y2, fill = "grey")
с.create_polygon(x1, y_x1+house_h, x1, y_x1, x3, y2, x3, y2+house_h, fill = "orange3")
с.create_polygon(x3, y2, x5, y2, x5, y2+house_h, x3, y2+house_h, fill = "orange4")
# РЕЛЬЕФ НА КРЫШЕ
for i in range(n-1, -1, -1):
xs1, xs2 = x[i], x[i]+r*2
ys1, ys2 = y[i]-r, y[i]+r
for j in range(count//2):
   с.create_arc(xs1, ys1, xs2, ys2, start = 180, extent = 200, style = CHORD, fill = "grey")
   xs1 = xs2
   xs2 += r*2
с.pack()
root.mainloop()

 

Рисунок с использованием библиотеки Canvas

from tkinter import *
root = Tk()
w = h = 700
с = Canvas(root, height=h, bg= "white", cursor= "pencil")
step_width = 100 # ширина ступеньки
step_count = round((w - 100)//step_width) #число ступеней
# лестница занимает половину высоты картинки
step_h = h/2/step_count # расчитаем высоту ступенек
# Далее введём начальные координаты x и y ступеньки
xbeg = 50
ybeg = h - step_h
# текущие координаты прорисовки
xtemp = xbeg
ytemp = ybeg
# Обозначим высоту перил
height_line = 150
for i in range(0, step_count):
с.create_rectangle(xtemp, h, xtemp + step_width, ytemp, fill= "lightblue")
с.create_line(xtemp, ytemp, xtemp, ytemp - height_line, width=6)
с.create_line(xtemp + step_width / 2, ytemp - step_height / 2, xtemp + step_width / 2, ytemp -
                step_height / 2 - height_line, width=6)
ytemp -= step_height
xtemp += step_width
с.create_line(xtemp, ytemp + step_height, xtemp, ytemp - height_line, width=6)
# две наклонные линии. соединяющие перилы.
с.create_line(xbeg, ybeg, xtemp, ytemp, width=6)
с.create_line(xbeg, ybeg - height_line, xtemp, ytemp - height_line, fill= 'brown')
с.pack()
root.mainloop()

Дом

from tkinter import *
root = Tk()
D = Canvas(height=700, bg= '#a8ffff')
D.focus_set()
D.pack()
D.create_rectangle(0, 500, 1000, 700, fill= 'green', outline= 'green')

def йорт(x,y):
# бина - здание
D.create_rectangle(x, y, x+600, y-300, fill= 'wheat1', outline= 'ivory')
# карниз
point_roof = [177, 185, 385, 100, 585, 100, 818, 185]
point1 = [200, 210, 175, 195, 820, 195, 800, 210, 800, 200, 200, 200]
D.create_polygon(point_roof, fill= 'red4', outline= 'black')
D.create_polygon(point1, fill= 'white', outline= 'black')
D.create_rectangle(175, 195, 820, 185, fill= 'white')
# урта _ карниз - средний карниз
point2 = [200, 342, 177, 337, 818, 337, 800, 342]
D.create_polygon(point2, fill= 'white', outline= 'black')
D.create_rectangle(177, 337, 818, 327, fill= 'white')

def юл(x,y):
D.create_rectangle(x + 220, y - 200, x + 317, y - 320, fill= 'sienna4', outline= 'sienna4')
D.create_rectangle(x + 220, y - 200, x + 222, y - 320, outline= 'lightsalmon4',width=4)
D.create_rectangle(x + 315, y - 200, x + 317, y - 320, outline= 'lightsalmon4',width=4)
D.create_arc(x + 222, y - 291, x + 315, y - 348, extent=180, fill= 'sienna4', outline= 'sienna4')
D.create_arc(x + 222, y - 291, x + 315, y - 348, extent=180, outline= 'lightsalmon4',width=6)
D.create_line(x + 224, y - 318, x + 314, y - 318, fill= 'sienna4', width=10)
points = [x, y, x+220, y-200, x+320, y-200, x + 350, y]
D.create_polygon(points, fill= "ivory4")
porog=[x+215, y-197, x+215, y-205, x+321, y-205, x+321, y-197]
D.create_polygon(porog,fill= 'gray26')
D.create_oval(x+230, y-260, x+235, y-266, outline= 'black', width=2,fill= 'black')
D.create_rectangle(x + 238, y - 270, x + 300, y - 320, fill= 'black', width=2)
D.create_rectangle(x + 240, y - 272, x + 298, y - 318, fill= 'khaki2', width=2)
D.create_line(x + 269, y - 272, x + 269, y - 318, fill= 'black', width=2)
D.create_line(x + 240, y - 295, x + 298, y - 295, fill= 'black', width=2)
D.create_arc(x+250,y-180,x+290,y-230,fill= 'dim gray',extent=180,width= '2')

def window(x,y):
D.create_rectangle(x, y, x+60, y+80, fill= 'black')
D.create_rectangle(x+5, y+5, x + 55, y + 75, fill= 'khaki2')
D.create_line(x+30, y, x+30, y+80)
D.create_line(x, y+40, x + 60, y + 40)

def куак(x,y):
D.create_oval(x + 10, y - 10, x + 30, y - 30, fill= 'dark green')
D.create_oval(x, y - 5, x + 20, y - 25)
D.create_oval(x, y, x + 20, y - 20)
D.create_oval(x + 20, y - 5, x + 40, y - 25)
D.create_oval(x + 15, y, x + 35, y - 20, fill= 'dark green')
D.create_oval(x, y, x + 20, y - 20, fill= 'dark green')
D.create_oval(x + 30, y - 13, x + 33, y - 10, fill= 'red')
D.create_oval(x + 10, y - 12, x + 15, y - 7, fill= 'yellow')
D.create_oval(x + 20, y - 24, x + 24, y - 27, fill= 'maroon1')
D.create_oval(x + 6, y - 18, x + 10, y - 21, fill= 'cyan')
D.create_oval(x + 32, y - 17, x + 35, y - 21, fill= 'purple4')

def куаклар():
for i in range(14):
   куак(465 + i * 38, 514)
for i in range(10):
   куак(330 - i * 38, 514)
for i in range(9):
   куак(470+i*4,530+23*i)
for i in range(10):
   куак(320 - i * 23, 530 + 20 * i)

def balkon(x, y):
D.create_line(x + 45, y - 40, x + 45, y - 85, fill= 'ivory',width=3)
D.create_line(x + 235, y - 40, x + 235, y - 85, fill= 'ivory',width=3)
D.create_rectangle(x + 110, y - 40, x + 170, y - 100, fill= 'sienna4',width=4)
D.create_rectangle(x + 60, y - 60, x + 90, y - 90, fill= 'khaki2', outline= 'black', width=4)
D.create_rectangle(x + 185, y - 60, x + 215, y - 90, fill= 'khaki2', outline= 'black', width=4)
D.create_arc(x+25, y+30, x + 255, y - 113,extent=180, outline= 'lightsalmon4')
D.create_line(x, y - 41, x + 280, y - 41, fill= 'lightsalmon4', width=13)

D.create_line(x + 60, y - 75, x + 90, y - 75)
D.create_line(x + 75, y - 60, x + 75, y - 90)
D.create_line(x + 185, y - 75, x + 215, y - 75)
D.create_line(x + 200, y - 60, x + 200, y - 90)

йорт(200, 500)
юл(150, 700)
D.create_line(200, 200, 800, 200, fill= 'black')
window(250, 215)
window(694, 215)
window(250, 365)
window(563, 365)
window(694, 365)
куаклар()
balkon(365, 327)

root.mainloop()

Рисунок с использованием библиотеки Pygame

# -*- coding: cp1251 -*-
import os, pygame, sys
from pygame.locals import * # подключение pygame
pygame.init()
# размер экрана
screen = pygame.display.set_mode((800, 640), 0, 32) # окно, в котором формируется кадр
# 640,360-размеры окна; 0-flags;32-цвет
pygame.display.set_caption("My First Form") # заголовок для окна
# фон
bgcolor = (255, 255, 255)
rect_6_color = (85, 107, 47) # зеленый
rect_7_color = (47, 79, 79) # темно-зеленый
circle_color = (255, 218, 185) # солнце
circle_pos = (400, 390)
circle_radius = 60
circle_width = 0
rect_6_rect = Rect((0, 400), (800, 150))
rect_7_rect = Rect((0, 550), (800, 80))
# ширина обводки
rect_1_width = rect_2_width = 0
# дерево1
circle_color_der = (0, 100, 0)
circle_radius_der = 70
circle_width_der = 0
circle_color_der2 = (0, 0, 0)
circle_width_der2 = 3
# ствол1
line_start_pos = (100, 300)
line_end_pos = (100, 460)
lines_color = (139, 69, 19)
poligon_color = (139, 69, 19)
poligon_width = 0
poligon_points1 = [(100, 300), (110, 285), (105, 305)]
poligon_points2 = [(100, 300), (90, 285), (95, 305)]
# тень
line_start_pos4 = (96, 305)
line_end_pos4 = (96, 460)
lines_color4 = (0, 0, 0)
poligon_color5 = (0, 0, 0)
poligon_width5 = 0
poligon_points5 = [(93, 460), (107, 460), (47, 480)]
# дерево2
circle_color_der3 = (107, 142, 35)
circle_radius_der3 = 60
circle_width_der3 = 0
circle_color_der2 = (0, 0, 0)
line_start_pos3 = (200, 340)
line_end_pos3 = (200, 470)
lines_color = (139, 69, 19)
poligon_color3 = (139, 69, 19)
poligon_width = 0
poligon_points3 = [(200, 340), (210, 335), (205, 345)]
poligon_points4 = [(200, 340), (190, 335), (195, 345)]
# тень
line_start_pos5 = (195, 345)
line_end_pos5 = (195, 470)
lines_color5 = (0, 0, 0)
poligon_color6 = (0, 0, 0)
poligon_width6 = 0
poligon_points6 = [(188, 470), (202, 470), (140, 490)]
# дерево3
circle_color_der4 = (85, 107, 47)
circle_radius_der4 = 140
circle_width_der4 = 0
circle_color_der5 = (0, 0, 0)
line_start_pos11 = (40, 200)
line_end_pos11 = (40, 450)
lines_color = (139, 69, 19)
poligon_color13 = (139, 69, 19)
poligon_width = 0
poligon_points13 = [(40, 200), (50, 195), (45, 215)]
poligon_points14 = [(40, 200), (30, 195), (35, 215)]
# тень
line_start_pos12 = (30, 207)
line_end_pos12 = (30, 450)
lines_color12 = (0, 0, 0)
poligon_color12 = (0, 0, 0)
poligon_width12 = 0
poligon_points12 = [(30, 450), (50, 450), (-10, 470)]
# птицы
# клюв
poligon_color_p1 = (255, 0, 0)
poligon_width_p1 = 0
circle_color_p1 = (0, 0, 0)
circle_radius_p1 = 30
circle_width_p1 = 0
circle_radius_p11 = 15
circle_color_p12 = (255, 255, 255)
circle_radius_p12 = 5
circle_radius_p13 = 2
# крыло
line_start_pos_p1 = (580, 146)
line_end_pos_p1 = (600, 159)
lines_color_p1 = (255, 255, 255)
line_start_pos_p11 = (602, 146)
line_end_pos_p11 = (600, 159)
# лапки
line_start_pos_p14 = (615, 165)
line_end_pos_p14 = (654, 177)
lines_color_p14 = (139, 69, 19)
line_start_pos_p15 = (602, 146)
line_end_pos_p15 = (655, 159)
# пальчики
line_start_pos_p141 = (645, 174)
line_end_pos_p141 = (655, 169)
line_start_pos_p142 = (645, 174)
line_end_pos_p142 = (650, 182)
line_start_pos_p151 = (645, 159)
line_end_pos_p151 = (655, 151)
line_start_pos_p152 = (645, 159)
line_end_pos_p152 = (655, 166)
# флаг цикла отображения
mainLoop = True
while mainLoop:
for event in pygame.event.get():
if event.type == QUIT: # QUIT-ЗАВЕРШЕНИЕ РАБОТЫ ПРОГРАММЫ
    mainLoop = False # меняем флаг
# формируем кадр
screen.fill(bgcolor) # фон
w = 5
x4 = 2
y4 = 18
z4 = 30
c4 = 4
for j in range(w):
    lines_color6 = (25 + z4, 25 + x4, 112 - y4) # бордовый
    line_start_pos6 = (0, 0 + c4)
    line_end_pos6 = (800, 0 + c4)
    x4 = x4 + 2
    y4 = y4 - 15
    z4 = z4 + 30
    c4 = c4 + 9
    pygame.draw.line(screen, lines_color6,line_start_pos6,line_end_pos6,9)
w = 7
x3 = y3 = z3 = c3 = 4
for j in range(w):
    lines_color7 = (178 + z3, 34 + x3, 34 - y3) # бордовый
    line_start_pos7 = (0, 42 + c3)
      line_end_pos7 = (800, 42 + c3)
    x3 += 6
    y3 -= 6
    z3 += 10
    c3 += 6
    pygame.draw.line(screen, lines_color7,line_start_pos7,line_end_pos7,6)
k = 9
x1 = y1 = c1 = 4
for j in range(k):
    lines_color9 = (255, 69 + x1, 0 + y1) # оранжевый
    line_start_pos9 = (0, 90 + c1)
    line_end_pos9 = (800, 90 + c1)
    x1 += 12
    y1 += 4
    c1 += 20
    pygame.draw.line(screen,lines_color9,line_start_pos9,line_end_pos9,20)
n = 10
x2 = y2 = c2 = 4
for i in range(n):
    lines_color8 = (255, 165 + x2, 0 + y2) # оранжевый(светллее)
    line_start_pos8 = (0, 255 + c2)
    line_end_pos8 = (800, 255 + c2)
    x2 += 4
    y2 += 10
    c2 += 20
    pygame.draw.line(screen,lines_color8,line_start_pos8,line_end_pos8,20)
pygame.draw.circle(screen, circle_color, circle_pos, circle_radius, circle_width)
pygame.draw.rect(screen, rect_6_color, rect_6_rect, rect_1_width)
pygame.draw.rect(screen, rect_7_color, rect_7_rect, rect_1_width)
# закончили с фоном
# дерево3
circle_pos_der4 = (40, 200)
circle_width_der4 = 0
pygame.draw.circle(screen, circle_color_der4, circle_pos_der4, circle_radius_der4, circle_width_der4)
pygame.draw.circle(screen, circle_color_der2, circle_pos_der4, circle_radius_der4, 2)
# ствол
pygame.draw.line(screen,lines_color,line_start_pos11,line_end_pos11,23)
pygame.draw.polygon(screen, poligon_color, poligon_points13, poligon_width)
pygame.draw.polygon(screen, poligon_color, poligon_points14, poligon_width)
# тень
pygame.draw.line(screen,lines_color12,line_start_pos12,line_end_pos12,5)
pygame.draw.polygon(screen, poligon_color12, poligon_points12, poligon_width12)
# дерево1
circle_pos_der1 = (100, 300)
circle_width_der = 0
pygame.draw.circle(screen, circle_color_der, circle_pos_der1, circle_radius_der, circle_width_der)
pygame.draw.circle(screen, circle_color_der2, circle_pos_der1, circle_radius_der, circle_width_der2)
# ствол
pygame.draw.line(screen,lines_color,line_start_pos,line_end_pos,14)
pygame.draw.polygon(screen, poligon_color, poligon_points1, poligon_width)
pygame.draw.polygon(screen, poligon_color, poligon_points2, poligon_width)
# тень
pygame.draw.line(screen,lines_color4,line_start_pos4,line_end_pos4, 6)
pygame.draw.polygon(screen, poligon_color5, poligon_points5, poligon_width5)
# дерево2
circle_pos_der3 = (200, 340)
circle_width_der = 0
pygame.draw.circle(screen, circle_color_der3, circle_pos_der3, circle_radius_der3, circle_width_der3)
pygame.draw.circle(screen, circle_color_der2, circle_pos_der3, circle_radius_der3, circle_width_der2)
# ствол
pygame.draw.line(screen,lines_color,line_start_pos3, line_end_pos3, 14)
pygame.draw.polygon(screen, poligon_color, poligon_points3, poligon_width)
pygame.draw.polygon(screen, poligon_color, poligon_points4, poligon_width)
# тень
pygame.draw.line(screen,lines_color5, line_start_pos5, line_end_pos5, 5)
pygame.draw.polygon(screen, poligon_color6, poligon_points6, poligon_width6)
# птицы
pygame.draw.line(screen, lines_color_p14, line_start_pos_p14, line_end_pos_p14, 3)
pygame.draw.line(screen, lines_color_p14, line_start_pos_p15, line_end_pos_p15, 3)
pygame.draw.line(screen, lines_color_p14, line_start_pos_p141, line_end_pos_p141, 3)
pygame.draw.line(screen, lines_color_p14, line_start_pos_p142, line_end_pos_p142, 3)
pygame.draw.line(screen, lines_color_p14, line_start_pos_p151, line_end_pos_p151, 3)
pygame.draw.line(screen, lines_color_p14, line_start_pos_p152, line_end_pos_p152, 3)
circle_pos_p1 = (600, 150)
circle_width_p1 = 0
pygame.draw.circle(screen, circle_color_p1, circle_pos_p1, circle_radius_p1, circle_width_p1)
circle_pos_p11 = (562, 145)
pygame.draw.circle(screen, circle_color_p1, circle_pos_p11, circle_radius_p11, circle_width_p1)
circle_pos_p12 = (555, 145)
pygame.draw.circle(screen, circle_color_p12, circle_pos_p12, circle_radius_p12, circle_width_p1)
circle_pos_p13 = (555, 145)
pygame.draw.circle(screen, circle_color_p1, circle_pos_p13, circle_radius_p13, circle_width_p1)
poligon_points_p1 = [(548, 143), (548, 153), (530, 149)]
pygame.draw.polygon(screen, poligon_color_p1, poligon_points_p1, poligon_width_p1)
pygame.draw.polygon(screen, circle_color_p1, poligon_points_p1, 2)
pygame.draw.line(screen, lines_color_p1, line_start_pos_p1, line_end_pos_p1, 3)
pygame.draw.line(screen,lines_color_p1,line_start_pos_p11,line_end_pos_p11,3)
pygame.time.wait(25)
pygame.display.update() # отображение кадра
pygame.quit()

Распределение температур на пластине

import tkinter as tk
T=0.01; # время
b=.01; # длина стержня
nx=20; # кол - во разбиений длины
nt=10; # кол - воразбиений времени
dt=T/nt;
dx=b/nx;
la = 0.000023 # коэф. lambda
print(" distance \n time")

def tpr(t, x): # температура в точке х в момент времени t
#(решение уравнения с использованием температур этой и двух соседних точек в предыдущий момент времени)
f = u[t-1][x]+la*dt/dx**2*(u[t-1][x+1]-2*u[t-1][x]+u[t-1][x-1])
return f

m=nx; n=nt;
u=[[0]*m for j in range (n)]
for j in range (m):
u[0][j]=273 # начальная температура
for i in range (n): # температура нагревателей
u[i][0]=373
u[i][m-1]=373
for i in range (1, n):
for j in range (1, m-1):
   u[i][j]=tpr(i, j)
tt=0
for i in range (0, n):
for j in range (0, m):
   print (" %.2f" % (u[i][j]), end= '')
print('!t=', tt*T/nt, 's'); tt=tt+1;
for j in range (0, m):
   print ("=========", end= '')
print()

print ("1>>", la*dt/dx**2) # устойчивость решения

def average(hex1, hex2, percent):
percent = 1 if percent > 1 else 0 if percent < 0 else percent
rgb1 = [int(hex1[i:i + 2], 16) for i in range(1, 7, 2)]
rgb2 = [int(hex2[i:i + 2], 16) for i in range(1, 7, 2)]
f = '#'
for
i in range(3):
   temp = hex(int(rgb1[i] + (rgb2[i] - rgb1[i]) * percent))[2:]
   f += '0' + temp if len(temp) == 1 else temp
return f
res = 500
x1, y1, color1 = u[0][0], u[0][19], '#FFFF00'
x2, y2, color2 = u[0][0], u[9][0], '#FF0000'

root = tk.Tk()
canv = tk.Canvas(height=res, bg= 'grey10')
for i in range(res + 2):
canv.create_line(i, 0, i, res + 2, fill=average(color1, color2, i / res))
canv.create_line(500+i, 0, 500+i, res*2 + 2, fill=average(color2, color1, i / res))
canv.pack()
root.mainloop()

 

 


Анимация и игры


Поделиться с друзьями:

Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...

Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...

Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначен­ные для поддерживания проводов на необходимой высоте над землей, водой...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.118 с.