Площ и код. Типове данни. Упражнение

Описание на задачата

Подготвени са изображения на две животни – апликации на кучето Доги и мечето Бери, които са направени само от кръгове, полукръгове и четвърт кръгове. Използвани са кръгове с 3 размера и в два цвята. Изберете едно от двете изображения и изчислете каква площ има апликацията на избраното животно, с каква площ са използваните два цвята и какво е процентното им съотношение.

Припомнете си формулите за лица на кръг, работата с дроби, коефиценти и проценти. В задачата също ще използваме работа с различни цветове. В случая героите са оцветени в два цвята с наименования, съответно: „chocolate“ (шоколад) и “wheat” (пшеница). Можете да ползвате работния файл, в който са качени двете изображения - https://trinket.io/python/eebd882799.

За самостоятелна работа: Създайте свои подобни изображения с изучен графичен редактор.

Задача 1

Отворете работния файл към урока. Изберете герой и допишете кода.

Задание към програмата:

  • Въведете името на героя.
  • Въведете радиуса на най-малкия кръг.
  • Изчислете и изведете площта на елементите от всеки цвят.
  • Изчислете и изведете общата площ на апликацията.
  • Изчислете и изведете  процентното отношение на двата цвята, използвани в апликацията.

Анализ на задачата

Нека с k(R) означим кръг k с радиус R. Използваните кръгове за апликациите са: k1(R1), k2(R2), k3(R3), R2 = 2R1, R3 = 4R1 (радиусът на всеки следващ кръг е два пъти по-голям от радиуса на предишния). Радиусите са цели числа.

Фигурата на Доги е апликирана в два цвята. За тъмния цвят: от най-малкия кръг е използван половин кръг; от средния по размер кръг са използвани 3/4 части от кръга; от най-големия размер е използван един полукръг. Тази информация може да се зададе с коефициенти.

Коефициентите са множители, с които умножаваме някаква величина, за да получим търсена стойност. Ако с S означим лицето на кръг, то 0.5 * S означава половината от лицето на кръга; 0.25 * S означава четвъртината от лицето на кръга. Коефициентът задава колко части от лицето на кръга са използвани в апликацията.

Нека с c1, c2 и c3 означим коефициентите на площта в цвят шоколад (chocolate) за окръжностите k1, k2 и k3.

Нека с w1, w2 и w3 означим коефициентите на площта в цвят пшеница (wheat) за окръжностите k1, k2 и k3.

Нека Sc и Sw са площите от апликацията, съответно в цвят шоколад и в цвят пшеница. Нека S е общата площ на апликацията в кв. см.

Нека C и W са процентните отношения на двата цвята в апликацията.

C = Sc / S * 100
W = Sw / S * 100

променлива

тип

name

str

R1, R2, R3

int

c1, c2, c3

float

w1, w2, w3

float

Sc, Sw, S

float

C, W

float

Да разгледаме таблицата.
За Доги са попълнени коефициентите, показващи частите от използваните кръгове в двата цвята. Например, w3=1 – показва, че от най-големия светъл кръг е използван един цял кръг (главата на Доги), а c3=0,5 означава, че от най-големия тъмен кръг е използван половин кръг – това е тялото на Доги.

 

 

c1

c2

c3

c1

c2

c3

0.5

0.75

0.5

 

 

 

w1

w2

w3

w1

w2

w3

0.5

0.25

1.0

 

 

 

Забележка. При оцветяването на Доги и Бери използваме популярното представяне на в сайтовете. В системата RGB (red _ green _ blue) всеки цвят се представя чрез 3 числа от 0 до 255, които определят степента на участие на съответния цвят – червен, зелен или син. Използваните цветове в изображенията на кучето са кафяво и бежово. Тези цветове, според приетите стандарти за уеб-цветове, носят имената „шоколад – chocolate“ и „пшеница – wheat“. Повече информация за уеб-цветовете можете да намерите тук: https://en.wikipedia.org/wiki/Web_colors

цвят

RGB

chocolate

210, 105, 30

wheat

245, 222, 179

red

255, 0, 0

green

0, 255, 0

blue

0, 0, 255

Променливи и типове данни

Алгоритъм

  1. Въведи името на героя.
  2. Въведи R1.
  3. Изчисли R2, R3.
  4. Изчисли S1, S2, S3.
    (S1 = π*R1*R1).
    ( π= 3.14).
  5. Въведи коефициентите ci, wi.
  6. Изчисли Sc, Sw, S.
  7. Изчисли C и W.
  8. Изведи резултат.

c1 = float(input("Въведи c1"))
c2 = float(input("Въведи c2"))
c3 = float(input("Въведи c3"))
w1 = float(input("Въведи w1"))
w2 = float(input("Въведи w2"))
w3 = float(input("Въведи w3"))

С функцията float() автоматично преобразуваме въведените коефициенти от символен тип (str) в десетични дроби (рационални числа – тип float).

Извеждане на резултата

Когато извеждате резултата, обърнете внимание на начина, по който „отрязваме“ дробната част до определен знак. Закръглянето на числата с точност до десети или стотни е по-трудна задача. За целите на обучението в 7. клас ще се ограничим до отрязване на дробната част до определен знак.

С функцията int() взимаме цялата част на дробно число. Например int(5.15) = 5. Можем да използваме функцията int(), за да изведем резултат до желан знак след десетичната запетая.

Ако искаме да изведем стойностите до знака на стотните, използваме следния алгоритъм:

  1. Числото се умножава по 100.
  2. Взима се цялата му част.
  3. Дели се на 100.

Пример: Да изведем числото 3.456732 с два знака след запетаята, т.е. 3.45:

  1. Умножаваме числото по 100
    3.456732 * 100 = 345.6732
  2. Взимаме цялата част
    int(345.6732) = 345
  3. Делим полученото на 100
    345 / 100 = 3.45

Ако целта е да изведем числото до цифрата на хилядните, трябва да приложим горния алгоритъм като умножаваме (и делим) с 1000. Ако трябва да изведем до десетите – умножаваме (и делим) на 10 и т.н.


Използваната функция int(A*100)/100 закръгля ли стойността на А с точност до стотните?

Някои бележки при работа с редактора офлайн

Докато в Trinket можем да използваме и png изображения при работа с IDLE офлайн може да използваме само gif изображения. Нека сме направили папка Dogi, в която да поставим файлът main.py с кода в Python и изображенията dogi_s.gif и bery_s.gif.