Площ и код. Типове данни. Упражнение
Описание на задачата
Подготвени са изображения на две животни – апликации на кучето Доги и мечето Бери, които са направени само от кръгове, полукръгове и четвърт кръгове. Използвани са кръгове с 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 |
Променливи и типове данни
Алгоритъм
- Въведи името на героя.
- Въведи R1.
- Изчисли R2, R3.
- Изчисли S1, S2, S3.
(S1 = π*R1*R1).
( π= 3.14). - Въведи коефициентите ci, wi.
- Изчисли Sc, Sw, S.
- Изчисли C и W.
- Изведи резултат.
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(), за да изведем резултат до желан знак след десетичната запетая.
Ако искаме да изведем стойностите до знака на стотните, използваме следния алгоритъм:
- Числото се умножава по 100.
- Взима се цялата му част.
- Дели се на 100.
Пример: Да изведем числото 3.456732 с два знака след запетаята, т.е. 3.45:
- Умножаваме числото по 100
3.456732 * 100 = 345.6732 - Взимаме цялата част
int(345.6732) = 345 - Делим полученото на 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.