|
| 1 | +######################################################################################################################## |
| 2 | +# |
| 3 | +# 30 - Функции и их вызов |
| 4 | +# |
| 5 | +# Задание: |
| 6 | +# В 7 королевствах жил один человек, который имел доступ к компьютерам и умел программировать — Сэм Тарли |
| 7 | +# Он занимался картографией, поэтому он написал для себя функцию calculate_distance, высчитывающую расстояние (в лигах) |
| 8 | +# между городами. Функция принимает два строковых параметра — два названия городов, и возвращает число — расстояние |
| 9 | +# между ними. |
| 10 | +# |
| 11 | +# Вот пример использования, где на экран выводится расстояние между Lannisport и Bayasabhad: |
| 12 | +# |
| 13 | +# from hexlet.code_basics import calculate_distance |
| 14 | +# |
| 15 | +# distance = calculate_distance('Lannisport', 'Bayasabhad') |
| 16 | +# print(distance) |
| 17 | +# |
| 18 | +# Воспользуйтесь функцией calculate_distance и выведите на экран расстояние между городами Qarth |
| 19 | +# и Vaes Dothrak. Не копируйте пример, а создайте переменную с другим именем и напишите код с нуля самостоятельно |
| 20 | +# |
| 21 | +# Solution: |
| 22 | +# |
| 23 | +from hexlet.code_basics import calculate_distance |
| 24 | + |
| 25 | +# BEGIN |
| 26 | +print(calculate_distance('Qarth', 'Vaes Dothrak')) |
| 27 | +# END |
| 28 | +# |
| 29 | +######################################################################################################################## |
| 30 | +# |
| 31 | +# 31 - Сигнатура фукнции |
| 32 | +# |
| 33 | +# Задание |
| 34 | +# В Python есть функция hex. Изучите её сигнатуру на странице документации. |
| 35 | +# Напишите программу, которая использует функцию hex с переменной number и выводит результат на экран |
| 36 | +# |
| 37 | +# Определения |
| 38 | +# |
| 39 | +# Сигнатура функции — формальное описание типов аргументов и типа возвращаемого значения функции |
| 40 | +# |
| 41 | +# Solution: |
| 42 | +# |
| 43 | +number = 255 |
| 44 | + |
| 45 | +# BEGIN |
| 46 | +print(hex(number)) |
| 47 | +# END |
| 48 | +# |
| 49 | +######################################################################################################################## |
| 50 | +# |
| 51 | +# 32 - Стандартная библиотека |
| 52 | +# |
| 53 | +# Задание |
| 54 | +# Функция type позволяет определить тип передаваемого аргумента. Название типа возвращается в виде строки. Например, |
| 55 | +# вызов type(10) вернет строку <class 'int'> (int, это сокращение от integer — целое число) |
| 56 | +# |
| 57 | +# Выведите на экран тип значения переменной motto |
| 58 | +# |
| 59 | +# Solution: |
| 60 | +# |
| 61 | +motto = 'Family, Duty, Honor'; |
| 62 | + |
| 63 | +# BEGIN |
| 64 | +print(type(motto)) |
| 65 | +# END |
| 66 | +# |
| 67 | +######################################################################################################################## |
| 68 | +# |
| 69 | +# 33 - Аргументы по умолчанию |
| 70 | +# |
| 71 | +# Задание |
| 72 | +# Округлите число, записанное в переменную number, до двух знаков после запятой и выведите результат на экран |
| 73 | +# |
| 74 | +# Soluton: |
| 75 | +# |
| 76 | +number = 10.1234 |
| 77 | + |
| 78 | +# BEGIN |
| 79 | +print(round(number, 2)) |
| 80 | +# END |
| 81 | +# |
| 82 | +######################################################################################################################## |
| 83 | +# |
| 84 | +# 34 - Вызов функции - выражение |
| 85 | +# |
| 86 | +# Задание |
| 87 | +# Арья собирается в путешествие из Винтерфела в Орлиное гнездо, чтобы навестить Лизу Аррен, но по пути ей нужно заехать |
| 88 | +# к Фреям для совершения акта возмездия. Ей нужно рассчитать общую длину маршрута |
| 89 | +# |
| 90 | +# К сожалению, функция calculate_distance может вычислять расстояние только между двумя точками. Поэтому придется |
| 91 | +# сначала узнать расстояние от Винтерфелла до замка Фреев, а потом расстояние до Орлиного гнезда |
| 92 | +# |
| 93 | +# Названия замков на английском языке: |
| 94 | +# |
| 95 | +# Винтерфелл — Winterfell |
| 96 | +# Близнецы (Замок Фреев) — The Twins |
| 97 | +# Орлиное гнездо — The Eyrie |
| 98 | +# |
| 99 | +# Выведите на экран полную длину маршрута Арьи. Напомним, что функция calculate_distance принимает два аргумента |
| 100 | +# и возвращает число |
| 101 | +# |
| 102 | +# Solution: |
| 103 | +# |
| 104 | +from hexlet.code_basics import calculate_distance |
| 105 | + |
| 106 | +# BEGIN |
| 107 | +print(calculate_distance('Winterfell', 'The Twins') + calculate_distance('The Twins', 'The Eyrie')) |
| 108 | +# END |
| 109 | +# |
| 110 | +######################################################################################################################## |
| 111 | +# |
| 112 | +# 35 - Аргументы как выражения |
| 113 | +# |
| 114 | +# Задание |
| 115 | +# Вам доступна функция calculate_distance_between_towns. Она принимает один аргумент, в котором должны содержаться |
| 116 | +# названия двух городов через дефис. В ответ она возвращает расстояние между этими городами. Вот пример использования: |
| 117 | +# distance = calculate_distance_between_towns('Lannisport-Bayasabhad') |
| 118 | +# |
| 119 | +# Напишите программу, которая использует функцию calculate_distance_between_towns и выводит на экран расстояние |
| 120 | +# между городами, записанными в переменные source и destination |
| 121 | +# |
| 122 | +# Solution: |
| 123 | +# |
| 124 | +from hexlet.code_basics import calculate_distance_between_towns |
| 125 | + |
| 126 | +source = 'The Twins' |
| 127 | +destination = 'The Eyrie' |
| 128 | + |
| 129 | +# BEGIN |
| 130 | +print(calculate_distance_between_towns(source + '-' + destination)) |
| 131 | +# END |
| 132 | +# |
| 133 | +######################################################################################################################## |
| 134 | +# |
| 135 | +# 36 - Вызов функций в аргументах функций |
| 136 | +# |
| 137 | +# Задание |
| 138 | +# Для построения генеалогического дерева семьи Старков Сэм написал функцию parent_for, которая возвращает имя родителя, |
| 139 | +# если передать ей первым параметром имя ребенка. Вторым параметром функция принимает строчку 'father' или 'mother' |
| 140 | +# Так функция понимает, кого из родителей возвращать. По умолчанию параметр равен 'mother'. То есть, если нужно узнать |
| 141 | +# имя матери, то можно не передавать специально 'mother', а передать лишь один параметр — имя ребенка |
| 142 | +# |
| 143 | +# Напишите программу, которая выводит на экран имя деда Джоффри по материнской линии. Полное имя Джоффри на |
| 144 | +# английском: 'Joffrey Baratheon' |
| 145 | +# |
| 146 | +# Solution: |
| 147 | +# |
| 148 | +from hexlet.code_basics import parent_for |
| 149 | + |
| 150 | +# BEGIN |
| 151 | +print(parent_for(parent_for('Joffrey Baratheon'), 'father')) |
| 152 | +# END |
| 153 | +# |
| 154 | +######################################################################################################################## |
| 155 | +# |
| 156 | +# 37 -Побочные эффекты |
| 157 | +# |
| 158 | +# Задание |
| 159 | +# Это задание не связано напрямую с уроком. Но выполнить его без создания переменных — важный шаг в вашем |
| 160 | +# профессиональном развитии |
| 161 | +# Выведите на экран имя матери Дайнерис Таргариен (Daenerys Targaryen), используя функцию parent_for без создания |
| 162 | +# переменных |
| 163 | +# Напомним, что parent_for принимает первым параметром имя ребенка и возвращает имя родителя. Вторым параметром функция |
| 164 | +# принимает строчку 'father' или 'mother'. Так функция понимает, кого из родителей возвращать. По умолчанию параметр |
| 165 | +# равен 'mother' |
| 166 | +# |
| 167 | +# Solution: |
| 168 | +# |
| 169 | +from hexlet.code_basics import parent_for |
| 170 | + |
| 171 | +# BEGIN |
| 172 | +print(parent_for('Daenerys Targaryen')) |
| 173 | +# END |
| 174 | +# |
| 175 | +######################################################################################################################## |
| 176 | +# |
| 177 | +# 38 - Неизменяемость и примитивные типы |
| 178 | +# |
| 179 | +# Задание |
| 180 | +# Переведите число, записанное в переменную value, в шестнадцатиричный вид, используя функцию hex. Новое значение (а |
| 181 | +# это уже будет строка!) запишите в ту же переменную value |
| 182 | +# |
| 183 | +# Возможно, вам покажется, что код получился странным. Это типичный пример: переписывание переменных делает код |
| 184 | +# менее понятным и более запутанным, особенно в таких случаях, как этот - когда новое значение имеет тип, отличающийся |
| 185 | +# от типа старого значения |
| 186 | +# |
| 187 | +# Solution: |
| 188 | +# |
| 189 | +value = 42 |
| 190 | + |
| 191 | +# BEGIN |
| 192 | +value = hex(value) |
| 193 | +# END |
| 194 | + |
| 195 | +print(value) |
| 196 | +# |
| 197 | +######################################################################################################################## |
0 commit comments